matlab中的solve函数可以和for函数一起用吗?因为有五个式子

matlab中的solve函数可以和for函数一起用吗?因为有五个式子,第1张

matlab用solve解方程时,是可以与for循环套用的,每循环一次,解一个或一组方程。如:

x=-3:2:5;

m=length(x);

for k=1:m

syms b K

a=x(k);

s=a+b1i;

G=((2s^2+s+1)exp(-s))/(s^3+s^2+5s);

G1=imag(G);

G2=real(G);

s=sprintf('第%d次计算',k);

disp(s)

[K,b]=solve(1+KG2==0,G1==0,'K','b')

end

运行结果:

第1次计算

K =

010268582850871938239489373227825

b =

0

第2次计算

K =

091969860292860580398880942540365

b =

0

第3次计算

K =

-47569931998033291618805030748672

b =

0

第4次计算

K =

-46561926503753229763061591471985

b =

0

第5次计算

K =

-46379112219555188569098618762673

b =

0

错在这句,[c1,c2,c3]=solve('diff(N,c1)','diff(N,c2)','diff(N,c3)'),因为软件认为diff(N,c1)只是一个变量符号,所以造成程序出错。正确用法应该这样来处理,

eq1=diff(N,c1);eq2=diff(N,c2);eq3=diff(N,c3);

[c1,c2,c3]=solve(eq1,eq2,eq3)

经运行,得到结果是无解,即无解析解。

所以在这里用solve是不合适的,但可以用数值方法来求解。如拟牛顿法求解非线性方程

c1 = -1049030130

c2 =1057363644

c3 =5541813541

N=4865147

函数solve求解函数返回值的类型是Maybe Grid,具体包括两种情况,无解用Nothing表示,有解则是Just g,这里g的类型是Grid。出于本例的目的,这里只对是否有解感兴趣,而对解本身(Grid)不感兴趣。

anyhow, I got an anwser, as below

x =

(27313763081764851197485172598348e-22-30348625646405390219095387315146e-23i)((-46505726310086708110861031443676-51673029233429675678168208871408i)conj(-23479391587158800462451624083883e-5-26088212874620889402438133212685e-6i)+19068205386677863)

y =

-23479391587158800462451624083883e-5-26088212874620889402438133212685e-6i

可以用solve()函数来解决这个问题。执行步骤如下:

A=load('MC12-92txt');

x1=A(:,1),x2=A(:,2)

y1=A(:,3),y2=A(:,4)

z1=A(:,5),z2=A(:,6)

x3=A(:,7),z3=A(:,8)

syms a1 b1 c1 d1

eq1=x1+x2-(a1+b1)

eq2=y1+y2-c1

eq3=z1+z2-(d1+a1)

eq4=x3+z3-(a1+c1)

s=solve(eq1,eq2,eq3,eq4,'a1','b1','c1','d1')

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/12163398.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存