Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MATLAB中求符号求和_Matlab_Eval - Fatal编程技术网

在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
  • 我想你想:

  • 创建一个符号表达式
  • 将z替换为1:
    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)
    转换。请编辑您的问题以显示所有代码,包括如何定义/分配所有变量。您的示例无法运行,因此无法演示该问题。嗨,霍奇勒,我已经进行了必要的编辑。该示例现在可以运行了。