计算方法实验报告5版
- 格式:doc
- 大小:131.50 KB
- 文档页数:12
2013年 包头师范学院 数学科学学院 12信算本班 计算方法(Matlab)上机实验报告
第1页 计算方法(Matlab)上机实验报告
姓名:刘慧杰 班级:12信算本班 学号:1208300044
第一章
1.1 Lagrange插值 实验报告
求解的方程
function f=f1(x)
f=x/(4+x^2);
Lagrange程序
function [y0,N]=Lagrange_eval(X,Y,x0)
format long e
m=length(X);
N=zeros(m,1);
y0=0;
for i=1:m
N(i)=1;
for j=1:m
if j~=i
N(i)=N(i)*(x0-X(j))/(X(i)-X(j));
end
end
y0=y0+Y(i)*N(i);
end;
运行结果如下:
1):令 X= [0.5,0.6];Y=[-0.693147,-0.510826];x0=0.54;
2):令X=[0.4,0.5,0.6];Y=[-0.916291,-0.693147,-0.510826];x0=0.54;
3):令X=[0.4,0.5,0.6,0.7];Y=[-0.916291,-0.693147,-0.510826,-0.356675];x0=0.54;
4):令X=[0.4,0.5,0.6,0.7,0.8];
Y=[-0.916291,-0.693147,-0.510826,-0.356675,-0.223144];x0=0.54;
运行[y0,N]=Lagrange_eval(X,Y,x0)
运行结果(1)
y0 = -6.202185999999998e-01
N = 5.999999999999995e-01
4.000000000000005e-01
运行结果(2)
y0 =-6.153198399999997e-01
N =-1.200000000000001e-01
8.399999999999995e-01
2.800000000000004e-01
运行结果(3) 2013年 包头师范学院 数学科学学院 12信算本班 计算方法(Matlab)上机实验报告
第2页 y0 =-6.160284079999997e-01
N =-6.400000000000002e-02
6.719999999999994e-01
4.480000000000005e-01
-5.600000000000004e-02
运行结果(4)
y0 =-6.161427151999998e-01
N =-4.160000000000001e-02
5.823999999999994e-01
5.824000000000005e-01
-1.456000000000000e-01
2.239999999999996e-02
准确结果是:y0 = -6.160284079999997e-01
结果分析:
运行结果(1):是两点插值,具有一阶精度,精度不高。离准确值较远。
运行结果(2):是二次插值,具有二阶精度,精度较高。还不是很接近准确值。
运行结果(3):是三次插值,具有三阶精度,精度很高。接近准确值。
运行结果(4):是四次插值,具有四阶精度,精度更高。但是已经偏离准确值。
综上所述:Lagrange插值不是插值次数越多越好,插值次数如果太多的话,就会出现失真。
第二章
复化simpson公式(修改后) 和 Romberg加速算法 比较的 实验报告
求解的方程
function f=f1(x)
f=x/(4+x^2);
2.1复化simpson公式程序(修改后)
function S=FSimpson(f,a,b,N)
format long e
h=(b-a)/N;
fa=feval(f,a);
fb=feval(f,b);
S=fa+fb;
x=a;
for i=1:N
T=i;
x=x+h/2;
fx=feval(f,x);
S=S+4*fx;
x=x+h/2;
if x
fx=feval(f,x);
S=S+2*fx;
end 2013年 包头师范学院 数学科学学院 12信算本班 计算方法(Matlab)上机实验报告
第3页 end
S=h*S/6;
2.3 Romberg加速算法程序
function [quad,R]=Romberg(f,a,b,eps)
format long e
h=b-a;
R(1,1)=h*(feval(f,a)+feval(f,b))/2;
M=1;J=0;err=1;
while err>eps
J=J+1;
h=h/2;
S=0;
for p=1:M
x=a+h*(2*p-1);
S=S+feval(f,x);
end
R(J+1,1)=R(J,1)/2+h*S;
M=2*M;
for k=1:J
R(J+1,k+1)=R(J+1,k)+(R(J+1,k)-R(J,k))/(4^k-1);
end
err=abs(R(J+1,J)-R(J+1,J+1));
end
quad=R(J+1,J+1);
运行结果如下:
令:f=@f1;
a=0;b=1; eps=10^-15;
1) N=16;
2) N=64;
3) N=1024;
4) N=2048;
运行:一:S=FSimpson(f,a,b,N)
二:[quad,R]=Romberg(f,a,b,eps)
运行结果(一)
运行结果(1)
S =1.115717780016748e-01
运行结果(2)
S =1.115717756662571e-01
运行结果(3)
S = 1.115717756571050e-01
运行结果(4)
S = 1.115717756571049e-01
运行结果(二)
quad = 1.115717756571049e-01 2013年 包头师范学院 数学科学学院 12信算本班 计算方法(Matlab)上机实验报告
第4页 R =
Columns 1 through 3
1.000000000000000e-01 0 0
1.088235294117647e-01 1.117647058823530e-01 0
1.108922705014566e-01 1.115818508646873e-01 1.115696605301763e-01
1.114023545295480e-01 1.115723825389118e-01 1.115717513171934e-01
1.115294485718600e-01 1.115718132526307e-01 1.115717753002119e-01
1.115611956442211e-01 1.115717780016749e-01 1.115717756516111e-01
1.115691307637255e-01 1.115717758035603e-01 1.115717756570194e-01
Columns 4 through 6
0 0 0
0 0 0
0 0 0
1.115717845042890e-01 0 0
1.115717756808947e-01 1.115717756462932e-01 0
1.115717756571889e-01 1.115717756570959e-01 1.115717756571065e-01
1.115717756571052e-01 1.115717756571049e-01 1.115717756571049e-01
Column 7
0
0
0
0
0
0
1.115717756571049e-01
准确结果是: S = 1.115717756571049e-01
结果分析:
综上所述:如果采用复化simpson公式,当等分2048个区间时,其结果达到我们想要的结果,但是当其过程浪费大量的时间,而采用Romberg加速算法时,其仅等分64个区间,可想而知,其算法的核心思想是多么的重要,Romberg加速算法好于复化simpson公式。
第三章
二阶Adams预报校正系统和 改进的四阶Adams预报校正系统 比较的实验报告
求解的方程
function z=f3(x,y)
z=-y+x+1;
function y=solvef3(x)
y=exp(-x)+x;
3.3 二阶Adams 预报校正系统 程序
function A=Adams2PC(f,a,b,N,ya)
format long
tic