matlab 复合辛普森公式,复合梯形和复合辛普森MATLAB程序.doc
####
實 驗 報 告
課程名稱數值分析實驗項目名稱數值積分實驗類型上機實驗學時班級學號姓名指導教師實驗室名稱實驗時間2014.11.19實驗成績預習部分實驗過程
表現實驗報告
部分總成績教師簽字日期
實驗三 數值積分
一.數值積分的基本思想
1.復合梯形公式:Tn=2;
2.復合辛普森公式:Sn=[f(a)+f(b)+2+4];
以上兩種算法都是將a-b之間分成多個小區間(n),則h=(b-a)/n,xk=a+kh, xk+1/2=a+(k+1/2)h,利用梯形求積根據兩公式便可。
3.龍貝格算法:在指定區間內將步長依次二分的過程中運用如下公式
(1)Sn=T2n-Tn
(2)Cn=S2n-Sn
(3)Rn=C2n-Cn4
T =T - T,k = 1,2,…
二、計算流程圖
1、復合梯形和復合辛普森算法框圖:
下圖是龍貝格算法框圖:
自適應辛普森積分算法流程框圖:
二.實驗題目及實驗目的
實驗題目:用不同數值方法計算積分 = -。
(1)取不同的步長h。分別用復合梯形及復合辛普森求積計算積分,給出誤差中關于h的函數,并與積分精確值比較兩個公式的精度,是否存在一個最小的h,使得精度不能再被改善?
(2)用龍貝格求積計算完成問題(1)。
(3)用自適應辛普森積分,使其精度達到10。
實驗目的:
了解并掌握matlab軟件的基本編程、操作方法;
初步了解matlab中的部分函數,熟悉循環語句的使用;
通過上機進一步領悟用復合梯形、復合辛普森公式,以及用龍貝格求積
方法計算積分的原理。
三.實驗手段:
指操作環境和平臺:win7系統下MATLAB R2009a
程序語言:一種類似C語言的程序語言,但比C語言要寬松得多,非常方便。
四.程序
①復合梯形求積程序
function t=TiXing_quad(a,b,.h)
format long
x=a:h:b;
y=sqrt(x).*log(x);
y(1)=0;
t=0;
for k=1:(b-a)/h,
t= t+y(k)+y(k+1);
end
t=t*h/2;
②復合辛普森求積程序
function s=Simpson_quad(a,b,h)
format long
x=a:h:b;
y=sqrt(x).*log(x);
z=sqrt(x+h/2).*log(x+h/2);
y(1)=0;
s=0;
for k=1:(b-a)/h,
s= s+y(k)+y(k+1)+4*z(k);
end
s=s*h./6;
③龍貝格求積程序
function [q,R]=Romberg(a,b,eps)
h=b-a;
R(1,1)=h*(0+sqrt(b).*log(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+sqrt(x).*log(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
q=R(J+1,J+1);
控制臺輸入代碼:
(1)
>> a=0;
>> b=1;
>> h=0.2;
>> t=TiXing_quad(a,b,h)
>> s=Simpson_quad(a,b,h)
>> h=0.02;
>> t=TiXing_quad(a,b,h)
>> s=Simpson_quad(a,b,h)
>> h=0.002;
>> t=TiXing_quad(a,b,h)
>> s=Simpson_quad(a,b,h)
(2)
>> a=0;
>> b=1;
>> eps=10^-8;
>> [quad,R]=Romberg(a,b,eps)
(3)
>> a=0;
>> b=1;
>> eps=10^-4;
>> q=ZiShiYingSimpson('sqrt(x).*log(x)',a,b,eps)
實驗結果比較與分析
(1)
h = 0.2時,結果如下:
h = 0.02時,結果如下:
h = 0.002時;得到的結果如下:
由結果(1)可知對于同一步長h,復合辛普森法求積分精度明顯比復合梯形法求積的精度要高,且當步長取不
總結
以上是生活随笔為你收集整理的matlab 复合辛普森公式,复合梯形和复合辛普森MATLAB程序.doc的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: patch命令用法
- 下一篇: 程序员面试系列——单链表的反转