24小时热门版块排行榜    

查看: 805  |  回复: 1

will_zhan

新虫 (初入文坛)

[交流] 用MATLAB解非线性方程组,fsolve,各种问题

主函数
global G ;                  %全局变量定义
clear all;
global G ;                  %全局变量定义
global L ;                  
global B ;                  
global rz ;                  
global l ;                  
global f ;
global u;
global K;
global g;
global b;
global cy;
global cx;
global h;
global p;


G=213800;%N
L=4.51;% m
B=2.84;% m
rz=0.2626;%m
l=0.148;%m
h=1.123;%m
f=0.05;
u=0.9;
K=0.015;
g=10;
b=0.29;                    
cx=0;                     
cy=0.31;                     
rou=1:100;
[a,c]=size(rou);
for n=a:1:c;
  p=rou(1,n);
   x0=[0.2 0.4 0.2];  % Make a starting guess at the solution
   options=optimset('Display','final','TolFun',1e-2,'MaxFunEvals',1000);  % Turn off Displayclc
[x,Fval]=fsolve(@myfunn1,x0,options) ;
z(1,n)=x(1);
z(2,n)=x(2);
z(3,n)=x(3);
n=n+1;
end
plot(rou,z(1,);

% F=myfun(x0);
%              fun(1)=x(1);
%              fun(2)=x(2);
%              fun(3)=x(3);
            
子函数
%子函数
function F=myfunn1(x)
global G ;                 
global L ;                  
global B ;                                    
global l ;                  
global f ;
global u;
global K;
global g;
global b;
global cy;
global cx;
global h;
global p;
v=0.1;
N1=0.5*G-(h*G*v^2*sqrtm((p*B)^2-x(1).^2)/(B*g*(p*B)*(p*B))-cx*G/B); %R=(p*B)
N2=0.5*G+(h*G*v^2*sqrtm((p*B)^2-x(1).^2)/(B*g*(p*B)*(p*B))-cx*G/B);
  Rf1=N1*f;   
  Rf2=N2*f;
   a=6*G/(g*b*l^3)*(cy+h*v^2.*x(1)/(g*(p*B)*(p*B)));
Sszn1=-b.*quad(@myfun1,-L/2,L/2);
function z1 = myfun1(y1)
           fai1=(L/2+cy-x(1)-y1)./(sqrt((p.*B)^2-x(1).^2)-B/2+cx-x(2));
    jX1=(sqrt((p.*B)^2-x(1).^2)-B/2+cx).*(cos(fai1)-1)-y1.*sin(fai1);  
    jY1=(sqrt((p.*B)^2-x(1).^2)-B/2+cx).*sin(fai1)-L/2+y1.*cos(fai1);   
    j1=sqrt(jX1.^2+jY1.^2);
       yx1=-y1./(sqrt(x(2).^2+y1.^2));
z1 = u.*(N1./(l*b)-y1.*a).*(1-exp(-j1/K)).*yx1;
end
%  plot(rou,Sszn1);
%  hold on

Sszw1=quad(@myfu1,-L/2,L/2);  %+quad(@myfun2,1.205,1.501)+quad(@myfun2,0.303,0.599)+quad(@myfun2,-0.599,0.303)+quad(@myfun2,-1.501,-1.205)+quad(@myfun2,-2.255,-1.255));
function z2=myfu1(y2)
fai2=(L/2+cy-x(1)-y2)./(sqrt((p.*B)^2-x(1).^2)+B/2+cx-x(2));%fai2=(L/2+cy-D-y2)/(sqrt(R^2-D^2)+B/2+cx-A1);
jX2=(sqrt((p*B)^2-x(1).^2)+B/2+cx).*(cos(fai2)-1)-y2.*sin(fai2);  
jY2=(sqrt((p*B)^2-x(1).^2)+B/2+cx).*sin(fai2)-L/2+y2.*cos(fai2);
j2=sqrt(jX2.^2+jY2.^2);
yx2=-y2./(sqrt(x(3).^2+y2.^2));   
    z2=u.*(N2./(l*b)-y2.*a).*(1-exp(-j2/K)).*yx2;
end

%子函数中对应函数3  内纵向力
%first
Szn1=-b.*quad(@myf1,-L/2,L/2);%+quad(@myfun3,1.205,1.501)+quad(@myfun3,0.303,0.599)+quad(@myfun3,-0.599,0.303)+quad(@myfun3,-1.501,-1.205)+quad(@myfun31,-2.255,-1.255))  ;
function z3=myf1(y3)

     fai1=(L/2+cy-x(1)-y3)./(sqrt((p*B)^2-x(1).^2)-B/2+cx-x(2));%fai2=(L/2+cy-D-y2)/(sqrt(R^2-D^2)+B/2+cx-A1);
    jX1=(sqrt((p*B)^2-x(1).^2)-B/2+cx).*(cos(fai1)-1)-y3.*sin(fai1);  
    jY1=(sqrt((p*B)^2-x(1).^2)-B/2+cx).*sin(fai1)-L/2+y3.*cos(fai1);   
    j1=sqrt(jX1.^2+jY1.^2);
    zx1=x(2)./(sqrt(x(2).^2+y3.^2));   
z3=u.*(N1./(l*b)-y3.*a).*(1-exp(-j1/K)).*zx1;
end

Szw1=-b.*quad(@my1,-L/2,L/2);%+quad(@myfun4,1.205,1.501)+quad(@myfun4,0.303,0.599)+quad(@myfun4,-0.599,0.303)+quad(@myfun4,-1.501,-1.205)+quad(@myfun4,-2.255,-1.255));
function z4=my1(y2)
fai2=(L/2+cy-x(1)-y2)./(sqrt((p.*B)^2-x(1).^2)+B/2+cx-x(2));%fai=(L/2+cy-x(1)-y1)./(sqrt((p*B)^2-x(1).^2)-B/2+cx-x(2));
jX2=(sqrt((p*B)^2-x(1).^2)+B/2+cx).*(cos(fai2)-1)-y2.*sin(fai2);  
jY2=(sqrt((p*B)^2-x(1).^2)+B/2+cx).*sin(fai2)-L/2+y2.*cos(fai2);
j2=sqrt(jX2.^2+jY2.^2);
zx2=-x(3)./(sqrt(x(3).^2+y2.^2));   
z4=u.*(N2./(l*b)-y2.*a).*(1-exp(-j2/K)).*zx2;
end


%内驱动力矩
MDzn=-0.5.*B.*Szn1;
%外驱动力矩
MDzw=-0.5.*B.*Szw1;


%子函数中对应函数5  内阻力矩
%first
Muzn1=-b.*quad(@myju1,-L/2,L/2);%+quad(@myfun7,1.205,1.501)+quad(@myfun7,0.303,0.599)+quad(@myfun7,-0.599,0.303)+quad(@myfun7,-1.501,-1.205)+quad(@myfun7,-2.255,-1.255));
function z7=myju1(y1)
     fai1=(L/2+cy-x(1)-y1)./(sqrt((p*B)^2-x(1).^2)-B/2+cx-x(2));
    jX1=(sqrt((p*B)^2-x(1).^2)-B/2+cx).*(cos(fai1)-1)-y1.*sin(fai1);  
    jY1=(sqrt((p*B)^2-x(1).^2)-B/2+cx).*sin(fai1)-L/2+y1.*cos(fai1);   
    j1=sqrt(jX1.^2+jY1.^2);
    yx1=-y1./(sqrt(x(2).^2+y1.^2));
z7=y1*u.*(N1./(l*b)-y1.*a).*(1-exp(-j1/K)).*yx1;   
end


%子函数中对应函数6  外阻力矩
%first
Muzw1=-b.*quad(@mytes1,-L/2,L/2);%+quad(@myfun8,1.205,1.501)+quad(@myfun8,0.303,0.599)+quad(@myfun8,-0.599,0.303)+quad(@myfun8,-1.501,-1.205)+quad(@myfun8,-2.255,-1.255));
  function z8=mytes1(y2)
fai2=(L/2+cy-x(1)-y2)./(sqrt((p.*B)^2-x(1).^2)+B/2+cx-x(2));
jX2=(sqrt((p*B)^2-x(1).^2)+B/2+cx).*(cos(fai2)-1)-y2.*sin(fai2);  
jY2=(sqrt((p*B)^2-x(1).^2)+B/2+cx).*sin(fai2)-L/2+y2.*cos(fai2);
j2=sqrt(jX2.^2+jY2.^2);
yx2=-y2./(sqrt(x(3).^2+y2.^2));  
z8=y2*u.*(N2./(l*b)-y2.*a).*(1-exp(-j2/K)).*yx2;
  end
            
  
F(1)=Sszn1+Sszw1-G*v.^2.*sqrt((p*B)^2-x(1).^2)./(g*p*B*p*B);
F(2)=Szn1+Szw1-G*v.^2.*x(1)./(g*p*B*p*B)-Rf1-Rf2;
F(3)=MDzw-MDzn-0.5.*B.*(Rf2-Rf1)+(x(1).*sqrt((p*B).^2-x(1).^2)./(p*B)+cx.*x(1)./(p*B)).*G.*v.^2./(g.*p*B)-Muzw1+Muzn1;
% end
end
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

will_zhan

新虫 (初入文坛)

结构很清晰,就是一步一步表示出表达式,然后带入后面的式子中,最后对求出的表达式积分得到要带入最后非线性方程组的式子,麻烦就麻烦再积分的地方,由于新手也可能出现其他一些始料不及的小错误,多指教
2楼2014-10-15 23:38:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 will_zhan 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见