【问题标题】:symsum function error - invalid indexing or function definition?symsum 函数错误 - 无效的索引或函数定义?
【发布时间】:2017-12-13 06:54:46
【问题描述】:

我正在尝试使用 MATLAB 中的 symsum 函数对以下内容求和:

总和(从 q=0 到 5)[a(q+1)*x(2)^q]

其中 a=[a0, a1, ..., a5], x=[x(1), x(2), ...] 其中 x(1), x(2), ... 是标量。

总和是 a0 + a1x(2)+a2x(2)^2 +...+a5x(2)^5。

我使用了以下代码:

syms q a x  
f=a(q+1)*x(2)^q
symsum(f, q, 0, 5)  

其中 x(2)= -4.9。

但是,上面的代码返回“无效的索引或函数定义”。

使用 f=x(2)^q 不会导致错误,但是使用 f=a(q+1) 会返回错误。因此,问题在于 a(q+1) 项。

非常感谢任何帮助!

【问题讨论】:

  • x(2) 存在吗?
  • 是的,x=[-5:0.1:5],所以 x(2)= -4.9。
  • 你试过这个吗:syms q a f=a(q+1)*(-4.9)^q symsum(f, q, 0, 5)
  • 不幸的是,这仍然返回相同的错误。我自己尝试过 f=a(q+1) ,这会返回相同的错误。但是 f=(-4.9)^q 不会返回错误 - 因此问题在于 a(q+1) 项,如果这有帮助的话
  • 啊,我明白了,当 q = 5 时没有a(6)...

标签: matlab sum series


【解决方案1】:

a 是符号矩阵还是非符号矩阵都没有关系。

对矩阵的每次调用都需要一个索引(一个数字,实数,如 1,2,3,4,...) 当q 是一个符号时,这意味着q 真的不等于任何数字,所以a(q) 没有意义,因为q 不等于任何数字。所以程序在继续之前会出错并停止。

>>a=0:5;
>> a(1)

ans =

     0
>>a(q) % ?-->do you know the real value of `q` right now? NO,nobody knows!
    MAKES ERROR

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-26
    • 1970-01-01
    • 1970-01-01
    • 2018-04-28
    相关资源
    最近更新 更多