复合辛普森求积公式
复合辛普森公式
复合辛普森公式-CAL-FENGHAI.-(YICAI)-Company One1实验5 复合辛普森公式李涛 0108 计自1201一、实验目的用复合辛普森公式计算积分dx x ⎰+4802cos 1,使误差不超过-410(注意所给积分特点,做出相应的处理后再计算)二、实验步骤1.算法原理复合辛普森原理:将区间],[b a 划分为n 等分,在每个子区间[]1,+k k x x 上采用辛普森公式,若记,2121h x x k k +=+则得 ∑⎰-===1)()(n k b a dx x f dx x f I ).()]()(4)([6121f R x f x f x f h n n k k k k +++=∑-=+ 记∑-=+++=121)]()(4)([6n k k k k n x f x f x f h S ],)()(2)(4)([6101121∑∑-=-=++++=n k n k k k b f x f x f a f h 称为复合辛普森求积公式,其余项为.),(),()2(180)(101)4(4∑-=+∈-=-=n k k k k k n n x x f h h S I f R ηη于是当],[)(4b a C x f ∈时,与复合梯形公式相似有),(),()2(180)()4(4b a f h a b S I f R n n ∈--=-=ηη 易知误差阶为4h ,收敛性是显然的,实际上,只要],[)(b a C x f ∈则可得到收敛性,即 ⎰=∞→ba n n dx x f S )(lim 此外,由于n S 中求积公系数均为正数,故知辛普森公式计算稳定。
2.算法步骤复合辛普森:首先将区间],[b a 划分为n 等分,在每个子区间[]1,+k k x x 上采用辛普森公式,若记,2121h x x k k +=+则得∑-=+++=1021)]()(4)([6n k k k k n x f x f x f h S ])()(2)(4)([6101121∑∑-=-=++++=n k n k k k b f x f x f a f h算法过程:这里将辛普森公式写为Sn()函数,然后在Solve()函数里依次计算S1,S2,S4,S6.......当相邻的精度小于eps 时退出循环,则S2n 保存结果。
复合辛普森公式matlab例题
文章标题:深度剖析复合辛普森公式在Matlab中的应用1.引言复合辛普森公式是数值分析中常用的积分逼近方法,在工程和科学领域都有广泛的应用。
本文将深入探讨复合辛普森公式的原理和在Matlab中的具体例题应用,以帮助读者全面理解该方法的实际操作和应用场景。
2.复合辛普森公式简介复合辛普森公式是一种数值积分方法,通过将积分区间分割成若干个小区间,然后在每个小区间上使用辛普森公式进行积分逼近,最终得到整个积分区间上的近似值。
其公式表达为:\[ S_n(h) = \frac{h}{3}[f(x_0) + 4\sum_{i=1}^{n/2}f(x_{2i-1}) +2\sum_{i=1}^{n/2-1}f(x_{2i}) + f(x_n)] \]其中,\(h\)为步长,\(n\)为分割的小区间数。
3. Matlab实例应用假设要对函数\(f(x) = x^3 + 2x^2 + 4x + 1\)在区间\([a, b]\)上进行积分逼近,可以通过Matlab编程实现复合辛普森公式的应用。
需要确定积分区间的上下限,然后计算步长\(h\),接着编写Matlab代码进行求解。
```matlabfunction result = simpson(f, a, b, n)h = (b - a) / n;x = a:h:b;y = f(x);result = h/3 * (y(1) + 4*sum(y(2:2:end-1)) + 2*sum(y(3:2:end-2)) + y(end));end% 调用simpson函数进行积分逼近f = @(x) x.^3 + 2*x.^2 + 4*x + 1;a = 1;b = 2; n = 4;result = simpson(f, a, b, n);disp(result);```在以上Matlab代码中,首先定义了一个名为simpson的函数,用于计算复合辛普森公式的近似积分值。
复合求积公式
§5.3 复合求积公式由于在实际计算时,不宜使用高阶的牛顿——柯特斯公式,但若积分区间较大,单独用一个低阶的牛顿——柯特斯公式来计算积分的近似值,显然精度不好,为了提高数值求积的精确度,可利用积分对区间的可加性来解决这个问题,这就是通常采用的复合求积法。
所谓复合求积法,其指导思想就是先将积分区间分成若干个小区间,在每个小区间上采用低阶求积公式进行计算,然后把所有子区间的计算结果相加得出新的求积公式,这种公式就叫做复合求积公式。
5.3.1 低阶复合求积公式1 复合梯形求积公式如果在区间(a ,b)上直接应用梯形公式则可得(a b h -=1):T 1=)]()([21b f a f h +=)]()([2b f a f a b +-若在区间(a ,b)中,增加一个结点2/)(b a c +=,则把区间(a ,b)分成两个小区间(a ,c)与(c ,b),在两个小区间上分别应用梯形公式,然后相加就会得出新的求积公式T 2:(其中2/)(2/12a b h h -==)T 2=)]()([22c f a f h ++)]()([22b f c f h + =)]()2(2)([22b f b a f a f a b +++⨯-继续增加结点,把区间(a ,b)分成4等分,(a ,x 1) 、(x 1,x 2)、 (x 2,x 3) 、(x 3,b) ,在每个小区间上分别应用梯形公式后再相加,就会得出新的求积公式:T 4=)]()([214x f a f h ++)]()([2214x f x f h ++)]()([2324x f x f h + +)]()([234b f x f h + (其中4/)(2/24a b h h -==), =)}()]43()2()43([2)({42b f b a f b a f b a f a f a b +++++++⨯-其中k x =4kh a +,(k =0,l , (4)同理,把区间(a ,b)分成8等分时,可得求积公式T 8:T 8=)835()826()87([2)({82b a f b a f b a f a f a b ++++++⨯- )}()]87()862()853()844(b f b a f b a f b a f b a f +++++++++上面我们将区间(a ,b)分成k 2等分,是为了在计算后面的数值时,充分利用到前面的数据。
matlab编程积分复合辛普森公式
matlab编程积分复合辛普森公式编程求解复合辛普森公式是一种常用的数值积分方法,在MATLAB中可以通过编写相应的代码实现。
本文将详细介绍如何使用MATLAB编程计算复合辛普森公式,并给出具体的代码实现。
我们需要了解什么是复合辛普森公式。
复合辛普森公式是一种数值积分方法,用于近似计算函数的定积分。
它是在区间[a, b]上使用多个小区间进行逼近,而不是直接在整个区间上进行逼近。
这种方法的优势在于可以提高计算精度,并且对于复杂的函数也能够得到较好的近似结果。
我们需要将整个区间[a, b]划分为n个小区间。
每个小区间的长度为h=(b-a)/n。
然后,我们可以使用复合辛普森公式来近似计算每个小区间上的定积分。
复合辛普森公式的表达式为:I = (h/6)*(f(a) + 4*f((a+b)/2) + f(b))其中,f(x)是要求解的函数。
根据复合辛普森公式的定义,我们需要对每个小区间应用该公式进行求解,并将结果累加得到最终的积分值。
在MATLAB中,我们可以通过编写以下代码来实现复合辛普森公式的求解:```matlabfunction I = composite_simpson(f, a, b, n)h = (b-a)/n;x = a:h:b;y = f(x);I = 0;for i = 1:nI = I + h/6*(y(i) + 4*y(i+1) + y(i+2));endend```上述代码中,函数composite_simpson接受四个参数:函数f、积分区间的起点a、终点b和划分的小区间数n。
其中,函数f是一个函数句柄,表示要求解的函数。
在代码中,我们首先计算出每个小区间的长度h,并生成对应的x值。
然后,通过调用函数f计算出对应的y值。
接下来,我们使用循环对每个小区间应用复合辛普森公式,并将结果累加到变量I中。
最后,我们将得到的积分值I作为函数的输出。
在使用该函数时,我们需要先定义要求解的函数,并将其作为参数传递给composite_simpson函数。
辛普森法则求积分
辛普森法则求积分
辛普森法则是一种数值积分方法,用于近似计算函数的定积分。
这种方法将定积分区间分成若干个等宽子区间,并在每个子区间内用一个二次函数逼近被积函数。
然后通过对这些二次函数进行积分,得到整个定积分的近似值。
具体而言,设被积函数为$f(x)$,积分区间为$[a,b]$,将积分区间等距地分成$2n$个子区间,每个子区间的长度为$h=\frac{b-a}{2n}$。
则辛普森法则的近似公式为:
$$
\int_a^bf(x)dx\approx\frac{h}{3}\left[f(a)+2\sum_{i=1}^{n-1}f(a+2ih)+4\s um_{i=1}^nf(a+(2i-1)h)+f(b)\right]
$$
其中$f(a)$和$f(b)$是被积函数在积分区间端点处的函数值,$f(a+2ih)$和$f(a+(2i-1)h)$是偶数项和奇数项的子区间中心点处的函数值。
这个公式可以通过简单的代数运算和积分计算得到,它的精度随着子区间数的增加而增加,当子区间数增加至一定程度时,可以得到较高的精度。
常用的复化求积公式有复化梯形公式和复化辛普森公式。
)
2
k 1
f
( xk ) f
(b)
称为复化辛普森公式。
类似于复化梯形公式余项的讨论,复化辛普森公式的 求积余项为
Rs
b a h4 2880
f
(4) ( )
a,b
显然,复化辛普森公式是收敛且稳定的.
复化求积公式的余项表明,只要被积函数f(x)及所涉及 的各阶导数在[a,b]上连续,那么复化梯形公式、复化辛普
n1
求出积分值Ik,然后将它们累加求和,用 I k 作为所求积分I
的近似值。
k 0
I
b
n1
f ( x)dx
a k0ቤተ መጻሕፍቲ ባይዱ
xk1 f ( x)dx n1 h
xk
k0 2
f ( xk ) f ( xk1)
h 2
f
(
x0
)
2(
f
(
x1
)
f (x2 ) ...
森公式所得近似值 Tn , Sn , Cn 的余项和步长的关系依次 为O(h2 ) 、O(h4 )、O(h6 ) 。因此当h→0 (即n→∞)时,Tn , Sn , Cn
都收敛于积分真值,且收敛速度一个比一个快。
例1 依次用n=8的复化梯形公式、n=4的复化辛普森公式计算
I
1 sin x dx
213等份时,用复化梯形公式计算误差不超过 1 105。
2
由于Tn 的求积系数为正,由定理2知复合梯形公式是稳定的.
4.3.2 复化辛普森公式及其误差
将积分区间[a,b]划分为n等分,记子区间 xk , xk1 的中点
用复化Simpson求积分
用复化Simpson 求积分函数1.实验目的:(1)掌握用复化Simpson 求积分函数。
(2)附加培养学生的动手能力。
2.实验要求:(1)输入:需要积分的函数,积分的上下线,区间的等分数 。
(2)输出:根据复化Simpson 原理求解的函数积分结果。
3.程序流程:(1)选择需要积分的函数; (2)输入积分函数的上限a ; (3)输入积分函数的下限b ;(4)输入积分区间需要等分数n 。
4.复化Simpson 求解原理:由于Simpson 求积公式要用到三个节点,所以每个子区间1[,]k k x x -上添加一个中点1/2k x -,即, 1/21()2k x a k h -=+-然后在每个子区间上利用Simpson 公式,并将它们想加便的:[]1/21()(1)4()()6nb k k ak hf x dx f k f xf x -=≈-++∑⎰这就是复化Simpson 公式。
** 程序中需要选择的积分函数F 1,F 2,F 3 **F 1表示函数10sin ()x f x d xx=⎰。
F 2表示函数2145ln ()xx e xf x ++++=⎰。
F 3表示函数14co s sin ()1co s x x f x d x x=+⎰。
5.操作流程图:6.分别选择函数F1、F2、F3时的运行结果。
(1)函数F1运行结果图。
(2)函数F2运行结果图。
(3)函数F3的运行结果。
7.源码#include<stdio.h>#include<math.h>//定义函数F1double f1(double x){double s;s=sin(x)/x;if(x==0){return 1;}else{return s;}}//定义函数F2double f2(double x){double s;s=(4+5*x+exp(x)+sqrt(x*x+1)+log(x))/sqrt(2*x*x+1);return s;}//定义函数F3double f3(double x){double s;s=cos(x)*sin(x)/(1+pow(cos(x),4));return s;}main(){int j,i; //for循环中循环变量int t; //用于判断选择那个函数float p,h,a,b,n,d;//p表示点间距,h表示步长,a表示上线,b表示下线,n表示等分数,d表示需要的点数。
数值分析实验复合辛普森公式报告
实验题目:用复合辛普森公式求方程的积学生姓名:***专业:信息与计算科学学号:**********完成日期:2011/11/20西安科技大学计算机科学与技术学院实验题目:利用复合辛普森公式求方程⎰-=109/4ln xdx x 的积学生姓名: 何弯弯 学号: 0908060222 完成日期:2011/10/22 1 实验目的 1、了解复合辛普森公式的方法原理;2、利用复合辛普森公式求方程⎰-=109/4ln xdx x 的积2.1 算法原理原理:将区间[a,b]等分成N 个子区间[x(k),x(k+1)](k=0,1,…..,N -1),h=(b-a )/N ,在每个子区间[x(k),x(k+1)]上使用辛普森公式,可求得结果。
辛普森公式:])(4)(2)()([6/)]()()([6/1115.01015.0∑∑∑=-=+-=+++++=++=n k n k k k n k k k k n x f x f b f a f h x f x f x f h S其中5.0+x x 是[1,+k k x x ]得中点,即2/5.0h x x k k +=+2.2 算法步骤步骤一:输入a,b,h步骤二:代入辛普森公式求的结果2.3 程序流程图3 实验结果分析4实验心得体会通过本次实验我熟悉了用复化辛普森公式求数值积分的全过程,并更加熟悉的掌握了复化辛普生公式以及原理。
使我对数值分析这门课有了进一步的理解,为以后的学习打下了良好的基础。
参考文献[1]龚尚福,贾彭涛,靳玉萍.C/C++语言程序设计.徐州:中国矿业大学出版社,2006[2]李庆阳,王能超,易大义.数值分析(第五版).北京:清华大学出版社,2008附录(源代码)复合辛普森算法代码:#include<iostream.h>#include<math.h>double get(double x){if(x==0) x=0.000000000001;return sqrt(x)*log(x);}double g(double a,double h,double b){int i,n;double sum1,sum2=0,f;n=(int)((b-a)/h);sum1=get(a+h/2);for(i=1;i<=n-1;i++) //求f(x(k))的和{ sum1+=get(a+i*h+h/2);sum2+=get(a+i*h);}f=4*sum1+2*sum2;return f;}void main(){ double a=0,b=1,h;//给定的区间,以及步长int n;while(true){cout<<"请输入要给的步长h(h>0):";cin>>h;if(h==-1)break;double I1,f1,f2,f3;n=(int)((b-a)/h);f1=get(a);cout<<f1<<endl;f2=g(a,h,b);cout<<f2<<endl;f3=get(b);cout<<f3<<endl;I1=h/6*(f1+f2+f3);//复化辛普森公式cout<<"给定步长为h="<<h<<endl;cout<<"复化辛普森公式计算结果:I="<<I1<<endl;cout<<"所分成n个区间,n="<<n<<endl;}}。
用复合辛普森公式计算积分
用复合辛普森公式计算积分
复合辛普森公式是一种计算积分非常有用的著名方法。
该方法利用多边形来表示积分,然后用低阶多项式拟合这些多边形的每个顶点,进而用多边形的节点点作为积分的小片断,再在各片断内利用省略常数来计算积分,最后把这些片断的结果相加就是总的积分值。
算法概要上,复合辛普森公式的实现方法是首先将积分区间隔分成N个小区间,即[a,b]=[x_0,x_1]U[x_1,x_2]…U[x_n-1,x_n],每个小区间上用最高阶为m的多项式进行拟合。
接下来就是计算每个小区间上拟合多项式的积分,最后将这些小积分相加,就可以得到在[a,b]上拟合多项式的积分总值。
同时,复合辛普森公式也具有许多优点,其一是该方法考虑到前一项积分的结果,给出一种累加的方式,从而有效的减少了计算量;其二是多边形的中点可以用作正常的省略常数来实现积分下降;其三是在此基础上还可以相互变换,尤其是将Gauss-Kronrod等复合的多项式来转换也是一种常用的策略。
总的来说,复合辛普森公式是一种成熟而有效的计算积分方法,它可以减少计算量,提高计算效率,是计算高斯积分和一般多维积分的首选方式。
行测辛普森公式
行测辛普森公式
行测中的辛普森公式是用于求解定积分的一种公式,也称为三点公式。
它利用区间二等分的三个点来进行积分插值。
具体来说,它适用于被积函数f(x)在所考虑的区间内具有二阶导数,并且在这个区间上,f(x)的两个一阶导数
都不变号。
辛普森公式可以表示为:
∫(a,b)f(x)dx=(b-a)/2[f(a)+f(b)+2sum(f(i/2) for i from 1 to n and i odd and i <= n)]
其中,a和b是积分的下限和上限,f(x)是被积函数,n是偶数。
在每个小
区间[a+(i-1)d, a+id]上,辛普森公式使用中点x=a+(i-1)d/2处的函数值
f(i/2)近似代替被积函数f(x)。
辛普森公式的误差可以表示为:
I-S<=1/24max(f''(x),f'(x))(b-a)^3/n^2
其中,I是积分值,S是辛普森公式的近似值,n是偶数,f''(x)和f'(x)分别
是被积函数f(x)的二阶导数和一阶导数。
这个误差公式表明,当n足够大时,辛普森公式的近似值将非常接近积分值。
需要注意的是,在使用辛普森公式时,应该确保被积函数f(x)在所考虑的区间内具有二阶导数,并且一阶导数没有变号零点。
如果不满足这些条件,辛普森公式可能不收敛或者误差较大。
辛普森求积公式
辛普森求积公式
辛普森求积公式是数值积分中一种常用的方法,它利用三点插值公式来计算被积函数的近似积分值。
具体而言,辛普森求积公式可以表示为:
∫a^b f(x)dx ≈ (b-a)/6 [f(a) + 4f((a+b)/2) + f(b)]
其中,a和b是积分区间的左右端点,f(x)是被积函数在区间[a,b]内的取值。
公式中使用了三点插值法,将积分区间[a,b]分成了两个
子区间,然后在每个子区间中应用二次插值公式来计算积分值。
辛普森求积公式的精度比较高,在被积函数光滑的情况下可以达到二阶精度,比其他一些数值积分方法更为准确。
但是它的缺点是需要将积分区间等分成偶数份,所以在非等距离的区间上可能会有误差。
- 1 -。
复合辛普森求积
第三次实验实验名称复合辛普森求积计算积分实验时间2012.05.06 姓名班级数应二班学号成绩一、实验目的,内容1.目的:学习并理解复合辛普森求积计算积分的matlab实现。
2. 内容:用matlab计算积分14ln9x xdx=-⎰(精确值-0.4444),并求出达到。
二.代码1.function Sn=ComSimpson(a,b,n)%复合辛普森求积%f表示被积函数,本题中由f.m调用%a,b分别表示积分上下限%n表示区间分割次数%sn表示该方法计算所返回的值h=(b-a)/n;for k=0:nx(k+1)=a+k*h;x_k(k+1)=x(k+1)+1/2*h;if (x(k+1)==0)|(x_k(k+1)==0)x(k+1)=10^(-10);x_k(k+1)=10^(-10);%误差精度endendS1=h/6*(f(x(1))+f(x(n+1)));%复合辛普森求积公式第一部分for i=2:nF_1(i)=h/3*f(x(i));endfor j=1:nF_2(j)=2*h/3*f(x_k(j));endS2=sum(F_1)+sum(F_2);%复合辛普森求积公式第二部分Sn=S1+S2;%算得值f的表达式由f.m(见附)文件调用。
附:function y=f(x)y=sqrt(x).*log(x);三.数值结果:在命令窗口输入如下指令时,出现如下结果Sn=ComSimpson(0,1,300)Sn =-0.4438Sn=ComSimpson(0,1,700)Sn =-0.4442四.计算结果的分析:当步长取值很小的时候,误差较大。
当步长取得越细,即区间分割的越小时,实验计算值的精度越高,即越趋近精确值。
五. 计算中出现的问题,解决方法及体会:本实验过程中,了解了复合求积公式的几个构成,以及在matlab中的实现,深化了对于该问题的理解。
一的个很简单的问题,哪怕就是一个小小符号的不注意,也不会得到结果。
复合辛普森
实验题目:复合梯形及复合辛普森求积公式学生姓名:专业:学号:完成日期:实验题目: 数值分析之复合梯形及复合辛普森求积公式 学生姓名: 学号: 完成日期: 2011.11.20 1 实验目的利用不同数值方法计算积分⎰-=194ln xdx x 。
2 实验步骤2.1 算法原理复合梯形原理:将区间],[b a 划分为n 等分,分点,,...,1,0,,n k n ab h kh a x k =-=+=在每个子区间[]()1,...,1,0,1-=+n k x x k k 上采用梯形公式[])()(2)(b f a f ab dx x f ba+-≈⎰,则得 []⎰∑⎰∑-=-=++++===ban k x x n k n k k k kf R x f x f h dx x f dx x f I 1111)()()(2)()(记])()(2)([2)]()([211101∑∑-=-=+++=+=n k k n k k k n b f x f a f hx f x f h T ,称为复合梯形公式,其余项可得),(,)(''12)(1103+-=∈⎥⎦⎤⎢⎣⎡-=-=∑k k k n k k n n x x f h T I f R ηη由于,且],[)(2b a C x f ∈,)(''max )(''1)(''min 11010∑-=-≤≤-≤≤≤≤n k k n k k k n k f f n f ηηη所以),(b a ∈∃η使∑-==1)(''1)(''n k k f n f ηη于是复合梯形公式的余项为).(''12)(2ηf h a b f R n --= 可以看出误差是2h 阶,且当dx x f T b a C x f bzn n ⎰=∈∞→)(lim ],,[)(2则即复合梯形公式是收敛的。
复化辛普森公式计算例题
复化辛普森公式计算例题复化辛普森公式是一种求解定积分的数值方法,可用于近似计算某些函数的积分值。
它采用多个区间上的插值多项式进行近似,然后通过对这些多项式的积分求和来计算原函数的积分近似值。
本文将介绍复化辛普森公式的原理和计算步骤,并通过一个具体的例题进行演示。
复化辛普森公式的原理是基于辛普森公式的推广,可以将区间[a, b]等分为n段,每两个相邻节点之间的距离为h=(b-a)/n。
在每个子区间上,使用二次多项式对函数 f(x) 进行插值,然后对插值多项式进行积分求和即可得到原函数的积分近似值。
设x0=a, x1=a+h, x2=a+2h,……,xn=a+nh=b 为等分的节点,则在每个子区间[x_i-1, x_i]上使用二次多项式进行插值:p(x) = f(x_i-1) + f'(x_i-1)(x - x_i-1) + f''(x_i-1)(x - x_i-1)^2 / 2,其中 f'(x_i-1) 和 f''(x_i-1) 分别表示 f(x_i-1) 的一阶和二阶导数。
对插值多项式 p(x) 进行积分,可得:∫[x_i-1, x_i] p(x) dx ≈ (x_i - x_i-1) / 6 * (f(x_i-1) + 4f((x_i-1 + x_i) / 2) + f(x_i)).将每个子区间上的积分值相加,即可得到原函数在整个区间[a, b]上的积分近似值:∫[a, b] f(x) dx ≈ h / 3 * [f(x0) + 4f(x1) + 2f(x2) + 4f(x3) + 2f(x4)+ … + 2f(xn-2) + 4f(xn-1) + f(xn)].在实际计算中,我们通常事先确定要划分的子区间数量 n,然后根据给定的函数 f(x) 在每个节点上的函数值进行计算。
以计算定积分∫[0, 1] x^2 dx 为例进行示范。
首先,我们需要划分区间 [0, 1],设定划分的段数 n。
复合simpson算法
第1章 复合simpson 算法研究问题阐述计算二重积分⎰⎰=b adcdxdy y x f I ),(------------------------------------(1-1)对工科生要求计算如下3个二重积分:算例1:1110()1I x y dxdy =+=⎰⎰算例2:/2200()I x y dxdy πππ=+=⎰⎰-----------------------(1-2)算例3: 1130sin()x y I dxdy x y+=+⎰⎰复化Simpson 求积公式将区间[a,b]分为n 等分,在每个子区间[x k ,x k+1]采用Simpson 公式,如果记x k+1/2 =x k + h/2,则得到(2-4):111/201[()4()2()()]6n n n k k k k h S f a f x f x f a --+===+++∑∑---------------------(2-4)分析误差知道复化Simpson 公式具有O(h 4)的精度。
复化Simpson 求积公式本方法中同样采用了二重积分的简化为两个一重积分的方法进行,程序中用3个程序实现,其中包括了函数fxy.m ,Sny.m 函数,主程序simpson.m 文件。
function gy=Sny(x,y,n,a,b,w) %N=2n temp1=0;temp2=0; h1=(b-a)/n; for k=0:n-1temp1=temp1+fxy(x(2*k+1),y,w); if k==0 temp2=0; elsetemp2=temp2+fxy(x(2*k),y,w);end;end;gy=h1/6*(fxy(a,y,w)+4*temp1+2*temp2+fxy(b,y,w));函数Sny主要实现了对应一个已知的y值后进行内层积分,也就是实现(2-6)式中的g(y)。
最外层的积分处理放在主函数里实现,既是算出式子(2-6)中的I,在程序中主要是计算出各个节点的g(y k),再按照simpson公式迭代算出I。