高分求matlab程序 进行多项式拟合多项式为5项数 即形式为 y=ax^5+bx^4+cx^3+dx^2+ex+f.要得出这种形式的方程.x=[1978:2002];y=[272.81,286.43,311.89,324.76,337.07,351.81,390.85,466.75,490.86,545.46,648.3,696.54,781.66,893.77,11
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/07 18:43:32
高分求matlab程序 进行多项式拟合多项式为5项数 即形式为 y=ax^5+bx^4+cx^3+dx^2+ex+f.要得出这种形式的方程.x=[1978:2002];y=[272.81,286.43,311.89,324.76,337.07,351.81,390.85,466.75,490.86,545.46,648.3,696.54,781.66,893.77,11
高分求matlab程序 进行多项式拟合
多项式为5项数 即形式为 y=ax^5+bx^4+cx^3+dx^2+ex+f.要得出这种形式的方程.
x=[1978:2002];
y=[272.81,286.43,311.89,324.76,337.07,351.81,390.85,466.75,490.86,545.46,648.3,696.54,781.66,893.77,1114.32,1519.23,1990.66,2499.43,2957.55,3438.79,3801.09,4188.73,4771.17,5210.12,5741.03]
还要得出拟合的多项式!我要式子!
高分求matlab程序 进行多项式拟合多项式为5项数 即形式为 y=ax^5+bx^4+cx^3+dx^2+ex+f.要得出这种形式的方程.x=[1978:2002];y=[272.81,286.43,311.89,324.76,337.07,351.81,390.85,466.75,490.86,545.46,648.3,696.54,781.66,893.77,11
x=1978:2002;
y=[272.81,286.43,311.89,324.76,337.07,351.81,390.85,466.75,490.86,545.46,648.3,696.54,781.66,893.77,1114.32,1519.23,1990.66,2499.43,2957.55,3438.79,3801.09,4188.73,4771.17,5210.12,5741.03];
p = polyfit(x,y,5);
f = polyval(p,x);
plot(x,y,'o',x,f,'-');
p
以上是程序,结果为:
p =
1.0e+014 *( -0.0000 0.0000 -0.0000 0.0000 -0.0027 1.0632)
依次即为abcdef.
不过这些数据不适合用5次拟合,2或3次就够了.5次拟合的数据,可能因为条件数差而不准确.
国赛B题啊,我们也正在做
给你两个例子做参考:
例一:
clc;clear;
f=@(beta,x)(beta(1)+beta(2)*x(:,1)+beta(3)*x(:,2)+beta(4)*x(:,1).*x(:,1)-beta(4)+...
beta(5)*x(:,2).*x(:,2)-beta(5)+beta(6)*x(:,1).*x(:,2));
x=[0.00144 0....
全部展开
给你两个例子做参考:
例一:
clc;clear;
f=@(beta,x)(beta(1)+beta(2)*x(:,1)+beta(3)*x(:,2)+beta(4)*x(:,1).*x(:,1)-beta(4)+...
beta(5)*x(:,2).*x(:,2)-beta(5)+beta(6)*x(:,1).*x(:,2));
x=[0.00144 0.45
0.00144 0.475
0.00144 0.525
0.00144 0.55
0.00152 0.45
0.00152 0.475
0.00152 0.525
0.00152 0.55
0.00168 0.45
0.00168 0.475
0.00168 0.525
0.00168 0.55
0.00176 0.45
0.00176 0.475
0.00176 0.525
0.00176 0.55];
y = [45.69110212
44.24592344
41.94713721
40.58647715
43.86413153
42.02196312
40.52672275
41.19385838
49.83122281
45.92215843
40.71631097
40.28065749
45.73223359
44.81973606
43.23365342
42.49947777];
beta0=[40.0001 1.0818 -2.5844 0.6803 0.6928 -0.4830];
beta=nlinfit(x,y,f,beta0);
例2:
function p=naorthfit(x,y,m)
%用途:多项式拟合
%格式:x,y为数据向量,m为拟合正交多项式次数,p返回多项式
%系数降幂排列
psi=fliplr(eye(m+1,m+1));%转动m+1阶单位矩阵,赋值给psi
p=zeros(1,m+1);%p是1×(m+1)阶的零矩阵
psi(2,m+1)=-sum(x)/length(x);%将psi(矩阵)中的第2行、第(m+1)列的元素变为x的和除x的长度的负值。
for k=2:m %循环,k从2开始,每次步长为1,当k=m时,完成最后一次循环
%以psi的第k行作为多项式系数,计算多项式在x处的值,并赋给t
t=polyval(psi(k,:),x);
以psi的第k-1行作为多项式系数,计算多项式在x处的值,并赋给t
t1=polyval(psi(k-1,:),x);
%a等于 x与t中元素对应相乘,然后乘t的转置,再除以t乘t的转置
a=(x.*t)*t'/(t*t');
%b等于 t乘t的转置除以t1乘t1的转置
b=(t*t')/(t1*t1');
%psi的第k+1行元素为
%以1和-a为系数的多项式乘以以psi的第k行、第2到(m+1)列作为系数的多项式。
%减去b乘psi的第k-1行
psi(k+1,:)=conv([1 -a],psi(k,2:m+1))-b*psi(k-1,:);
end %结束for循环标志
for k=1:m %for循环,k从1开始,步长为1,当k=m时,完成最后一次循环
t=polyval(psi(k+1,:),x); %以psi的第k+1行作为多项式系数,计算多项式在x处的值,并赋给t
p(k+1)=y*t'/(t*t'); %y乘t的转置,除以t乘t的转置
end %结束for循环标志
p=p*psi; %p乘psi,然后赋给p,传递到主程序。
收起