高分求matlab程序 进行多项式拟合
的有关信息介绍如下:给你两个例子做参考:例一: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.450.00144 0.4750.00144 0.5250.00144 0.550.00152 0.450.00152 0.4750.00152 0.5250.00152 0.550.00168 0.450.00168 0.4750.00168 0.5250.00168 0.550.00176 0.450.00176 0.4750.00176 0.5250.00176 0.55];y = [45.6911021244.2459234441.9471372140.5864771543.8641315342.0219631240.5267227541.1938583849.8312228145.9221584340.7163109740.2806574945.7322335944.8197360643.2336534242.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阶单位矩阵,赋值给psip=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处的值,并赋给tt=polyval(psi(k,:),x);以psi的第k-1行作为多项式系数,计算多项式在x处的值,并赋给tt1=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处的值,并赋给tp(k+1)=y*t'/(t*t'); %y乘t的转置,除以t乘t的转置end %结束for循环标志p=p*psi; %p乘psi,然后赋给p,传递到主程序。