哪位大神帮我看看这条matlab程序错在哪里?
clearr=0.3894;n5_min=1200;n5_max=4400;n5=[n5_min:200:n5_max];Te=xlsread('uamax-Te.xls...
clear
r=0.3894;
n5_min=1200;
n5_max=4400;
n5=[n5_min:200:n5_max];
Te=xlsread('uamax-Te.xls');
i0=5.286;
ig5=1;
eta=0.81;
m=4290;
G=m*9.8;
Cd=0.65;
A=6.406;
f=0.015;
ua5=0.377*r.*n5/ig5/i0;
Ft5=Te*i0*ig5*eta/r;
plot(ua5,Ft5);
hold on;
B=polyfit(Ft5,ua5,5);
disp('拟合多项式系数')
fprintf(1,'%.17f\n',B)
ua5=0.377*r.*n5/ig5/i0;
Fw=Cd.*A.*ua5.^2/21.15;
Ff=f*G;
Fz5=Fw+Ff;
plot(ua5,Fz5,'r-');
C=polyfit(Fz5,ua5,5);
disp('拟合多项式系数')
fprintf(1,'%.17f\n',C)
ua=80:0.1:90;
Ft=B(1,1)+B(1,2)*ua+B(1,3)*ua.^2+B(1,4)*ua.^3+B(1,5)*ua.^4+B(1,6)*ua.^5;
Fz=C(1,1)+C(1,2)*ua+C(1,3)*ua.^2+C(1,4)*ua.^3+C(1,5)*ua.^4+C(1,6)*ua.^5;
solve('Fz-Ft','ua')
最后运行结果,图可以出来,多项式系数可以拟合出来,唯独最后的solve函数无解……如下图:
这是什么原因啊?图线上明明在80~90的范围内有交点的。 展开
r=0.3894;
n5_min=1200;
n5_max=4400;
n5=[n5_min:200:n5_max];
Te=xlsread('uamax-Te.xls');
i0=5.286;
ig5=1;
eta=0.81;
m=4290;
G=m*9.8;
Cd=0.65;
A=6.406;
f=0.015;
ua5=0.377*r.*n5/ig5/i0;
Ft5=Te*i0*ig5*eta/r;
plot(ua5,Ft5);
hold on;
B=polyfit(Ft5,ua5,5);
disp('拟合多项式系数')
fprintf(1,'%.17f\n',B)
ua5=0.377*r.*n5/ig5/i0;
Fw=Cd.*A.*ua5.^2/21.15;
Ff=f*G;
Fz5=Fw+Ff;
plot(ua5,Fz5,'r-');
C=polyfit(Fz5,ua5,5);
disp('拟合多项式系数')
fprintf(1,'%.17f\n',C)
ua=80:0.1:90;
Ft=B(1,1)+B(1,2)*ua+B(1,3)*ua.^2+B(1,4)*ua.^3+B(1,5)*ua.^4+B(1,6)*ua.^5;
Fz=C(1,1)+C(1,2)*ua+C(1,3)*ua.^2+C(1,4)*ua.^3+C(1,5)*ua.^4+C(1,6)*ua.^5;
solve('Fz-Ft','ua')
最后运行结果,图可以出来,多项式系数可以拟合出来,唯独最后的solve函数无解……如下图:
这是什么原因啊?图线上明明在80~90的范围内有交点的。 展开
2个回答
展开全部
建议数值方法求解。
因为5次及以的上方程没有解析解。
因为5次及以的上方程没有解析解。
追问
您能教教我怎么求吗?谢谢了!
追答
我写一个示意,自己来让他运行起来。
% 求两个函数的交点
B = [1 2 3 4 5 6];
C = [6 5 4 3 2 1];
f1 = @(ua) B(1,1)+B(1,2)*ua+B(1,3)*ua.^2+B(1,4)*ua.^3+B(1,5)*ua.^4+B(1,6)*ua.^5;
f2 = @(ua) C(1,1)+C(1,2)*ua+C(1,3)*ua.^2+C(1,4)*ua.^3+C(1,5)*ua.^4+C(1,6)*ua.^5;
% 绘图
xs = (0:0.01:1.5).';
y1s = f1(xs);
y2s = f2(xs);
plot(xs,y1s,xs,y2s)
% 求解
eqn = @(x) f1(x)-f2(x);
result_x1 = fzero(eqn, 0.8) % 交点横坐标
result_y1 = f1(result_x1) % 交点纵坐标
展开全部
solve('Fz-Ft','ua')
解拦配决的是syms类型的
显然你这里是数值的。
最后三行改简纯指裤橡为
syms ua
Ft=B(1,1)+B(1,2)*ua+B(1,3)*ua.^2+B(1,4)*ua.^3+B(1,5)*ua.^4+B(1,6)*ua.^5;
Fz=C(1,1)+C(1,2)*ua+C(1,3)*ua.^2+C(1,4)*ua.^3+C(1,5)*ua.^4+C(1,6)*ua.^5;
temp=Ft-Fz;
result=solve(temp,ua);
subs(result);
应该能达到你的目的。
解拦配决的是syms类型的
显然你这里是数值的。
最后三行改简纯指裤橡为
syms ua
Ft=B(1,1)+B(1,2)*ua+B(1,3)*ua.^2+B(1,4)*ua.^3+B(1,5)*ua.^4+B(1,6)*ua.^5;
Fz=C(1,1)+C(1,2)*ua+C(1,3)*ua.^2+C(1,4)*ua.^3+C(1,5)*ua.^4+C(1,6)*ua.^5;
temp=Ft-Fz;
result=solve(temp,ua);
subs(result);
应该能达到你的目的。
更多追问追答
追问
??? Undefined function or variable "ua".
Error in ==> uamax at 31
Ft=B(1,1)+B(1,2)*ua+B(1,3)*ua.^2+B(1,4)*ua.^3+B(1,5)*ua.^4+B(1,6)*ua.^5;
请问这是怎么回事呢?变量ua不是在sym下定义了吗?
追答
你定义的是ua=80:0.1:90;不是syms类型的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询