数值计算B大作业.docx

上传人:b****1 文档编号:457104 上传时间:2022-10-10 格式:DOCX 页数:57 大小:330.65KB
下载 相关 举报
数值计算B大作业.docx_第1页
第1页 / 共57页
数值计算B大作业.docx_第2页
第2页 / 共57页
数值计算B大作业.docx_第3页
第3页 / 共57页
数值计算B大作业.docx_第4页
第4页 / 共57页
数值计算B大作业.docx_第5页
第5页 / 共57页
点击查看更多>>
下载资源
资源描述

数值计算B大作业.docx

《数值计算B大作业.docx》由会员分享,可在线阅读,更多相关《数值计算B大作业.docx(57页珍藏版)》请在冰豆网上搜索。

数值计算B大作业.docx

数值计算B大作业

课程设计

课程名称:

数值计算B

设计题目:

数值计算B大作业

学号:

S316030014

姓名:

周帅宇

 

完成时间:

2016年11月3日

 

题目一:

多项式插值

某气象观测站在8:

00(AM)开始每隔10分钟对天气作如下观测,用三次多项式插值函数(Newton)逼近如下曲线,插值节点数据如上表,并求出9点30分该地区的温度(x=10)。

x

1

2

3

4

5

6

7

8

y

22.5

23.3

24.4

21.70

25.2

28.5

24.8

25.4

二、数学原理

假设有n+1个不同的节点及函数在节点上的值(x

,y

),……(x

,y

),插值多项式有如下形式:

(1)

其中系数

(i=0,1,2……n)为特定系数,可由插值样条

(i=0,1,2……n)确定。

根据均差的定义,把x看成[a,b]上的一点,可得

