如何用matlab循环解方程,比如解方程3b-c=0,b是变量,取值从0到10,变化量为0.5,求方程的解c的每个值。

程序为:symsbcfori=1:21b(i)=(i-1)*0.5;eq1=3*b(i)-c(i);[c(i)]=solve(eq1);end显示结果为Errorin==... 程序为:
syms b c
for i=1:21
b(i)=(i-1)*0.5;
eq1=3*b(i)-c(i);
[c(i)]=solve(eq1);
end
显示结果为
Error in ==> Untitled at 5
[b(i)]=solve(eq2);
为什么不对呢?该怎么修改呢,还是用上面的格式,还是想用solve命令及for循环。
展开
二中混过
推荐于2016-12-01 · TA获得超过1326个赞
知道小有建树答主
回答量:473
采纳率:50%
帮助的人:579万
展开全部
sol=[];
syms c
for i=1:21
b=(i-1)*0.5;
eq1=3*b-c;
sol(i)=solve(eq1,'c');
end
sol

sol =
Columns 1 through 3
0 1.5000 3.0000
Columns 4 through 6
4.5000 6.0000 7.5000
Columns 7 through 9
9.0000 10.5000 12.0000
Columns 10 through 12
13.5000 15.0000 16.5000
Columns 13 through 15
18.0000 19.5000 21.0000
Columns 16 through 18
22.5000 24.0000 25.5000
Columns 19 through 21
27.0000 28.5000 30.0000
追问
如果是方程组的话怎么解呢?怎么将得到的结果附到数组呢?比如说i=0:10,b=i+1;解方程组c+a+b-1=0;a-3b-2c-3+0,还是用这种方法(用solve和for循环),
b=[];A=[];C=[];
syms a b c
for i=1:10
b(i)=i+1;
eq1=b(i)+c+a-1;
eq2=a-3*b(i)-2*c-3;
[A(i),C(i)]=solve(eq1,eq2);
end
得到的在结果中结果怎么确定哪个是a,哪个是c?怎么将a的值放在A(i)中,将c的值放在C(i)中呢?
追答
syms a  c 
for i=1:10
b(i)=i+1;
eq1=b(i)+c+a-1;
eq2=a-3*b(i)-2*c-3;
[A(i),C(i)]=solve(eq1,eq2,a,c);
end
A
C
不好意思,刚才自习去了,没看到。这样就好了,其实不用改也是可以的。
3712993
2013-03-22
知道答主
回答量:20
采纳率:0%
帮助的人:15万
展开全部
%你的错误原因,只定义了符号c,而不是符号数组c(i)
syms b c
for i=1:21
b(i)=(i-1)*0.5;
eq1=3*b(i)-c;
c1=solve(eq1==0);%我的版本是2012,solve函数的格式==
cnum(i)=eval(c1);%c1是求解出来的符号c,采用eval函数把符号常数变为数值常数
end
如果按照下面编程,非常简单
clear all
syms b c
csolve=solve(3*b-c==0,c);
bvalue=0:0.5:10;
cvalue=subs(csolve,b,bvalue)%help subs,查看用法
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cxd1301
2013-03-22 · TA获得超过3021个赞
知道小有建树答主
回答量:593
采纳率:50%
帮助的人:318万
展开全部
你非要用这么不靠谱的程序那只能这么改了
clear;clc;
syms b c
for i=1:21
b(i)=(i-1)*0.5;
eq1=3*b(i)-c;
[d(i)]=solve(eq1);
end

完全可以有更好的做法,需要的话追问
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式