龙贝格算法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数值分析实验报告

实验3 数值积分

3.1 实验目的

通过本实验理解数值积分与微分的基本原理。掌握数值积分中常见的复合求积公式的编程实现。

掌握龙贝格算法的基本思路和迭代步骤;

培养编程与上机调试能力。

3.2 算法描述

3.2.1 龙贝格算法基本思路

(1)将区间[]b a ,划分为n 等分,分点:()n x x 0;根据梯形公式

()()()⎥⎦

⎤⎢⎣⎡+-=∑-=1122n k k n b f x f a f h T ,求出n T ,再根据n T 和n T 2之间的递推公式()∑-=++=10

21222n k k n n x f h T T 求出n T 2; (2)设m 为加速次数,k 为划分区间次数,则由加速公式:()()()k m m k m m m k m T T T 111

41144-----=( ,2,1=k )求出第k 次划分,第m 次加速次数的梯形值()k m T ,这样不断地循环,直到求出在满足精度条件下的某个()k m T 作为积分值为止。

3.2.2 龙贝格算法计算步骤

1.输入MATLAB 程序

function[t]=romberg(f,a,b,e)

t=zeros(15,4);

t(1,1)=(b-a)/2*(f(a)+f(b));

for k=2:4

sum=0;

for i=1:2^(k-2)

sum=sum+f(a+(2*i-1)*(b-a)/2^(k-1));

end

t(k,1)=0.5*t(k-1,1)+(b-a)/2^(k-1)*sum;

for i=2:k

t(k,i)=(4^(i-1)*t(k,i-1)-t(k-1,i-1))/(4^(i-1)-1);

end

end

for k=5:15

sum=0;

for i=1:2^(k-2)

sum=sum+f(a+(2*i-1)*(b-a)/2^(k-1));

end

t(k,1)=0.5*t(k-1,1)+(b-a)/2^(k-1)*sum;

for i=2:4

t(k,i)=(4^(i-1)*t(k,i-1)-t(k-1,i-1))/(4^(i-1)-1);

end

if k>6

if abs(t(k,4)-t(k-1,4))

disp(['答案',num2str(t(k,4))]);

break;

end

end

end

if k>=15

disp(['溢出']);

end

2.输入f=inline('sin(x)/x','x')

f =

Inline function:

f(x) = sin(x)/x

>> romberg(f,10^(-100),1,5*10^(-7))

3.运行结果为0.94608

3.3 实验内容

用龙贝格算法计算:

1 0sin x

I dx

x

=⎰

3.4 实验步骤

3.4.1 代码

程序:

function[t]=romberg(f,a,b,e)

t=zeros(15,4);

t(1,1)=(b-a)/2*(f(a)+f(b));

for k=2:4

sum=0;

for i=1:2^(k-2)

sum=sum+f(a+(2*i-1)*(b-a)/2^(k-1));

end

t(k,1)=0.5*t(k-1,1)+(b-a)/2^(k-1)*sum;

for i=2:k

t(k,i)=(4^(i-1)*t(k,i-1)-t(k-1,i-1))/(4^(i-1)-1);

end

end

for k=5:15

sum=0;

for i=1:2^(k-2)

sum=sum+f(a+(2*i-1)*(b-a)/2^(k-1));

end

t(k,1)=0.5*t(k-1,1)+(b-a)/2^(k-1)*sum;

for i=2:4

t(k,i)=(4^(i-1)*t(k,i-1)-t(k-1,i-1))/(4^(i-1)-1);

end

if k>6

if abs(t(k,4)-t(k-1,4))

disp(['答案',num2str(t(k,4))]);

break;

end

end

end

if k>=15

disp(['溢出']);

end

3.4.2 实验结果

0.94608

3.5 实验体会

本次试验使我认识到了计算机计算能力的强大,通过本次实验对数值积分与微分的基本原理有了深刻理解。基本上掌握数值积分中常见的复合求积公式的编程方法。掌握了龙贝格算法的基本思路和迭代步骤;使自己编程与上机调试能力有了很大提高。

THANKS !!!

致力为企业和个人提供合同协议,策划案计划书,学习课件等等

打造全网一站式需求

欢迎您的下载,资料仅供参考

相关文档
最新文档