3 次、4 次、指数多项式的曲线拟合
3 次多项式的曲线拟合程序
x=[0.0 0.1 0.2 0.3 0.5 0.8 1.0];
y=[1.0 0.41 0.50 0.61 0.91 2.02 2.46];
%初始化变量
m=length(x); %取 m 为数组长度
n=4; %取 n-1 为多项式次数
Y=0; syms t; YY=0;
A=zeros(n,n); %法方程组的 A 数组
b=zeros(n,1); %法方程组的 b 向量
y1=zeros(1,m); %拟合函数对应抽样点的函数值
%%%******************写入法方程组的 A 矩阵和 b 向量****************************
for i=1:1:n
for j=1:1:m
A(1,i)=A(1,i)+x(j)^(i-1);
A(2,i)=A(2,i)+x(j)^(i);
A(3,i)=A(3,i)+x(j)^(i+1);
A(4,i)=A(4,i)+x(j)^(i+2);
b( i,1)=b(i,1)+x(j)^(i-1)*y(j);
end
end
%%***************************求 C 并输出已 C 向量为系数的多项式****************
format short;
C=A\b %求多项式系数 C 向量
P=[1 t t^2 t^3]*C(:,1); %输出多项式公式
P=vpa(collect(P),4)
%作图
X=0:0.05:1; %取 X 为作图抽样点
for k=1:1:n
Y=Y.*X+C(5-k,1); %取 Y 为作图的 X 对应函数值
end
plot(x,y,”ob”,X,Y)
xlabel(“x”),ylabel(“y”);
title(“三次多项式拟合曲线”);
grid on;
%%*****************************计算偏差平方和******************************
%取抽样点对应函数值
x1=[0.0 0.1 0.2 0.3 0.5 0.8 1.0];
for ii=1:1:m
for kk=1:1:n
YY=YY.*x1(ii)+C(5-kk,1);end
y1(1,ii)=YY;
YY=0;
end
y1
%输出偏差平方和 zz
format long;
z=(y1-y).^2; %取 z 为偏差平方数组
zz=sum(z)
4 次多项式的曲线拟合程序
x=[0.0 0.1 0.2 0.3 0.5 0.8 1.0];
y=[1.0 0.41 0.50 0.61 0.91 2.02 2.46];
%初始化变量
m=length(x); %取 m 为数组长度
n=5; %取 n-1 为多项式次数
Y=0; syms t; YY=0;
A=zeros(n,n); %法方程组的 A 数组
b=zeros(n,1); %法方程组的 b 向量
y1=zeros(1,m); %拟合函数对应抽样点的函数值
%%%******************写入法方程组的 A 矩阵和 b 向量****************************
for i=1:1:n
for j=1:1:m
A(1,i)=A(1,i)+x(j)^(i-1);
A(2,i)=A(2,i)+x(j)^(i);
A(3,i)=A(3,i)+x(j)^(i+1);
A(4,i)=A(4,i)+x(j)^(i+2);
A(5,i)=A(5,i)+x(j)^(i+3);
b(i,1)=b(i,1)+x(j)^(i-1)*y(j);
end
end
%%***************************求 C 并输出已 C 向量为系数的多项式****************
format short;
C=A\b %求多项式系数 C 向量
P=[1 t t^2 t^3 t^4]*C(:,1); %输出多项式公式
P=vpa(collect(P),4)
%作图
X=0:0.05:1; %取 X 为作图抽样点
for k=1:1:n
Y=Y.*X+C(6-k,1); %取 Y 为作图的 X 对应函数值
end
plot(x,y,”ob”,X,Y)xlabel(“x”),ylabel(“y”);
title(“四次多项式拟合曲线”);
grid on;
%%*****************************计算偏差平方和******************************
%取抽样点对应函数值
x1=[0.0 0.1 0.2 0.3 0.5 0.8 1.0];
for ii=1:1:m
for kk=1:1:n
YY=YY.*x1(ii)+C(6-kk,1);
end
y1(1,ii)=YY;
YY=0;
end
y1
%输出偏差平方和 zz
format long;
z=(y1-y).^2; %取 z 为偏差平方数组
zz=sum(z)
指数函数多项式的曲线拟合
可以选取函数类
其相应的法方程组为
x=[0.0 0.1 0.2 0.3 0.5 0.8 1.0];
y=[1.0 0.41 0.50 0.61 0.91 2.02 2.46];
syms t;
format short;
A=zeros(5,5);
b=zeros(5,1);
a12=exp(x);
a22=exp(2*x);
a24=exp(3*x);
a44=exp(4*x);
a13=exp(-1*x);
a33=exp(-2*x);
a35=exp(-3*x);
a55=exp(-3*x);
%%%******************写入法方程组的 A 矩阵和 b 向量****************************
A(1,1)=7; A(1,2)=sum(a12); A(1,3)=sum(a13);
A(1,4)=sum(a22); A(1,5)=sum(a33);
A(2,1)=sum(a12); A(2,2)=sum(a22); A(2,3)=7;
A(2,4)=sum(a24); A(2,5)=sum(a13);
A(3,1)=sum(a13); A(3,2)=7; A(3,3)=sum(a33);
A(3,4)=sum(a12); A(3,5)=sum(a35);
A(4,1)=sum(a22); A(4,2)=sum(a24); A(4,3)=sum(a12);
A(4,4)=sum(a44); A(4,5)=7;
A(5,1)=sum(a33); A(5,2)=sum(a13); A(5,3)=sum(a35);A(5,4)=7; A(5,5)=sum(a55);
b(1,1)=sum(y); b(2,1)=a12*y’; b(3,1)=a13*y’;
b(4,1)=a22*y’; b(5,1)=a33*y’;
%%***************************求 C 并输出已 C 向量为系数的多项式****************
C=A\b %求多项式系数 C 向量
P=[1 exp(t) exp(-t) exp(2*t) exp(-2*t) ]*C(:,1); %输出多项式公式
P=vpa(collect(P),4)
%作图
X=0:0.05:1; %取 X 为作图抽样点
Y=1*C(1,1)+exp(X)*C(2,1)+exp(-X)*C(3,1)+exp(2*X)*C(4,1)+exp(-2*X)*C(5,1);
plot(x,y,”ob”,X,Y)
%%*****************************计算偏差平方和******************************
%取抽样点对应函数值
x1=[0.0 0.1 0.2 0.3 0.5 0.8 1.0];
for ii=1:1:7
y 1(ii)=1.*C(1,1)+exp(x1(ii))*C(2,1)+exp(-x1(ii))*C(3,1)…
+exp(2*x1(ii))*C(4,1)+exp(-2*x1(ii))*C(5,1);
end
y1
%输出偏差平方和 zz
format long;
z=(y1-y).^2; %取 z 为偏差平方数组
zz=sum(z)