matlab如何求解多组循环迭代的非线性方程组 15

a(1)=0;b(1)=0;fori=1:10e1='a(i+1)+b(i+1)=2*a(i)+b(i)';e2='a(i+1)-b(i+1)=a(i)+2*b(i)';... a(1)=0;
b(1)=0;
for i=1:10
e1='a(i+1)+b(i+1)=2*a(i)+b(i)';
e2='a(i+1)-b(i+1)=a(i)+2*b(i)';
[c,d]=solve(e1,e2,'a(i+1)','b(i+1)');
a(i+1)=vpa(c,4);
b(i+1)=vpa(d,4);
end

结果是这样的
Warning: 4 equations in 1 variables.
> In solve at 113
Warning: Explicit solution could not be found.
> In solve at 140

然后变量
a是<1×1>sym,b是0 double

这样的方程怎么求解啊。。。。
展开
 我来答
tianxiawulang
2013-12-30 · TA获得超过2.7万个赞
知道大有可为答主
回答量:4732
采纳率:89%
帮助的人:2630万
展开全部

问题分析

用solve解方程时,并不会把a(i+1)、b(i+1)当成变量看。

可以考虑分别用a1、b1、a2、b2来表示a(i)、b(i)、a(i+1)、b(i+1),得到方程的解,然后在循环过程中依次把数据代入即可。

 

参考代码

e1='a2+b2=2*a1+b1';
e2='a2-b2=a1+2*b1';
[a2,b2]=solve(e1,e2,'a2','b2');
a(1)=1;
b(1)=0.5;
for i=1:10
    a1=a(i);
    b1=b(i);
    a(i+1)=vpa(subs(a2),4);
    b(i+1)=vpa(subs(b2),4);
end

结果

如果按照现在的a(1)、b(1),得到的结果全是0。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式