在MATLAB中求符号求和
下面的代码抛出一个错误在MATLAB中求符号求和,matlab,eval,Matlab,Eval,下面的代码抛出一个错误 syms z positive; syms n; syms m; N = 10; Ms = 10; Es = 1; pd = 0.9; pd_dash = 1-pd; pf = 0.1; pf_dash = 1-pf; pr = 0.1; qr = 1-pr; p = 0.005 pi = pf_dash*p; pb = pd_dash*p; qi = 1-pi; qb = 1-pb; sm = symsum( z^((n+1)*Es), n, 0, N-1 ); te
syms z positive;
syms n;
syms m;
N = 10;
Ms = 10;
Es = 1;
pd = 0.9;
pd_dash = 1-pd;
pf = 0.1;
pf_dash = 1-pf;
pr = 0.1;
qr = 1-pr;
p = 0.005
pi = pf_dash*p;
pb = pd_dash*p;
qi = 1-pi;
qb = 1-pb;
sm = symsum( z^((n+1)*Es), n, 0, N-1 );
temp_sum = symsum(z^((n+m+1)*Es)*qr^(n+m)*pr, m, 0, N-1);
z=1; %assume a value of z
x = eval(sm); %works fine
y = eval(temp_sum);
% Error:The expression to the left of the equals sign is not a valid target for an assignment.
请提出解决此问题的方法
我怀疑的问题是:临时总和是分段的(…),而eval无法对其进行评估。您实际做了什么:
z
sym/eval
temp\u sum=subs(temp\u sum,z,1)
未记录的
sym/eval
是什么意思:帮助sym/eval
?我承认,这不是很多文档。它基本上只是一个前端。您是否忘记了类名是sym
,而不是syms
。syms sym是一个打字错误,已修复。@Daniel感谢您的回复,但问题是简化并没有返回数字。它返回另一个只有数字的符号。例如,simplify(temp_sum)返回一个值为number1/number2的符号。它不执行最后的除法。计算完成后,分数是使用符号数学时的基类之一,因为在不损失精度的情况下存储1/3这样的数字很重要。使用double(temp\u sum)
转换。请编辑您的问题以显示所有代码,包括如何定义/分配所有变量。您的示例无法运行,因此无法演示该问题。嗨,霍奇勒,我已经进行了必要的编辑。该示例现在可以运行了。