复化辛普森求积公式的Matlab实现
- 格式:doc
- 大小:13.00 KB
- 文档页数:1
佛山科学技术学院实验报告课程名称_______________ 数值分析________________________实验项目_______________ 数值积分____________________专业班级机械工程姓名余红杰学号2111505010 指导教师陈剑成绩日期月日一、实验目的b1、理解如何在计算机上使用数值方法计算定积分 a f ""X的近似值;2、学会复合梯形、复合Simpson和龙贝格求积分公式的编程与应用。
3、探索二重积分.11 f (x, y)dxdy在矩形区域D = {( x, y) | a _ x _ b, c _ y _ d}的数值D积分方法。
二、实验要求(1)按照题目要求完成实验内容;(2)写出相应的Matlab程序;(3)给出实验结果(可以用表格展示实验结果);(4)分析和讨论实验结果并提出可能的优化实验。
(5)写出实验报告。
三、实验步骤1、用不同数值方法计算积xln xdx =-- 0 9(1)取不同的步长h,分别用复合梯形及复合辛普森求积计算积分,给出误差中关于h的函数,并与积分精确值比较两公式的精度。
(2)用龙贝格求积计算完成问题(1 )。
2、给出一种求矩形区域上二重积分的复化求积方法,然后计算二重积分..e"y dxdy,其中积分区域D二{0乞x岂1,0岂y乞1}。
1.%lnt_t.m复化梯形:function F = Int_t(x1,x2,n)%复化梯形求积公式% x1,x2为积分起点和中点%分为n个区间,没选用步长可以防止区间数为非整数。
%样点矩阵及其函数值:x = lin space(x1,x2 ,n+1);y = f(x);m = len gth(x);%本题中用Matlab计算端点位置函数值为NaN,故化为零: y(1) = 0;y(m) = 0;%算岀区间长度,步长h:h = (x2 -x1)/n;a = [1 2*o nes(1,m-2) 1];%计算估计的积分值:F = h/2*sum(a.*y);%f.mfun cti on y = f(x)y = sqrt(x).*log(x);%run 11.mclc,clear;%分为10个区间,步长0.1的积分值:F = In t_t(0,1,10);F10 = F%分为100个区间F = In t_t(0,1,100);F100 = F%误差计算W10 = abs((-4/9)-F10);W100 = abs((-4/9)-F100);W = [W10 W100]%复化辛普森:%l nt_s.mfun cti on F = In t_s(x1,x2 ,n)%复化梯形求积公式% x1,x2区间,分为n个区间。
复合梯形公式、复合⾟普森公式matlab 1. ⽤1阶⾄4阶Newton-Cotes公式计算积分程序:function I = NewtonCotes(f,a,b,type)%syms t;t=findsym(sym(f));I=0;switch typecase 1,I=((b-a)/2)*(subs(sym(f),t,a)+subs(sym(f),t,b));case 2,I=((b-a)/6)*(subs(sym(f),t,a)+4*subs(sym(f),t,(a+b)/2)+...subs(sym(f),t,b));case 3,I=((b-a)/8)*(subs(sym(f),t,a)+3*subs(sym(f),t,(2*a+b)/3)+...3*subs(sym(f),t,(a+2*b)/3)+subs(sym(f),t,b));case 4,I=((b-a)/90)*(7*subs(sym(f),t,a)+...32*subs(sym(f),t,(3*a+b)/4)+...12*subs(sym(f),t,(a+b)/2)+...32*subs(sym(f),t,(a+3*b)/4)+7*subs(sym(f),t,b));case 5,I=((b-a)/288)*(19*subs(sym(f),t,a)+...75*subs(sym(f),t,(4*a+b)/5)+...50*subs(sym(f),t,(3*a+2*b)/5)+...50*subs(sym(f),t,(2*a+3*b)/5)+...75*subs(sym(f),t,(a+4*b)/5)+19*subs(sym(f),t,b));case 6,I=((b-a)/840)*(41*subs(sym(f),t,a)+...216*subs(sym(f),t,(5*a+b)/6)+...27*subs(sym(f),t,(2*a+b)/3)+...272*subs(sym(f),t,(a+b)/2)+...27*subs(sym(f),t,(a+2*b)/3)+...216*subs(sym(f),t,(a+5*b)/6)+...41*subs(sym(f),t,b));case 7,I=((b-a)/17280)*(751*subs(sym(f),t,a)+...3577*subs(sym(f),t,(6*a+b)/7)+...1323*subs(sym(f),t,(5*a+2*b)/7)+...2989*subs(sym(f),t,(3*a+4*b)/7)+...1323*subs(sym(f),t,(2*a+5*b)/7)+...3577*subs(sym(f),t,(a+6*b)/7)+751*subs(sym(f),t,b));endsyms xf=exp(-x).*sin(x);a=0;b=2*pi;I = NewtonCotes(f,a,b,1)N=1:I =N=2:I =N=3:I =(pi*((3*3^(1/2)*exp(-(2*pi)/3))/2 - (3*3^(1/2)*exp(-(4*pi)/3))/2))/4N=4:I =(pi*(32*exp(-pi/2) - 32*exp(-(3*pi)/2)))/452. 已知,因此可以通过数值积分计算的近似值。
第三次实验实验名称复合辛普森求积计算积分实验时间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中的实现,深化了对于该问题的理解。
一的个很简单的问题,哪怕就是一个小小符号的不注意,也不会得到结果。
佛山科学技术学院实 验 报 告课程名称 数值分析 实验项目 数值积分专业班级 机械工程 姓 名 余红杰 学 号 2111505010 指导教师 陈剑 成 绩 日 期 月 日一、实验目的1、理解如何在计算机上使用数值方法计算定积分⎰badxx f )(的近似值;2、学会复合梯形、复合Simpson 和龙贝格求积分公式的编程与应用。
3、探索二重积分⎰⎰Ddxdy y x f ),(在矩形区域},|),{(d y c b x a y x D ≤≤≤≤=的数值积分方法。
二、实验要求(1) 按照题目要求完成实验内容; (2) 写出相应的Matlab 程序;(3) 给出实验结果(可以用表格展示实验结果); (4) 分析和讨论实验结果并提出可能的优化实验。
(5) 写出实验报告。
三、实验步骤1、用不同数值方法计算积分149xdx =-(1)取不同的步长h ,分别用复合梯形及复合辛普森求积计算积分,给出误差中关于h 的函数,并与积分精确值比较两公式的精度。
(2)用龙贝格求积计算完成问题(1)。
2、给出一种求矩形区域上二重积分的复化求积方法,然后计算二重积分xyDedxdy -⎰⎰,其中积分区域{01,01}D x y =≤≤≤≤。
1.%Int_t.m 复化梯形:function F = Int_t(x1,x2,n)% 复化梯形求积公式% x1,x2 为积分起点和中点%分为n个区间,没选用步长可以防止区间数为非整数。
%样点矩阵及其函数值:x = linspace(x1,x2,n+1);y = f(x);m = length(x);%本题中用Matlab计算端点位置函数值为NaN,故化为零:y(1) = 0;y(m) = 0;%算出区间长度,步长h:h = (x2 -x1)/n;a = [1 2*ones(1,m-2) 1];%计算估计的积分值:F = h/2*sum(a.*y);%f.mfunction y = f(x)y = sqrt(x).*log(x);%run11.mclc,clear;%分为10个区间,步长0.1的积分值:F = Int_t(0,1,10);F10 = F%分为100个区间F = Int_t(0,1,100);F100 = F%误差计算W10 = abs((-4/9)-F10);W100 = abs((-4/9)-F100);W = [W10 W100]%复化辛普森:%Int_s.mfunction F = Int_s(x1,x2,n)% 复化梯形求积公式% x1,x2 区间,分为n个区间。
文章标题:深度剖析复合辛普森公式在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的函数,用于计算复合辛普森公式的近似积分值。
分别用复化梯形公式、复化Simpson 公式计算定积分dx e x ⎰+201,取n=2,4,8,16分别验证结果(精确值I=4.006994)。
复化梯形公式求定积分:
function I=tquad(x,y)
%复化梯形求积公式,其中,
%x 为向量,被积函数自变量的等距结点; %y 为向量,被积函数在结点处的函数值; n=length(x);
m=length(y);
%积分自变量的结点数应与它的函数值的个数相同 h=(x(n)-x(1))/(n-1);
a=[1 2*ones(1,n-2) 1];
I=h/2*sum(a.*y);
复化Simpson 公式求定积分:
function I=squad(x,y)
%复化Simpson 求积公式,其中,
%x 为向量,被积函数自变量的等距结点; %y 为向量,被积函数在结点处的函数值; n=length(x);
m=length(y);
%积分自变量的结点数应与它的函数值的个数相同 if rem(n-1,2)~=0
I=tquad(x,y);
return;
end
N=(n-1)/2;
h=(x(n)-x(1))/N;
a=zeros(1,n);
for k=1:N
a(2*k-1)=a(2*k-1)+1;
a(2*k)=a(2*k)+4;
a(2*k+1)=a(2*k+1)+1;
end
I=h/6*sum(a.*y);。
Matlab中梯形求积公式和辛普森公式命令概述梯形求积公式和辛普森公式是数值积分中常用的近似计算方法,在M a tl ab中有相应的函数可以方便地进行计算。
本文将介绍如何使用M a tl ab中的梯形求积公式和辛普森公式命令进行数值积分计算。
梯形求积公式梯形求积公式是一种基于梯形近似的数值积分方法,其基本思想是将曲线下的面积近似为一系列梯形的面积之和。
在M at la b中,可以使用`t ra pz`函数来计算梯形求积公式。
命令格式```m at la bI=tr ap z(x,y)```参数说明-`x`:X轴上的数据点,可以是等间隔的向量或数组。
-`y`:与`x`对应的Y轴上的数据点,大小与`x`相同。
示例假设有一组数据点`x`和相应的函数值`y`,我们需要计算曲线在`x`范围内的面积。
```m at la bx=li ns pa ce(0,2*pi,100);y=si n(x);I=tr ap z(x,y);```解读示例上述示例中,我们通过`li ns pa ce`函数创建了一个包含100个等间距数据点的向量`x`,然后计算出对应的`s in(x)`值作为函数值`y`。
最后使用`tr ap z`函数计算了梯形求积公式的结果,存储在变量`I`中。
该结果即为曲线在`x`范围内的面积近似值。
辛普森公式辛普森公式是一个更精确的数值积分方法,它使用二次多项式逼近函数曲线来计算曲线下面积。
在Ma tl ab中,可以使用`qu ad`函数来进行辛普森公式的计算。
命令格式```m at la bI=qu ad(f un,a,b)```参数说明-`fu n`:用于计算函数值的函数句柄或函数表达式。
-`a`:积分下限。
-`b`:积分上限。
示例假设有一个函数`f(x)=x^2+2x+1`,我们需要计算其在区间`[0,5]`内的面积。
```m at la bf u n=@(x)x^2+2*x+1;I=qu ad(f un,0,5);```解读示例上述示例中,我们定义了一个匿名函数`f u n`,用来表示函数`f(x)=x^2+2x+1`。
matlab辛普森法求积分
Matlab辛普森法是一种数值积分方法,用于计算函数的定积分。
它基于函数在积分区间上的二次多项式逼近,通过对这个多项式进行数值积分来近似原函数的积分值。
这种方法比其他数值积分方法更准确,特别是在函数具有高阶导数时更为适用。
在Matlab中,使用simpson函数可以实现辛普森法求积分。
该函数将积分区间分成若干个小区间,并在每个小区间内使用三点拟合进行积分。
最后,将这些小区间的积分值相加得到整个积分的近似值。
使用Matlab辛普森法求积分的步骤如下:
1. 定义需要求积分的函数f(x),以及积分区间a和b。
2. 使用simpson函数进行数值积分,语法为I = simpson(f, a, b)。
其中,I为积分的近似值。
3. 根据需要,可以调整simpson函数的其他参数,如分区间数量等,以获得更准确的积分近似值。
总之,Matlab辛普森法是一种简单而有效的数值积分方法,可用于求解各种类型的定积分。
- 1 -。
(一)实验目的熟悉并掌握数值积分的方法,重要训练复化梯形公式,复化simpson 公式以及romberg 积分。
(二)问题描述问题三数值积分椭圆周长的计算。
考虑椭圆,为计算其周22221x y a b+=长,只要计算其第一象限的长度即可.用参数方程可以表示为,cos (0/2)sin x a t t y b t π=⎧≤≤⎨=⎩计算公式为/0π⎰为计算方便,我们可以令,即计算下面的积分1a =/0π⎰/0π=⎰(可以归结为上面的/0π⎰/0a π=⎰形式)采用复化梯形公式,复化Simpson 公式以及Romberg 积分的方法计算积分/0()I b π=⎰给出通用程序,该通用程序可以计算任何一个函数在任意一个区间在给定的精度下的数值积分。
程序输出为计算出的数值积分值以及计算函数值的次数。
(三)算法介绍首先利用给出的各迭代公式,设计程序。
在matlab 对话框中输入要计算的函数,给出区间和精度。
复化梯形的迭代公式为:;∫b a f(x)dx =ℎ/2[f (a )+2∑n ‒1j =1f (x j )+f(b)]复化simpson 迭代公式为:;∫b a f(x)dx =ℎ/3[f (a )+2∑(n 2)‒1j =1f (x 2j )+4∑(n 2)j =1f (x 2j ‒1)+f(b)]Romberg 迭代公式为:。
R k,j =R k,j ‒1+R k,j ‒1—R k ‒1,j ‒14j ‒1-1(四)程序对于复化梯形公式和复化simpson 公式,我们放在jifenn.m 中。
(%标记后的程序可用来把b 看为变量时的算法实现)%复化梯形公式function y=jifenn(f,n,a,b) (说明:f 表示任一函数,n 精度,a ,b 为区间)fi=f(a)+f(b);h=(b-a)/n;d=1;%function f=jifen(n,a,b,c)%syms t%y=sqrt(1+(c^2-1)*cos(t)^2);%ya=subs(y,t,a);%yb=subs(y,t,b);%fi=ya+yb;for i=1:n-1x=a+i*h;fi=fi+2*f(x);d=d+1;%yx=subs(y,t,x);%fi=fi+2*yx;endf4=h/2*fi,d%复化simposon 公式f1=0;f2=0;dd=1;for i=1:n-1dd=dd+1;if rem(i,2)~=0;x1=a+i*h;f1=f1+f(x1);else rem(i,2)==0;x2=a+i*h;f2=f2+f(x2) ;endendf3=(h/3)*(f(a)+4*f1+2*f2+f(b)),dd对于romberg积分,建立romberg.m文件。