第一章实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数值分析实验报告
第一章绪论
一、实验目的:掌握截断误差,熟悉上机matlab环境。
二、数学理论:
当数学模型不能得到精确解时,通常要用数值方法求它的近似解,其近似解与精确解之间的误差称为截断误差或方法误差。
,在x与0之间。
秦九韶算法公式:
,
,
三、实验内容:
1.计算 (n=0,1,…)。
2.=+,采用秦九韶算法,给出
求以及
四、程序分析:
1.(秦九韶算法)
2.程序设计如下:
n=input('输入n的值:');
x=input('输入x的值:');
a=3;
for i=1:n
a=2*a+3;
end
s=a;
a1=(a-3)/2;
for m=1:100
s=x*s+a1;
a1=(a1-3)/2;
end
s
在matlab中运行结果如下:>> d12
输入n的值:100
输入x的值:0.5
s =
600.0000
>> d12
输入n的值:150
输入x的值:13
s =
2.2081e+157
2.此题中令n=9计算。
X=0:0.01:1;
Y=(X.^9).*(exp(X));
h=trapz(X,Y)
I=(exp(-1))*h
I0=0.6321;%用A方案
for n=1:1:9;
Ia=1-n*I0;
end
Ia
I9=0.0684;%用B方案
for i=9:-1:1;
Ib=1/i*(1-I9);
end
Ib
I =
0.0917
Ia =
-4.6889
Ib =
0.9316
分析:n=1时初值为1-1/e.方案A中初值为0.6321,误差E0=1-1/e-0.6321初始误差较小,但误差逐步增大,所以计算不可靠。B方案中初值为0.0684初值较大,但误差逐步缩小,计算结果可靠。
五、实验总结:在数值分析中,对于计算高次幂运算,逐次运算计算量太大,运用秦九韶算法大大减少了运算量。在积分用方案A时,尽管初值相当准确,但由于误差传播是逐步扩大的,因而计算结果不可靠。在数值计算中如不注意分析误差,就会出现特大误差。所以尽管数值计算中误差比较困难,但仍应重视计算过程中的误差分析。
第二章 插值法
一、实验目的:学会数值newton 插值法、hermite 插值法、线性插值及三次插值,并应用该算法解决实际问题。
二、实验要求:对相应题目设计程序,并在matlab 环境下,对程序进行调试、修改最终达到实验目的。 三、实验数学原理:
1.Newton 法通常预先要给出一个猜测初值x 0,然后根据其迭代公式
)
()
('1k k k k x f x f x x -
=+ 产生逼近解x *的迭代数列{x k },这就是Newton 法的思想。当x 0接近x *时收敛很快,但是当x 0选择不好时,可能会发散,因此初值的选取很重要。另外,若将该迭代公式改进为:
)
()
('
1k k k k x f x f r
x x -=+其中r 为要求的方程的根的重数,这就是改进的Newton 法,当求解已知重数的方程的根时,在同种条件下其收敛速度要比Newton 法快的多。 2.hermit 插值多项式不仅满足在节点上的函数值相等而且导数值相等甚至高阶导数值也相等。
3.n 次插值(这里n=1,3): 四、实验内容:
2.在44x -≤≤上给出()x f x e =的等距节点函数表,若用二次插值求x e 的近似值,要使截断误差不超过610-,问使用函数表的步长h 应取多少? 3.设f(x)=1/(1+
)在[-5,5]上取n=10,按等距节点求分段线性插值函数I(x),
计算各节点间中点处的I(x)与f(x)的值,并估计误差。 4.给定数据表,失球hermit 插值S (x ),并满足 (1
)
(2)
1.线性插值和三次插值
x=0.4:0.1:0.8; %给出x,f(x)
f=[-0.916291,-0.693147,-0.510826,-0.357765,-0.223144];
format long
F1=interp1(x,f,0.54,'linear') %用默认方法,即线性插值计算f(x)
F2=interp1(x,f,0.54,'spline') %用三次样条插值方法计算f(x) F3=interp1(x,f,0.54,'cubic') %用三次多项式方法计算f(x)
>>d21
F1 = -0.62021860000000
F2 = -0.61597777000000
F3 = -0.61604826180425
二次插值:
>> format long;
%输入初始数据
x0=[0.4 0.5 0.6 0.7 0.8];
f0=[-0.916291 -0.693147 -0.510826 -0.356675 -0.223144];
x=0.54;%插值点
n=length(x0);
s=0;
%进入迭代计算过程
for j=0:(n-1)
t=1;
for i=0:(n-1)
if i~=j
t=t*(x-x0(i+1))/(x0(j+1)-x0(i+1));
end
end
s=s+t*f0(j+1);
end
s %显示输出结果
format short;
结果可知线性插值、二次插值、三次插值分别为F1 = -0.62021860000000
F2 = -0.61597777000000 s = -0.61614271520000
以上结果显示线性插值误差比较大,二次插值和三次插值提高了精度。
2.R(x)=1/6*e^4*[(x-x1+h)*(x-x1)*(x-x1-h)]
=1/6*e^4*[(x-x1)^3-h^2*(x-x1)]
给R(X)求导并且得出极值h^2=3(x-x1)^2
将极值带入原方程得:R(X)=(h^3*e^4)/9*sqrt(3)<10^-6
h=(9*sqrt(3)*(10^-6)*exp(-4))^(1/3);
h= 0.0066
3.clear
clc
X=linspace(-5,5,11);
Y=1./(1+X.^2);