-
2021-02-05 09:51:27
一、实验目的及题目
1. 实验目的:
(1) 学习用复化辛普森公式及龙贝格方法求解积分并掌握这种方法。
(2)了解这些辛普森公式及龙贝格方法的概念,参考课本写出用复化辛普森算法以及龙贝格方法计算目标题目的程序,在matlab 中实现,并用matlab 内置的函数计算出结果,并提出存在的问题。
2. 题目:
利用复化辛普森公式和龙贝格方法计算下列积分: (1)dx e x ?-5
.002
(2)dx x x ?20
2sin )2sin(cos π
二、实验用仪器设备、器材或软件环境 计算机、matlab 软件。
三、实验原理、程序框图、程序代码 1.实验原理:
根据微积分学基本定理,若被积函数f(x)在区间[a,b]上连续,只要能找到f(x)的一个原函数F(x),便可利用牛顿-莱布尼茨公式求得积分值。但会经常遇到如下问题:找不到用初等函数,找到了原函数,但因表达式过于复杂而不便计算等等。此时则不能用牛顿-莱布尼茨公式,因此有必要研究如下公式。 1)复化求积公式及原理
由于高阶插值的不稳定性,为了提高计算积分的精度,可把积分区间分为若干个
小区间,将()I f 写成这些小区间上的积分之和,然后对每一个小区间上的积分应用到辛普森公式,或柯特斯公式,并把每个小区间上的结果累加,所得到的求积公式就称为复化求积公式。
辛普森公式的数值积分公式为:
?
+++-≈
b
a
b f b a f a f a b dx x f )]()2
(
4)([6
)(
更多相关内容 -
复化辛普森公式
2018-09-04 12:08:05复化辛普森公式(.m文件) -
复化梯形公式和复化辛普森公式的对比分析与应用
2020-01-29 21:39:57复化梯形公式和复化辛普森公式的对比分析与应用,刁红,赵晓慧, 通过结合复化梯形公式和辛普森公式概念和性质的论述,将其进行对比和示例的演示,诣在了解数值分析在实际中的应用以及复化积分� -
MATLAB复化辛普森(Simpson)公式和复化梯形公式求积分
2019-12-26 09:36:22包含代码和文档 采用复化梯形公式和复化辛普森公式求积分,并与精确值进行比较得下表。 采用复化梯形公式和复化辛普森公式求积分,并与精确值进行比较得下表。 -
复化梯形公式和复化辛普森公式
2010-11-11 21:24:53复化梯形公式和复化辛普森公式 以及matlab源代码 -
辛普森_变步长辛普森_辛普森_复化Simpson公式_brushw8y_Simpson公式_
2021-10-01 09:36:24编写定步长复化Simpson公式与变步长(自适应)复化Simpson公式的通用程序,并用变步长(自适应)复化Simpson公式计算π的近似值. -
Python实现梯形公式 、辛普森公式、复化梯形公式、复化辛普森公式
2021-01-19 09:05:58数值分析:梯形公式 、辛普森公式、复化梯形公式、复化辛普森公式 Python实现梯形公式 、辛普森公式、复化梯形公式、复化辛普森公式 数值求积公式概念 梯形公式与辛普森公式 梯形公式与辛普森公式的余项 复化求积...数值分析:梯形公式 、辛普森公式、复化梯形公式、复化辛普森公式
Python实现梯形公式 、辛普森公式、复化梯形公式、复化辛普森公式
数值求积公式概念
梯形公式与辛普森公式
梯形公式与辛普森公式的余项
复化求积公式
复化梯形公式与其余项
复化辛普森公式与其余项
Python实现四种公式.
题目.
Python编写梯形公式、辛普森公式、复化梯形公式、复化辛普森公式
并利用其分别求解sqrt(x) * log(x) 与 sin(x)/x 在(0,1)上的积分。具体代码实现:
import math import numpy as np import matplotlib.pyplot as plt #待求解数值积分sqrt(x) * log(x) def f1(x): if (float(np.fabs(x))<1e-15) : return 0 y=np.sqrt(x) * np.log(x) return y #待求解数值积分sin(x)/x def f2(x): if (float(np.fabs(x)) < 1e-15): return 1 y=np.sin(x)/x return y #梯形公式 f为待求解积分 a为积分下限 b为积分上限 def TX(f,a,b): TX = 0.5 * (b - a) * (f(a) + f(b)) print("梯形公式计算结果为:TX = ", TX) #辛普森公式 f为待求解积分 a为积分下限 b为积分上限 def XPS(f,a,b): XPS = (b-a)*(f(a)+4*f((a+b)/2)+f(b))/6.0 print("辛普森公式计算结果为:XPS = ", XPS) #复化梯形公式 f为待求解积分 a为积分下限 b为积分上限 n为区间等分数 def FHTx(f,a,b,n): ti=0.0 h=(b-a)/n ti=f(a)+f(b) for k in range(1,int(n)): xk=a+k*h ti = ti + 2 * f(xk) FHTx = ti*h/2 print("复化梯形公式计算结果为:FHTx = ", FHTx) #复化辛普森公式 f为待求解积分 a为积分下限 b为积分上限 n为区间等分数 def FHXPs(f,a,b,n): si=0.0 h = (b - a) / (2 * n) si=f(a)+f(b) for k in range(1,int(n)): xk = a + k * 2 * h si = si + 2 * f(xk) for k in range(int(n)): xk = a + (k * 2 + 1) * h si = si + 4 * f(xk) FHXPs = si*h/3 print("复化辛普森公式计算结果为:FHXPs = ", FHXPs) def main(): a = input("a = ") # 积分下限 b = input("b = ") # 积分上限 a = float(a) # 强制转换为float类型 b = float(b) n = input("n = ") #将区间分成为n等份 n = float(n) #TX(f2,a,b) #调用梯形公式求解 #XPS(f2,a,b) #调用辛普森公式求解 #FHTx(f2,a,b,n) #调用复化梯形公式求解 FHXPs(f2,a,b,n) #调用复化辛普森公式求解 if __name__ == '__main__': main()
-
变步长梯形公式 复化辛普森公式 龙贝格公式 复化梯形公式
2011-04-25 22:20:35变步长梯形公式 复化辛普森公式 龙贝格公式 复化梯形公式 -
复化辛普森法计算矩形区域二重积分-Python实现
2020-09-25 11:39:53自编Python程序实现数值计算矩形区域二重积分,使用复化辛普森法。以函数f=xsiny在0和pi/2区域上的积分为例。网格节点数m,n需为2的倍数。对于非矩形区域可以使用虚拟节点和区域,填补为矩形区域后计算,填补区域上... -
【计算方法数值分析】复化梯形公式、复化辛普森公式和龙贝格数值积分
2021-05-17 22:27:03【计算方法数值分析】复化梯形公式、复化辛普森公式和龙贝格数值积分 1、 复化梯形公式 %复化梯形公式 function t=agui_trapz(fname,d2fname,a,b,e) %fname为被积函数,d2fname为函数fname的二阶导数,a,b分别为...【计算方法数值分析】复化梯形公式、复化辛普森公式和龙贝格数值积分
1、 复化梯形公式
%复化梯形公式 function t=agui_trapz(fname,d2fname,a,b,e) %fname为被积函数,d2fname为函数fname的二阶导数,a,b分别为下界和上届,e为精度 y=abs(feval(d2fname,a:1e-5:b)); m=max(y); h=abs(sqrt(12*e(b-a)./m)); n=ceil((b-a)/h) h=(b-a)/n; fa=feval(fname,a); fb=feval(fname,b); f=feval(fname,a+h:h:b-h+0.001*h); t=h*(0.5*(fa+fb)+sum(f));
2、复化辛普森公式
%复化辛普森公式 function s=agui_simpson(fname,d4fname,a,b,e) %fname为被积函数,d4fname为函数fname的四阶导数,a,b分别为下界和上届,e为精度 y=abs(feval(d4fname,a:1e-5:b)); m=max(y); h=abs((2800*e(b-a)./m).^(0.25)); n=ceil((b-a)/h) h=(b-a)/n; fa=feval(fname,a); fb=feval(fname,b); s=fa-fb; x=a; for i=1:n; x=x+h/2;s=s+4*feval(fname,x); x=x+h/2;s=s+2*feval(fname,x); end s=s*h/6;
3、龙贝格数值积分法
%龙贝格数值积分法 function r=agui_rbg(fname,a,b) %fname为被积函数,a,b分别为下界和上界 e=1e-6; i=1;j=1;h=b-a; T(i,1)=h/2*(feval(fname,a)+feval(fname,b)); T(i+1,1)=T(i,1)/2+sum(feval(fname,a+h/2:h:b-h/2+0.001*h))*h/2; T(i+1,j+1)=4^j*T(i+1,j)/(4^j-1)-T(i,j)/(4^j-1); while abs(T(i+1,i+1)-T(i,i))>e i=i+1; h=h/2; T(i+1,1)=T(i,1)/2+sum(feval(fname,a+h/2:h:b-h/2+0.001*h))*h/2; for j=1:i T(i+1,j+1)=4^j*T(i+1,j)/(4^j-1)-T(i,j)/(4^j-1); end end T r=T(i+1,j+1); end
结果分析
1.由表格比较可得出,无论是复化梯形公式、复化辛普森公式还是龙贝格积分公式,都有着较高的精度,相较之下,龙贝格积分公式精度最高。
2.数值求积的误差除了与被积函数有关之外,还与积分区间的长度(b-a)有关,积分区间越小,则求积公式的截断误差也越小。而在对积分区间作同样的分割的条件下,复合辛普生求积公式比复合梯形公式的计算精度高。
3.在计算速度方面,从表中可看出,复化梯形公式的等分数要比其它两个大得多,且从计算结果上可看出复化辛普生公式也比复化梯形公式的收敛速度快得多。
4.从计算公式复杂性而言,龙贝格数值积分公式的计算量最少。 -
复化梯形公式和复化辛普森公式的精度比较.doc
2021-10-21 14:49:32复化梯形公式和复化辛普森公式的精度比较.doc -
c++实现 复化梯形公式和复化辛普森公式积分运算
2020-12-21 09:23:341.复化梯形公式1.1代码:#include#include#includeusing namespace std;double f(double x){return sqrt(1-x*x);}//定义和修改函数f(x)double q(double a,double b,int n)//复化梯形公式{double h,x[n-2];double w=0...1.复化梯形公式1.1代码:
#include
#include
#include
using namespace std;
double f(double x){
return sqrt(1-x*x);}//定义和修改函数f(x)
double q(double a,double b,int n)//复化梯形公式
{double h,x[n-2];
double w=0;
h=(b-a)/n*1.0;
for(int i=0;i<=n-2;i++)
{x[i]=a+(i+1)*h;
w+=f(x[i]);
}return h*(f(a)+2*w+f(b))/2;
}
int main()//主函数
{while(1)
{double a,b;
int n;
cout<
cin>>a>>b>>n;
cout<
cout<
}}
1.2运行效果:
2.复化辛普森公式积分2.2代码:
#include
#include
#include
using namespace std;
double f(double x){
return sqrt(1-x*x);}//自定义积分函数
double s(double a,double b,int n)//复化辛普森公式
{ double h,x[n];
double w=0,v=0;
h=(b-a)/n*1.0;
for(int i=1;i<=n/2;i++)
{x[2*i-1]=a+(2*i-1)*h;
w+=f(x[2*i-1]);}
for(int i=1;i<=n/2-1;i++)
{x[2*i]=a+2*i*h;
v+=f(x[2*i]);}
return h*(f(a)+4*w+2*v+f(b))/3.0;
}
int main()
{while(1)
{double a,b;
int n;
cout<
cin>>a>>b>>n;
cout<
cout<
}}
2.2运行效果:
-
C++实现复化辛普森公式求积分算法
2019-09-21 20:51:21则得到复化辛普森公式: 2. 应用实例 取 n=10,利用复化辛普森公式计算积分: 3. 程序代码 # include using namespace std ; double fun ( double x ) { return 4 / ( 1 + x... -
复化辛普森公式求二重积分matlab源码及例题
2020-06-08 17:04:18复化辛普森公式求二重积分matlab源码 直接拷贝到matlab编辑器,傻瓜式操作。具体算法自行探究,网上都有,小编只提供代码。用的好的请加个关注,篱落~~成殇~~再次先行谢过。 %%%%%%%%%% 2020.6.5 %%%%%%%%% %%%%... -
复化辛普森公式计算积分
2010-04-20 19:57:01应用复化辛普森公式计算积分,定积分,不定积分 -
【数值分析实验MATLAB】数值积分:梯形公式、辛普森公式、复化梯形公式、复化辛普森公式、龙贝格算法、...
2020-01-21 17:06:50复化辛普森公式: a = 0 ; b = 1 ; e = 1e-6 ; N = 20 ; n = 0 ; h0 = ( b-a ) /2 ; S0 = h0/3* ( f1 ( a ) +f1 ( b ) +4*f1 (( a + b ) / 2 )) ; while n < N n = n+1 ; h1 = h0/2 ; sum1 = 0 ; ... -
数值分析matlab编程实现复化辛普森公式
2019-06-22 21:44:27%复化辛普森公式 function T_n = C_t_r(f,n,a,b) %f为函数,n为精度,a,b为区间端点 h=(b-a)/n; %f=sqrt(x); for i=0:n x(i+1)=a+i*h; end T_1=h/6*(f(a)+f(b)); T_2=0; T_3=0; for j=2:n &... -
自适应复化辛普森公式求积算法(C语言实现)
2019-10-12 18:44:13自适应复化辛普森公式求积算法(C语言实现)利用复化辛普森公式求积分自适应步骤基于C语言实现的代码 利用复化辛普森公式求积分自适应步骤 h为步长,a为积分下限,b为积分上限,f为积分函数,n为划分的积分次数,ε... -
变步长复化辛普森公式计算积分
2021-04-22 08:33:01变步长复化辛普森公式计算积分 matlab编程2. 编写用变步长复化辛普森公式计算积分 baf(x)dx 的程序。1用上面编写的程序计算下列积分并分析计算结果 (1)0cosxdx (2)0xcosxdx (3) 220xdx程序:function S=... -
基于Java实现通过复化梯形公式、复化辛普森公式以及精度为0.025的自动选步长梯形公式对积分求解
2020-03-31 21:24:24System.out.print("复化辛普森计算得出:"+s); } public static void certainStep(double a,double b,double eps){ boolean done = false; int n = 1; double h=b-a; double tn = h*(0.8771925739840309+fun(b))/2;... -
复化辛普森公式手动计算任意线元坐标
2017-06-16 20:25:05计算坐标 复化辛普森 任意线元 -
复化梯形公式,辛普森公式的matlab程序
2021-04-20 08:48:27复化梯形公式与辛普森公式的matlab程序【程序代码】cclc;disp('1.复化梯形公式求解');disp('2.simpson公式求解');disp('请进行选择:');c=input(' ');if c==1clc;disp('复化梯形公式');disp('请输入积分下限 ');a=... -
复化辛普森复化梯形公式 c++
2010-12-20 22:22:03对复化辛普森和复化梯形公式的C++编程 运用复化辛普森复化梯形公式解方程 -
复化梯形公式-辛普森公式的matlab程序
2021-04-26 12:36:33《复化梯形公式-辛普森公式的matlab程序》由会员分享,可在线阅读,更多相关《复化梯形公式-辛普森公式的matlab程序(2页珍藏版)》请在人人文库网上搜索。1、复化梯形公式与辛普森公式的matlab程序【程序代码】cclc;... -
编程MATLAB程序 实现复化梯形和辛普森数值积分.pdf
2020-11-11 17:08:32数值分析实验报告 [1] 掌握复化梯形和辛普森数值积分法的基本原理和方法 实 验 [2] 编程 MATLAB程序实现复化梯形和辛普森数值积分 目 的 1. 编程序实现复化梯形数值积分求积公式 function y=f(x) y=sqrt(x*log(x; 实... -
求两个matlab的程序,分别利用复化梯形公式和辛普森公式求解误差函数erf(x)。
2021-04-24 14:12:53main.mg=@(t)exp(-t.^2);x=linspace(0,5,100);y1=zeros(1,100);y2=zeros(1,100);for i = 1:100y1(i)=2/sqrt(pi)*Simpson(g,0,x(i),1000); %幸普森公式y2(i)=2/sqrt(pi)*trapezoidal(g,... %复合梯形公式endplot(x,y1...