计算方法实验报告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