哪位大神帮我看看这条matlab程序错在哪里?
发布网友
发布时间:2023-09-23 12:31
我来回答
共2个回答
热心网友
时间:13小时前
建议数值方法求解。
因为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) % 交点纵坐标
热心网友
时间:13小时前
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);
应该能达到你的目的。