matlab多项式的系数拟合问题!y=a0+a1*z+a2*z^2+a3*z^3+a4*z^4+a5*z^5+a6*z^6; 根据相应的加载情况a0和a1由边界条件确定,现在要求其他的系数 应该用什么拟合?lsqcurvefit函数拟合可以吗?怎么弄?
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/18 04:50:19
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。
收起