怎样用MATLAB求解高次方程%主减速器传动比计算m=input('请输入汽车质量m=');ig=input('请输入变速器各档传动比ig=');et=input('请输入传动效率et=');r=input('请输入车轮半径r=');f=input('请输入滚动阻力系数f=');Cd=input('请输入空气阻力系数Cd=');A=input('请输入迎风面积A=');um=input('请输入最高车速um=');Ff=m*9.8*f;Fw=Cd*A*um^2/21.15;syms i0;ne0=ig*u
2019-04-12
怎样用MATLAB求解高次方程
%主减速器传动比计算
m=input('请输入汽车质量m=');
ig=input('请输入变速器各档传动比ig=');
et=input('请输入传动效率et=');
r=input('请输入车轮半径r=');
f=input('请输入滚动阻力系数f=');
Cd=input('请输入空气阻力系数Cd=');
A=input('请输入迎风面积A=');
um=input('请输入最高车速um=');
Ff=m*9.8*f;
Fw=Cd*A*um^2/21.15;
syms i0;
ne0=ig*um/(0.377*r)*i0;%最高车速对应的发动机转速
Ttq=c(1)*ne0.^5+c(2)*ne0.^4+c(3)*ne0.^3+c(4)*ne0.^2+c(5)*ne0+c(6);%最高车速对应的发动机转矩(c已经在前面算好了)
[i0]=solve('Ttq*ig*et/r*i0-Ff-Fw=0')
上面是我所编写的程序,用于计算汽车主减速比,但我MATLAB不太会用,按照我的理解编好程序后,算不出要求的i0,恳请高手指教,如何完善上面这个程序.
优质解答
% 最后一句改为
i0=solve(Ttq*ig*et/r*i0-Ff-Fw);
% 因为你前面定义过syms i0,所以solve里不用引号,可以直接把各个参数代入,是一个自变量为i0的sym类型的表达式,不加引号的话也不能加=号,方程两边要挪到一边.
%如果你不定义syms i0,那也可以直接用
i0=solve('Ttq*ig*et/r*i0-Ff-Fw=0' ,'i0')
% 此时因为多个未知数,所以必须指定所求的i0,结果用其他参数表示,所以要换成数值,还要加一句
x=subs(i0) %这句的意思就是用现有变量内容替换sym类型里的变量名
% 最后一句改为
i0=solve(Ttq*ig*et/r*i0-Ff-Fw);
% 因为你前面定义过syms i0,所以solve里不用引号,可以直接把各个参数代入,是一个自变量为i0的sym类型的表达式,不加引号的话也不能加=号,方程两边要挪到一边.
%如果你不定义syms i0,那也可以直接用
i0=solve('Ttq*ig*et/r*i0-Ff-Fw=0' ,'i0')
% 此时因为多个未知数,所以必须指定所求的i0,结果用其他参数表示,所以要换成数值,还要加一句
x=subs(i0) %这句的意思就是用现有变量内容替换sym类型里的变量名