f(x)=f(

)+f[

](

f[x,

]=f[

]+f[x,

](

……

f[x,

,…x

]=f[x,

,…x

]+f[x,

,…x

](x-x

综合以上式子,把后一式代入前一式,可得到:

f(x)=f[

]+f[

](

)+f[

](

)(

)+

…+f[x,

,…x

](

)…(x-x

)+f[x,

,…x

]

=N

(x)+

其中

N

(x)=f[

]+f[

](

)+f[

](

)(

)+

…+f[x,

,…x

](

)…(x-x

(2)

=f(x)-N

(x)=f[x,

,…x

]

(3)

=(

)…(x-x

Newton插值的系数

(i=0,1,2……n)可以用差商表示。

一般有

[

](k=0,1,2,……,n)(4)

把(4)代入

(1)得到满足插值条件N

(i=0,1,2,……n)的n次Newton插值多项式

N

(x)=f(

)+f[

](

)+f[

](

)(

)+……+f[

](

)(

)…(

).

其中插值余项为:

介于

之间。

三、程序设计

function[y,A,C,L]=newdscg(X,Y,x,M)

%y为对应x的值,A为差商表,C为多项式系数,L为多项式

%X为给定节点,Y为节点值,x为待求节点

n=length(X);m=length(x);%n为X的长度

fort=1:

m

z=x(t);A=zeros(n,n);A(:

1)=Y';

s=0.0;p=1.0;q1=1.0;c1=1.0;

forj=2:

n

fori=j:

n

A(i,j)=(A(i,j-1)-A(i-1,j-1))/(X(i)-X(i-j+1));

end

q1=abs(q1*(z-X(j-1)));c1=c1*j;

end

C=A(n,n);q1=abs(q1*(z-X(n)));

fork=(n-1):

-1:

1

C=conv(C,poly(X(k)));

d=length(C);C(d)=C(d)+A(k,k);

end

y(k)=polyval(C,z);%输出y值

end

L(k,:

)=poly2sym(C);%输出多项式

>>symsM,X=[1,3,5,7];Y=[22.5,24.4,25.2,24.8];x=10;

>>[y,A,C,L]=newdscg(X,Y,x,M)

y=

21.7313

A=

22.5000000

24.40000.950000

25.20000.4000-0.13750

24.8000-0.2000-0.1500-0.0021

C=

-0.0021-0.11871.452121.1688

L=

-x^3/480-(19*x^2)/160+(697*x)/480+3387/160

4、结果分析和讨论

对于不超过三次的插值多项式,x如果选取1,3,5,7这三个点能够得到较好的三次插值多项式L=-0.0021x^3-0.1187x^2+1.4521x+21.1688。

当x=10时,也即9点30分时的温度为21.7317度,结果分析知此值应是偏小的。

对于选取不同的插值节点,能够得到不同的插值多项式,误差也不尽相同。

5、完成题目的体会与收获

牛顿插值法的重要一点就是对插值节点的选取,通过本题的编程很好的加深了对其概念的理解以及提高了应用牛顿插值法的能力,学会了运用Matlab软件对牛顿插值法相关问题进行编程求解,对Matlab计算方法与程序编辑更加熟悉。

使我对这类问题的理解有了很大的提升。

题目二:

曲线拟合

在某钢铁厂冶炼过程中,根据统计数据的含碳量与时间关系,试用最小二乘法拟合含碳量与时间t的拟合曲线,并绘制曲线拟合图形。

t(分)

0510152025303540455055

01.272.162.863.443.874.154.374.514.584.024.64

2、数学原理

从整体上考虑近似函数

同所给数据点

(i=0,1,…,m)误差

(i=0,1,…,m)的大小,常用的方法有以下三种:

一是误差

(i=0,1,…,m)绝对值的最大值

,即误差向量

的∞—范数;二是误差绝对值的和

,即误差向量r的1—范数;三是误差平方和

的算术平方根,即误差向量r的2—范数;前两种方法简单、自然,但不便于微分运算,后一种方法相当于考虑2—范数的平方,因此在曲线拟合中常采用误差平方和

来度量误差

(i=0,1,…,m)的整体大小。

数据拟合的具体作法是:

对给定数据

(i=0,1,…,m),在取定的函数类

中,求

使误差

(i=0,1,…,m)的平方和最小,即

=

从几何意义上讲,就是寻求与给定点

(i=0,1,…,m)的距离平方和为最小的曲线

函数

称为拟合函数或最小二乘解,求拟合函数

的方法称为曲线拟合的最小二乘法。

在曲线拟合中,函数类

可有不同的选取方法。

三、程序设计

>>x=[0,5,10,15,20,25,30,35,40,45,50,55];

>>y=[0,1.27,2.16,2.86,3.44,3.87,4.15,4.37,4.51,4.58,4.02,4.64]*10^(-4);

>>p=polyfit(x,y,2)

p=

1.0e-04*

-0.00240.20370.2305

>>plot(x,y,'r')

4、结果分析和讨论

通过最小二乘法得到的曲线拟合多项式是p=(-0.0024x^2+0.2037x+0.2305)*10-4。

利用Matlab软件调用最小二乘法函数即可得到多项式拟合函数,由于数据较少得到的拟合曲线不够光滑,可能会存在一定的误差。

拟合曲线总体呈现增函数趋势,与数据较为吻合。

5、完成题目的体会与收获

曲线拟合较常用的方法之一就包括最小二乘法,因此能够熟练使用Matlab进行数据的曲线拟合变得尤为重要。

通过完成本题的拟合过程,对于最小二乘法曲线拟合的操作更加的熟练,能够较好的完成各类数据的拟合。

题目三:

线性方程组求解

分别利用LU分解;平方根法与改进平方根法;追赶法求解下列几个不同类型的线性方程组,并与准确值比较结果,分析误差产生原因。

(1)设线性方程组

二、数学原理

将A分解为一个下三角矩阵L和一个上三角矩阵U,即:

A=LU,

其中L=

,U=

解Ax=b的问题就等价于要求解两个三角形方程组:

 ⑴Ly=b,求y;

  ⑵Ux=y,求x。

设A为非奇异矩阵,且有分解式A=LU,L为单位下三角阵,U为上三角阵。

L,U的元素可以有n步直接计算定出。

用直接三角分解法解Ax=b(要求A的所有顺序主子式都不为零)的计算公式:

i=2,3,…,n.

计算U的第r行,L的第r列元素(i=2,3,…,n):

 

② 

 ,i=r,r+1,…,n;

i=r+1,…,n,且r≠n.

求解Ly=b,Ux=y的计算公式;

三、程序设计

functionf1=LUresolve(a,b);

[n,n]=size(a);%行数

z=size(b)%b的行数

l=[];%l矩阵

u=[];%u矩阵

forj=1:

1:

n

u(1,j)=a(1,j);

end

fori=2:

1:

n

l(i,1)=a(i,1)/u(1,1);

end

fori=2:

1:

(n-1)

sum1=0;

fork=1:

1:

(i-1)

sum1=l(i,k)*u(k,i)+sum1;

end

u(i,i)=a(i,i)-sum1;

sum2=0;

sum3=0;

forj=(i+1):

1:

n

fork=1:

1:

(i-1)

sum2=sum2+l(i,k)*u(k,j);

sum3=sum3+l(j,k)*u(k,i);

end

u(i,j)=a(i,j)-sum2;

l(j,i)=(a(j,i)-sum3)/u(i,i);

end

end

fori=1:

1:

(n-1)

l(i,i)=1;

l(i,n)=0;

end

l(n,n)=1;

sum4=0;

fork=1:

1:

(n-1)

sum4=sum4+l(n,k)*u(k,n);

end

u(n,n)=a(n,n)-sum4;

l%输出l矩阵

u%输出u矩阵

y=l\b%输出向量y

x=u\y%输出向量x

>>a=[42-3-1210000

86-5-3650100

42-2-132-1031

0-215-13-1194

-426-167-3323

86-8571726-35

02-13-425301

1610-11-917342-122

462-713920124

00-18-3-24-863-1];

>>b=[5;12;3;2;3;46;13;38;19;-21];

>>LUresolve(a,b)

z=

101

 

l=

1.0000000000000

2.00001.000000000000

1.000001.00000000000

0-2.00003.00001.0000000000

-1.00001.00004.0000-0.46671.000000000

2.00001.0000-5.0000-0.2667-1.64411.00000000

0-1.00003.0000-0.0667-0.08470.29691.0000000

4.0000-1.00006.0000-0.2667-3.76272.73033.18631.0000

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 从业资格考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1