如何在matlab中评估递归解?

时间:2015-09-18 14:09:23

标签: matlab recursion symbolic-math

假设我有解决方案向量

conv=(y0,y1,y0+y1,y0+y1+y2,y0+y1+y2+y3);

其中y0,y1,y2,y3,y4是符号变量,y2=y0+y1, y3=y0+y1+y2, y4=y0+y1+y2+y3。现在,我分配值y0=1,y1=1,,然后我想以递归方式(使用for)评估解决方案。有可能吗?

我可以解决问题

y0=1;
y1=1;
y2=eval(conv(3));
conv(3)=y2;
y3=eval(conv(4));
conv(4)=y3;
y4=eval(conv(5));
conv(5)=y4;

但这不适合。这不是最好的解决方案(我知道)

我希望任何人都可以帮助我,因为真正的问题在于130个变量。

此致

1 个答案:

答案 0 :(得分:0)

您需要将变量定义为符号。然后,您只需使用solve

syms y0 y1 y2 y3 y4
eq = [y0==sym(0),
      y1==sym(1),
      y2==y0+y1,
      y3==y0+y1+y2,
      y4==y0+y1+y2+y3]
s = solve(eq)
s.y2
s.y3
s.y4

分别返回124

该系统也可以使用mldivide的线性代数以数字方式求解:

A = [1 0 0 0 0;
     0 1 0 0 0;
     1 1 -1 0 0;
     1 1 1 -1 0;
     1 1 1 1 -1];
b = [0;1;0;0;0];
y = A\b

如果A和/或b是符号,则将使用符号线性系统求解器。