假设我有解决方案向量
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个变量。
此致
答案 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
分别返回1
,2
和4
。
该系统也可以使用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
是符号,则将使用符号线性系统求解器。