数值分析与实验(数学081 张燃 3080801119)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
08级应用数学《数值分析与实验(实践)》任务书
一、设计目的
通过《数值分析与实验(实践)》实践环节,掌握本门课程的众多数值解法和原理,并通过编写C 语言或matlab 程序,掌握各种基本算法在计算机中的具体表达方法,并逐一了解它们的优劣、稳定性以及收敛性。在熟练掌握C 语言或matlab 语言编程的基础上,编写算法和稳定性均佳、通用性强、可读性好,输入输出方便的程序,以解决实际中的一些科学计算问题。
二、设计教学内容
1、利用所给数据进行数据的多项式和可转化成多项式形式的函数拟合;
试分别用抛物线2y cx bx a ++=和指数曲线bx
ae y =拟合下列数据
i x 1 1.5 2 2.5 3 3.5 4 4.5 i y 33.4 79.50 122.65 159.05 189.15 214.15 238.65 252.50
i x 5 5.5 6 6.5 7 7.5 8 i y
267.55 280.50 296.65 301.40 310.40 318.15 325.15
比较2个拟合函数的优劣。
三、设计时间
2011—2012学年第1学期: 第16周 共计一周
教师签名:
2010年12月12日
前言
数值计算方法是一种利用计算机解决数学问题的数值近似解方法,特别是无法用人工过计算器计算的数学问题。数值计算方法常用于矩阵高次代数方程矩阵特征值与特征向量的数值解法,插值法,线性方程组迭代法,函数逼近,数值积分与微分,常微分方程初值问题数值解等。
作为数学与计算机之间的一条通道,数值计算的应用范围已十分广泛,作为用计算机解决实际问题的纽带,数值算法在求解线性方程组,曲线拟合、数值积分、数值微分,迭代方法、插值法、拟合法、最小二乘法等应用广泛。
数值计算方法是和计算机紧密相连的,现代计算机的出现为大规模的数值计算创造了条件,集中而系统的研究适用于计算机的数值方法是十分必要的。数值计算方法是在数值计算实践和理论分析的基础上发展起来的。
通过数值计算方法与实验将有助于我们理解和掌握数值计算方法基本理论和相关软件的掌握,熟练求解一些数学模和运算。并提高我们的编程能力来解决实际问题。
摘要
对于本次计算方法与实习的实践环节,我们采用最小二乘法对给定的数据进行拟合,在MATLAB程序下分别用抛物线与指数函数拟合。通过误差平方和分析,我们发现本组数据在抛物线下拟合程度较好。通过本次实践环节,我们很好的了解了最小二乘法的原理。出色的完成了本次课程设计。
[关键字]:最小二乘法;拟合函数;抛物线;指数曲线
目录
前言 (1)
摘要 (2)
实验设计内容 (4)
一.曲线拟合研究 (4)
1.1实验目的 (4)
1.2实验内容 (4)
1.3算法 (4)
1.4Matlab程序 (5)
1.4.1抛物线拟合运行结果 (6)
1.4.2指数函数拟合运行结果 (6)
1.5结果分析 (7)
1.5.1抛物线的误差平方和分析 (7)
1.5.2指数函数的误差平方和分析 (7)
参考文献 (9)
实验设计内容
一:曲线拟合研究
1.1 实验目的:了解最小二乘法的基本原理,通过计算机解决实
际问题;
1.2 实验内容:利用所给数据进行数据的多项式和可转化成多项
式形式的函数拟合
试分别用抛物线2y cx bx a ++=和指数曲线bx
ae y =拟合下列数据
i x 1 1.5 2 2.5 3 3.5 4 4.5 i y 33.4 79.50 122.65 159.05 189.15 214.15 238.65 252.50
i x 5 5.5 6 6.5 7 7.5 8 i y
267.55 280.50 296.65 301.40 310.40 318.15 325.15
比较2个拟合函数的优劣。
1.3 算法
已知数据()()n j y x i i ...,21,,,
=,求多项式()()
n m x a P m
i i i <=∑=0x ,使得
()2
1010,...,∑∑==⎪
⎭
⎫
⎝⎛-=Φn
j j i j m i i m y x a a a a 为最小。注意到此时()k
k x x =ϕ,多项式
系数m a a a ,...,10满足下面的线性方程组:
⎥⎥⎥⎥⎦
⎤
⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡
++m m m m m
m m T T T a a a S S S S S S S S S .....................
(101021)
12110
∑==n
j k j
k x S 1 ()m k 2,...,2,1,0=
∑==n j k j
j k x y T 1
()m k ,...,2,1,0=
然后只要调用解线性方程组的函数程序即可。
1.4 Matlab 程序如下:
function ZXE(x,y,m)
S=zeros(1,2*m+1);T=zeros(m+1,1); for k=1:2*m+1
S(k)=sum(x.^(k-1)); end
for k=1:m+1
T(k)=sum(x.^(k-1).*y); end
A=zeros(m+1,m+1);a=zeros(m+1,1); for i=1:m+1 for j=1:m+1
A(i,j)=S(i+j-1); end end a=A\T; for k=1:m+1
fprintf('a[%d]=%f\n',k,a(k));