PAGE
PAGE 1
计算方法实验报告
姓 名
学 号
系 别
数学与统计学院
班级
主讲教师
指导教师
实验日期
2019.5.9
专业
数学与应用数学
课程名称
数值计算方法
同组实验者
一、实验名称:
实验五、数值积分与微分实验
实验目的:
理解数值积分和微分的基本思想;
熟悉并掌握数值积分的MATLAB程序;
掌握一阶导数的数值计算及其MATLAB程序。
实验内容及要求:
用1阶、2阶、3阶、4阶、5阶、6阶、8阶的牛顿-科特斯公式,计算定积分,列表给出计算结果。
(课外阅读,感兴趣的同学可实现文献中的算法)
实验步骤(或记录)
1.(1)问题分析:
由于牛顿-科特斯公式如下:abfxdx
其中ck(n)=1b-a
其中主程序1是利用牛顿-科特斯公式求定积分的程序,由于科特斯系数最多7阶,为了方便我们可以直接使用,省得每次都计算,故编写主程序2来计算科特斯系数。
(2)程序:主程序1:
function [y,Ck,Ak]=NewtonCotes(fun,a,b,n)
xk=linspace(a,b,n+1);
a=min(xk);
b=max(xk);
xk=linspace(a,b,n+1);
fx=fun(xk);
Ck=cotescoeff(n);
Ak=(b-a)*Ck;
y=Ak*fx';
主程序2:
function Ck=cotescoeff(n)
for i=1:n+1
k=i-1;
Ck(i)=(-1)^(n-k)/factorial(k)/factorial(n-k)/n*quadl(@(t)intfun(t,n,k),0,n);
end
function f=intfun(t,n,k)
f=1;
for i=[0:k-1,k+1:n]
f=f.*(t-i);
end
(3)算法:
>>NewtonCotes(@(x)sin(x.*x),0,pi/2,1)
ans =
0.4903
>> NewtonCotes(@(x)sin(x.*x),0,pi/2,2)
ans =
0.7692
>> NewtonCotes(@(x)sin(x.*x),0,pi/2,3)
ans =
0.8061
>> NewtonCotes(@(x)sin(x.*x),0,pi/2,4)
ans =
0.8324
>> NewtonCotes(@(x)sin(x.*x),0,pi/2,5)
ans =
0.8305
>> NewtonCotes(@(x)sin(x.*x),0,pi/2,6)
ans =
0.8282
>> NewtonCotes(@(x)sin(x.*x),0,pi/2,8)
ans =
0.8281
结果:
利用1阶、2阶、3阶、4阶、5阶、6阶、8阶的牛顿-科特斯公式计算定积分的结果绘制成表格如下:
n
1
2
3
4
5
6
8
0.4903
0.7692
0.8061
0.8324
0.8305
0.8282
0.8281
四、教师评语(或成绩)
教师签字 :
年 月 日
推荐访问:实验报告 实验 微分 数值 实验五-数值微分与积分计算方法实验报告