问题描述:
非线性方程组求解 matlab
这样一个方程我用下面的matlab怎么解不出来呢?请高手赐教,我将不甚感激!
clc
clear
%调整 常量,预估值,收敛残差,最大迭代步 即可计算
%常量%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
q=1;V=5;d=4;w=5;mu=0.5;m=2;
%预估值%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Anp=1;Bnp=1;Xnp=1;Ynp=1;Tnp=1;Cnp=1;
%收敛性控制%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
con_res=0.005;%设定收敛残差
c_res=1;%计算残差
res=zeros(6,1);%残差矩阵
%迭代%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
it_num=0;%迭代步数
max_it=100;%最大允许迭代步
while(c_res>con_res)
%赋上步计算值
An=Anp;Bn=Bnp;Xn=Xnp;Yn=Ynp;Tn=Tnp;Cn=Cnp;
%计算
Anp=q*V/(d*m)-(q/mu)*Xn/m-2*(Xn^2+Yn^2)^(1/2)*w*sin(Cn);
Bnp=2*(Xn^2+Yn^2)^(1/2)*w*cos(Cn)-(q/mu)*Yn/m;
Xnp=mu*V/d-An*Tn;
Ynp=2*(Xn^2+Yn^2)^(1/2)*w*cos(Cn)*m*Tn*mu/(q*Tn+m*mu);
Tnp=((mu*V/d)-((mu*V/d)^2-2*An*d)^(1/2))/An;
Cnp=atan(Yn/Xn);
%计算残差
res(1,1)=abs((Anp-An)/An);
res(2,1)=abs((Bnp-Bn)/Bn);
res(3,1)=abs((Xnp-Xn)/Xn);
res(4,1)=abs((Ynp-Yn)/Yn);
res(5,1)=abs((Tnp-Tn)/Tn);
res(6,1)=abs((Cnp-Cn)/Cn);
c_res=max(res);%最大残差
it_num=it_num+1;%
if(it_num>=max_it)
break;
end
end
这样一个方程我用下面的matlab怎么解不出来呢?请高手赐教,我将不甚感激!
clc
clear
%调整 常量,预估值,收敛残差,最大迭代步 即可计算
%常量%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
q=1;V=5;d=4;w=5;mu=0.5;m=2;
%预估值%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Anp=1;Bnp=1;Xnp=1;Ynp=1;Tnp=1;Cnp=1;
%收敛性控制%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
con_res=0.005;%设定收敛残差
c_res=1;%计算残差
res=zeros(6,1);%残差矩阵
%迭代%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
it_num=0;%迭代步数
max_it=100;%最大允许迭代步
while(c_res>con_res)
%赋上步计算值
An=Anp;Bn=Bnp;Xn=Xnp;Yn=Ynp;Tn=Tnp;Cn=Cnp;
%计算
Anp=q*V/(d*m)-(q/mu)*Xn/m-2*(Xn^2+Yn^2)^(1/2)*w*sin(Cn);
Bnp=2*(Xn^2+Yn^2)^(1/2)*w*cos(Cn)-(q/mu)*Yn/m;
Xnp=mu*V/d-An*Tn;
Ynp=2*(Xn^2+Yn^2)^(1/2)*w*cos(Cn)*m*Tn*mu/(q*Tn+m*mu);
Tnp=((mu*V/d)-((mu*V/d)^2-2*An*d)^(1/2))/An;
Cnp=atan(Yn/Xn);
%计算残差
res(1,1)=abs((Anp-An)/An);
res(2,1)=abs((Bnp-Bn)/Bn);
res(3,1)=abs((Xnp-Xn)/Xn);
res(4,1)=abs((Ynp-Yn)/Yn);
res(5,1)=abs((Tnp-Tn)/Tn);
res(6,1)=abs((Cnp-Cn)/Cn);
c_res=max(res);%最大残差
it_num=it_num+1;%
if(it_num>=max_it)
break;
end
end
问题解答:
我来补答展开全文阅读