哪位大神帮我看看这条matlab程序错在哪里?
来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/09/20 17:34:16
哪位大神帮我看看这条matlab程序错在哪里?
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的范围内有交点的.
建议数值方法求解.
因为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) % 交点纵坐标
因为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) % 交点纵坐标