桂电七院数值分析实验报告一

  • Post author:
  • Post category:其他




实验目的

通过实验掌握Matlab直线拟合,多项式拟合,非线性拟合的操作方法,进一步理解最小二乘拟合

理论。



实验内容与步骤


1. 已知一组数据x=[1 1.5 3 4 5 6 6.5 7 8];y=[1.2 1 1.7 2.5 2 2.3 2.5 3 3.1];

(1)画出数据的散点图;

(2)分别计算1,4,7次多项式拟合,画出拟合效果图;


1次多项式拟合:

在这里插入图片描述

4次多项式拟合:

在这里插入图片描述

7次多项式拟合:
在这里插入图片描述

(3)参考幂函数的拟合方法,利用指数函数拟合这组数据,并且画出拟合效果图;由



y

=

a

e

b

x

y = a{e^{bx}}






y




=








a




e











b


x














两边同时取对数可知



ln

y

=

ln

a

+

b

x

\ln y = \ln a + bx






ln




y




=








ln




a




+








b


x





,由此可知只需要一次拟合



ln

y

\ln y






ln




y









x

x






x





即可

拟合可得



ln

y

=

0.1483

x

+

0.0081

\ln y = 0.1483x + 0.0081






ln




y




=








0


.


1


4


8


3


x




+








0


.


0


0


8


1






(4)利用残差平方和




i

=

1

n

(

y

i

y

i

)

2

\sum\limits_{

{\rm{i}} = 1}^n {

{

{({y_i} – {

{\overline y }_i})}^2}}


















i





=


1


















n























(




y










i




































y































i



















)











2
















(节点处已知的函数值与拟合函数的取值的差的平方和),评价以上拟合效果哪个最好。

一次多项式拟合残差平方和为0.5380

四次多项式拟合残差平方和为0.4634

七次多项式拟合残差平方和为0.0333

幂函数拟合残差平方和为0.6627

由于



0.6627

>

0.5380

>

0.4634

>

0.0333

0.6627 > 0.5380 > 0.4634 > 0.0333






0


.


6


6


2


7




>








0


.


5


3


8


0




>








0


.


4


6


3


4




>








0


.


0


3


3


3





,所以拟合效果:七次多项式>四次多项式>一次多项式>幂函数,七次多项式拟合效果最好


画出数据的散点图:

clc
x=[1 1.5 3 4 5 6 6.5 7 8];
y=[1.2 1 1.7 2.5 2 2.3 2.5 3 3.1];
plot(x,y,'.')


一次多项式拟合:

clc
x=[1 1.5 3 4 5 6 6.5 7 8];
y=[1.2 1 1.7 2.5 2 2.3 2.5 3 3.1];
plot(x,y,'.')
p=polyfit(x,y,1)
y1=polyval(p,x);
hold on
plot(x,y1)


四次多项式拟合:

clc
x=[1 1.5 3 4 5 6 6.5 7 8];
y=[1.2 1 1.7 2.5 2 2.3 2.5 3 3.1];
plot(x,y,'.')
p=polyfit(x,y,4)
x=1:0.1:8;
y1=polyval(p,x);
hold on
plot(x,y1)


七次多项式拟合:

clc
x=[1 1.5 3 4 5 6 6.5 7 8];
y=[1.2 1 1.7 2.5 2 2.3 2.5 3 3.1];
plot(x,y,'.')
p=polyfit(x,y,7)
x=1:0.1:8;
y1=polyval(p,x);
hold on
plot(x,y1)


指数函数拟合:

clc
x=[1 1.5 3 4 5 6 6.5 7 8];
y=[1.2 1 1.7 2.5 2 2.3 2.5 3 3.1];
%lx=log(x);
ly=log(y);
plot(x,y,'.')
p=polyfit(x,ly,1)
y1=exp(p(2))*exp(p(1)*x);
hold on
plot(x,y1)


利用残差平方和一次多项式拟合:

clc
x=[1 1.5 3 4 5 6 6.5 7 8];
y=[1.2 1 1.7 2.5 2 2.3 2.5 3 3.1];
plot(x,y,'.')
p=polyfit(x,y,1)
y1=polyval(p,x);
hold on
plot(x,y1)
sum=0;
for i = 1:length(y)
    sum = sum + (y(i)-y1(i))^2; 
end
sum


利用残差平方和四次多项式拟合:

clc
x=[1 1.5 3 4 5 6 6.5 7 8];
y=[1.2 1 1.7 2.5 2 2.3 2.5 3 3.1];
plot(x,y,'.')
p=polyfit(x,y,4)
y1=polyval(p,x);
hold on
plot(x,y1)
sum=0;
for i = 1:length(y)
    sum = sum + (y(i)-y1(i))^2; 
end
sum


利用残差平方和七次多项式拟合:

clc
x=[1 1.5 3 4 5 6 6.5 7 8];
y=[1.2 1 1.7 2.5 2 2.3 2.5 3 3.1];
%lx=log(x);
ly=log(y);
plot(x,y,'.')
p=polyfit(x,ly,1)
y1=exp(p(2))*exp(p(1)*x);
hold on
plot(x,y1)
sum=0;
for i = 1:length(y)
    sum = sum + (y(i)-y1(i))^2; 
end
sum


利用残差平方和指数函数拟合:

clc
x=[1 1.5 3 4 5 6 6.5 7 8];
y=[1.2 1 1.7 2.5 2 2.3 2.5 3 3.1];
%lx=log(x);
ly=log(y);
plot(x,y,'.')
p=polyfit(x,ly,1)
y1=exp(p(2))*exp(p(1)*x);
hold on
plot(x,y1)
sum=0;
for i = 1:length(y)
    sum = sum + (y(i)-y1(i))^2; 
end
sum



版权声明:本文为qq_55810765原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。