如何用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循环。 展开
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循环。 展开
3个回答
展开全部
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
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
不好意思,刚才自习去了,没看到。这样就好了,其实不用改也是可以的。
展开全部
%你的错误原因,只定义了符号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,查看用法
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,查看用法
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你非要用这么不靠谱的程序那只能这么改了
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
完全可以有更好的做法,需要的话追问
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
完全可以有更好的做法,需要的话追问
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |