matlab中如何求解符号变量的非线性方程组的解,求大神赐教!!!代码如下: 65
想求x1,x2,x3的迭代解:clear;clc;formatlongg;a0=25;Z=16;Fa=4000;Fr=0;c=4.517*0.0001;fi=0.52;f...
想求x1,x2,x3的迭代解:
clear;
clc;
format long g;
a0=25;Z=16;Fa=4000;Fr=0;c=4.517*0.0001;fi=0.52;fe=0.53;fm=(fi+fe)/2;e=1.187;Ja=0.48489;%由于Fx、Fy、Fz为沿坐标轴正向的力,故Fr=Fy、Fa=Fz要为负值;
Dw=12.5;Dm=86.72888;%定义参数
ri=fi*Dw;re=fe*Dw;G=fi+fe-1;
Ri=0.5*Dm+(ri-0.5*Dw)*cos(a0/180*pi);
fai=0:(2*pi/Z):(2*pi/Z*(Z-1));
syms N L a c h Q;
syms x1 x2 x3;
x=[x1,x2,x3];
for i=1:Z
N(i)=sin(a0/180*pi)+x(3)/(G*Dw);
L(i)=cos(a0/180*pi)+x(1)/(G*Dw)*cos(fai(i))+x(2)/(G*Dw)*sin(fai(i));
Q(i)=(G*Dw/0.0001)^1.5*(sqrt((N(i))^2+(L(i))^2)-1)^1.5;
end;
Fx=0;Fy=0;Fz=0;
for i=1:Z
temp1=Q(i)*cos(fai(i))*L(i)/(sqrt((N(i))^2+(L(i))^2));
Fx=Fx+temp1;
temp2=Q(i)*sin(fai(i))*L(i)/(sqrt((N(i))^2+(L(i))^2));
Fy=Fy+temp2;
temp3=Q(i)*N(i)/(sqrt((N(i))^2+(L(i))^2));
Fz=Fz+temp3;
end
F=@(t,x)[Fx;Fy-1000;Fz-1000];%这里有问题因为貌似自变量得是x(1)这种的而Fx是x1这种的,不知道怎么改
x0=[0;0.003;0.009];%设定迭代初值
dF=@(x0) numjac(F,0,x0,F(0,x0),1e-5);
F(0,x0);
dF(x0);
for it=1:100
X=x0-dF(x0)^(-1)*F(0,x0);
if norm(X-x0)<1e-8
break;end
x0=X;
end
it
x0
我这里面所有的参数都是轴承的参数这都不重要忽略就可以了,重点是解后面的那个方程,很麻烦不知道用什么方法解 展开
clear;
clc;
format long g;
a0=25;Z=16;Fa=4000;Fr=0;c=4.517*0.0001;fi=0.52;fe=0.53;fm=(fi+fe)/2;e=1.187;Ja=0.48489;%由于Fx、Fy、Fz为沿坐标轴正向的力,故Fr=Fy、Fa=Fz要为负值;
Dw=12.5;Dm=86.72888;%定义参数
ri=fi*Dw;re=fe*Dw;G=fi+fe-1;
Ri=0.5*Dm+(ri-0.5*Dw)*cos(a0/180*pi);
fai=0:(2*pi/Z):(2*pi/Z*(Z-1));
syms N L a c h Q;
syms x1 x2 x3;
x=[x1,x2,x3];
for i=1:Z
N(i)=sin(a0/180*pi)+x(3)/(G*Dw);
L(i)=cos(a0/180*pi)+x(1)/(G*Dw)*cos(fai(i))+x(2)/(G*Dw)*sin(fai(i));
Q(i)=(G*Dw/0.0001)^1.5*(sqrt((N(i))^2+(L(i))^2)-1)^1.5;
end;
Fx=0;Fy=0;Fz=0;
for i=1:Z
temp1=Q(i)*cos(fai(i))*L(i)/(sqrt((N(i))^2+(L(i))^2));
Fx=Fx+temp1;
temp2=Q(i)*sin(fai(i))*L(i)/(sqrt((N(i))^2+(L(i))^2));
Fy=Fy+temp2;
temp3=Q(i)*N(i)/(sqrt((N(i))^2+(L(i))^2));
Fz=Fz+temp3;
end
F=@(t,x)[Fx;Fy-1000;Fz-1000];%这里有问题因为貌似自变量得是x(1)这种的而Fx是x1这种的,不知道怎么改
x0=[0;0.003;0.009];%设定迭代初值
dF=@(x0) numjac(F,0,x0,F(0,x0),1e-5);
F(0,x0);
dF(x0);
for it=1:100
X=x0-dF(x0)^(-1)*F(0,x0);
if norm(X-x0)<1e-8
break;end
x0=X;
end
it
x0
我这里面所有的参数都是轴承的参数这都不重要忽略就可以了,重点是解后面的那个方程,很麻烦不知道用什么方法解 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询