matlab怎么求解非线性方程组,请教,如何利用Matlab求解复杂的非线性方程组

题主,能帮忙看一下我的这个程序吗,也是相当于非线性方程组求解的

syms arf theta gama

l1=7.0;

l2=l1;

l3=l2;

para;

L=2.66;

T(1,1)=cos(theta)*cos(gama);

T(1,2)=-cos(arf)*sin(gama)+sin(arf)*sin(theta)*cos(gama);

T(1,3)=sin(arf)*sin(gama)+cos(arf)*sin(theta)*cos(gama);

T(2,1)=cos(theta)*sin(gama);

T(2,2)=cos(arf)*cos(gama)+sin(arf)*sin(theta)*sin(gama);

T(2,3)=-sin(arf)*cos(gama)+cos(arf)*sin(theta)*sin(gama);

T(3,1)=-sin(theta);

T(3,2)=sin(arf)*cos(theta);

T(3,3)=cos(arf)*cos(theta);

S=T*A-B;

M=(l1^2-l2^2-S(1,1)^2-S(2,1)^2-S(3,1)^2+S(1,2)^2+S(2,2)^2+S(3,2)^2)/2;

N=(l2^2-l3^2-S(1,2)^2-S(2,2)^2-S(3,2)^2+S(1,3)^2+S(2,3)^2+S(3,3)^2)/2;

S1(1,1)=S(1,1)-S(1,2);

S1(1,2)=S(2,1)-S(2,2);

S1(2,1)=S(1,2)-S(1,3);

S1(2,2)=S(2,2)-S(2,3);

S2=inv(S1);

%%求q4,q5用q6表达式的系数

a=-((S(3,1)-S(3,2))*S2(1,1)+(S(3,2)-S(3,3))*S2(1,2));

b=M*S2(1,1)+N*S2(1,2);

c=-((S(3,1)-S(3,2))*S2(2,1)+(S(3,2)-S(3,3))*S2(2,2));

d=M*S2(2,1)+N*S2(2,2);

%%求q6的一元二次方程系数

c1=a^2+c^2+1;

c2=2*(a*(S(1,3)+b)+c*(S(2,3)+d)+S(3,3));

c3=(S(1,3)+b)^2+(S(2,3)+d)^2+(S(3,3))^2-49;

%%求解牵连平动的值即用arf theta gama表示出q4 q5 q6

q6=(-c2+(c2^2-4*c1*c3)^0.5)/2/c1;

q5=c*q6+d;

q4=a*q6+b;

Jv(1,1)=diff(q4,arf);Jv(1,2)=diff(q4,theta);Jv(1,3)=diff(q4,gama);%%%%雅可比矩阵

Jv(2,1)=diff(q5,arf);Jv(2,2)=diff(q5,theta);Jv(2,3)=diff(q5,gama);

Jv(3,1)=diff(q6,arf);Jv(3,2)=diff(q6,theta);Jv(3,3)=diff(q6,gama);

在最后我想给arf theta gama赋值用的 Jv=double(subs(Jv,{arf,theta,gama},{2,1,1}))不知为什么计算这么慢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值