matlab多项式的系数拟合问题!y=a0+a1*z+a2*z^2+a3*z^3+a4*z^4+a5*z^5+a6*z^6; 根据相应的加载情况a0和a1由边界条件确定,现在要求其他的系数 应该用什么拟合?lsqcurvefit函数拟合可以吗?怎么弄?
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/04 02:24:54
![matlab多项式的系数拟合问题!y=a0+a1*z+a2*z^2+a3*z^3+a4*z^4+a5*z^5+a6*z^6; 根据相应的加载情况a0和a1由边界条件确定,现在要求其他的系数 应该用什么拟合?lsqcurvefit函数拟合可以吗?怎么弄?](/uploads/image/z/1790684-44-4.jpg?t=matlab%E5%A4%9A%E9%A1%B9%E5%BC%8F%E7%9A%84%E7%B3%BB%E6%95%B0%E6%8B%9F%E5%90%88%E9%97%AE%E9%A2%98%21y%3Da0%2Ba1%2Az%2Ba2%2Az%5E2%2Ba3%2Az%5E3%2Ba4%2Az%5E4%2Ba5%2Az%5E5%2Ba6%2Az%5E6%3B+%E6%A0%B9%E6%8D%AE%E7%9B%B8%E5%BA%94%E7%9A%84%E5%8A%A0%E8%BD%BD%E6%83%85%E5%86%B5a0%E5%92%8Ca1%E7%94%B1%E8%BE%B9%E7%95%8C%E6%9D%A1%E4%BB%B6%E7%A1%AE%E5%AE%9A%2C%E7%8E%B0%E5%9C%A8%E8%A6%81%E6%B1%82%E5%85%B6%E4%BB%96%E7%9A%84%E7%B3%BB%E6%95%B0+%E5%BA%94%E8%AF%A5%E7%94%A8%E4%BB%80%E4%B9%88%E6%8B%9F%E5%90%88%3Flsqcurvefit%E5%87%BD%E6%95%B0%E6%8B%9F%E5%90%88%E5%8F%AF%E4%BB%A5%E5%90%97%3F%E6%80%8E%E4%B9%88%E5%BC%84%3F)
matlab多项式的系数拟合问题!y=a0+a1*z+a2*z^2+a3*z^3+a4*z^4+a5*z^5+a6*z^6; 根据相应的加载情况a0和a1由边界条件确定,现在要求其他的系数 应该用什么拟合?lsqcurvefit函数拟合可以吗?怎么弄?
matlab多项式的系数拟合问题!
y=a0+a1*z+a2*z^2+a3*z^3+a4*z^4+a5*z^5+a6*z^6;
根据相应的加载情况a0和a1由边界条件确定,现在要求其他的系数 应该用什么拟合?lsqcurvefit函数拟合可以吗?怎么弄?
matlab多项式的系数拟合问题!y=a0+a1*z+a2*z^2+a3*z^3+a4*z^4+a5*z^5+a6*z^6; 根据相应的加载情况a0和a1由边界条件确定,现在要求其他的系数 应该用什么拟合?lsqcurvefit函数拟合可以吗?怎么弄?
用polyfit可能都够了
用Poly5拟合即可:
Linear model Poly5:
fitresult(x) = p1*x^5 + p2*x^4 + p3*x^3 + p4*x^2 + p5*x + p6
你的a0...a6与上式中的p6...p1相对应。
a0和a1由边界条件确定,即p6、p5由边界条件确定。
在下例中,设a0=p6=40、a1=p5=-5...
全部展开
用Poly5拟合即可:
Linear model Poly5:
fitresult(x) = p1*x^5 + p2*x^4 + p3*x^3 + p4*x^2 + p5*x + p6
你的a0...a6与上式中的p6...p1相对应。
a0和a1由边界条件确定,即p6、p5由边界条件确定。
在下例中,设a0=p6=40、a1=p5=-5
% 以下代码在7.1版以上均可运行
% 输入原始数据 x y
x=[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26];
y=[56 57 58 65 82 114 117 120 124 124 122 122 122 119 119 118 118 116 117 115 117 117 117 117 117 115];
xData = x(:);
yData = y(:);
% Set up fittype and options.
ft = fittype( 'poly5' );
opts = fitoptions( ft );
opts.Lower = [-Inf -Inf -Inf -Inf -5 40]; % 设 a0=p6=40 a1=p5=-5
opts.Upper = [Inf Inf Inf Inf -5 40]; % 设 a0=p6=40 a1=p5=-5
% Fit model to data.
[fitresult, gof] = fit( xData, yData, ft, opts )
% Plot fit with data.
figure( 'Name', '拟合图' );
h_ = plot( fitresult, x, y, '* '); % 拟合图 原始数据
legend off; % turn off legend from plot method call
set(h_(2),'Color',[1 0 0],...
'LineStyle','-', 'LineWidth',2,...
'Marker','none', 'MarkerSize',6);
h = legend('原始数据','拟合曲线',2,'Location','Best');
set(h,'Interpreter','none')
title('拟合图 原始数据')
% Label axes
xlabel( 'x' );
ylabel( 'y' );
grid on
收起
lsqcurvefit
比如已知n个点,z0是n个点的自变量z的值组成的向量,y0是y值组成的向量
要进行最小二乘拟合,6次多项式,7个系数未知
f=inline('a(1)+a(2)*z+a(3)*z^2+a(4)*z^3+a(5)*z^4+a(6)*z^5+a(7)*z^6; ','a','z');
[c,res]=lsqcurvefit(f,[1 1 1 1...
全部展开
lsqcurvefit
比如已知n个点,z0是n个点的自变量z的值组成的向量,y0是y值组成的向量
要进行最小二乘拟合,6次多项式,7个系数未知
f=inline('a(1)+a(2)*z+a(3)*z^2+a(4)*z^3+a(5)*z^4+a(6)*z^5+a(7)*z^6; ','a','z');
[c,res]=lsqcurvefit(f,[1 1 1 1 1 1 1],z0,y0);%那个[1…1]是系数近似的值
c'
c’就是a(1)到a(7)对应你说的a0到a6。
要是a0、a1确定了你就只用确定5个系数,类似去做就行了。比如a0=8,a1=9
f=inline('8+9*z+a(1)*z^2+a(2)*z^3+a(3)*z^4+a(4)*z^5+a(5)*z^6; ','a','z');
[c,res]=lsqcurvefit(f,[1 1 1 1 1],z0,y0);
c'
c’就是a(1)到a(5)对应你说的a2到a6。
用polyfit也行啊
a=polyfit(z0,y0,6);
z0,y0还是已知点的z,y,输出的就是a0到a6。
收起