微积分数字实现方法c语言,编程实现数值积分的几种--方法c语言.doc-资源下载在线文库www.lddoc.cn...

编程实现数值积分的几种--方法 c语言.doc

第二篇 数学试验 第 2 章 数学试验 2.2 实验 2 一元微积分的编程实现 1 编程实现数值积分的几种 方法 c 语言 数值计算 2010-11-05 095243 阅读 385 评论 1 字号 大 中 小 订阅 复化梯形公式 在区间 不大时 , 用梯形公式、辛卜生公式计算定积分是简单实用的 , 但当区间 较大时 , 用梯形公式、辛卜生公式计算定积分达不到精确度要求 . 为了提高计算的精确度,我们将 a,b 区间 n 等分,在每个小区间上应用梯形公式、辛卜生公式计算定积分,然后将其结果相加,这样就得到了复化梯形公式和复化辛卜生公式。 1. 复化梯形公式 将积分区间 等分 , 设 , 则节点为 对每个小区间上应用梯形公式 , 然后将其结果相加,则得 3.14 称 3.14 式为复化梯形公式 . 当 在 a,b 上有连续的二阶导数时,则复化梯形公式 3.14 的余项推导如下 第二篇 数学试验 第 2 章 数学试验 2.2 实验 2 一元微积分的编程实现 2 因为 所以在区间 a,b 上公式 3.14 的误差为 又因为 在区间 a,b 上连续,由连续函数的性质知,在区间 a,b 上存在一点 , 于是 ( 3.15 ) 复化梯形公式,复化抛物线公式和 Romberg 求积法的算法程序 以下程序均定义误差限为 1*10-5; 1复化梯形公式 include include 第二篇 数学试验 第 2 章 数学试验 2.2 实验 2 一元微积分的编程实现 3 define e 1e-5 define a 0 积分下限 a define b 1 积分上限 b define fx 4/1x*x 被积函数 fx int main int i,n; double h,t0,t,g; n1; 赋初值 hdoubleb-a/2; th*fafb; do t0t; g0; for i1;ie; 自定义误差限 e printf“.8lf“,t; 输出积分的近似值 return 0; 2复化抛物线公式 include include define e 1e-5 define a 0 积分下限 a define b 1 积分上限 b define fx 4/1x*x 被积函数 fx int main int i,n; double f1,f2,f3,h,s0,s; f1fafb; 赋初值 f2fdoubleba/2; 第二篇 数学试验 第 2 章 数学试验 2.2 实验 2 一元微积分的编程实现 5 f30; sdoubleb-a/6*f14*f2; n2; hdoubleb-a/4; do 复化抛物线算法 f2f3; s0s; f30; for i1;ie; 自定义误差限 printf“.8lf“,s; return 0; 第二篇 数学试验 第 2 章 数学试验 2.2 实验 2 一元微积分的编程实现 6 3Romberg 求积法 include include define e 1e-5 define a 0 积分下限 a define b 1 积分上限 b define fx 4/1x*x 被积函数 fx double t100100; int main int n,k,i,m; double h,g,p; hdoubleb-a/2; t00h*fafb; k1; n1; do Romberg 算法 g0; for i1;ie; 自定义误差限 e printf“.8lf“,t0m; return 0; 给定精度,定义误差限为 1*10-5,分别求出步长的先验估计值用复化梯形公式计算,要求 h1就可以得到收敛情况的解 。 图 2.2.19积分 11 dxxp 在 p1的情况下 的 Mathematica运算结果 3.数值积分 第二篇 数学试验 第 2 章 数学试验 2.2 实验 2 一元微积分的编程实现 21 数值积分是解决求定积分的另一种有效的方法,它可以给出一个近似解。特别是对 于用 Integrate命令无法求出的定积分,数值积分更是可以发挥巨大作用。 它的 主要 命令格式为 表 2.2.3中的命令。 表 2.2.3 数值积分 一些主要命令 Nintegratef,x,a,b 在 a,b上求 f数值积分 Nintegratef,x,a,x1,x2b 以 x1,x2. 为分割求 a,b上的数值积分 Nintegratef,x,a,b,MaxRecursionn 求数值积分时指定迭代次数 n. 下面我们求 sinsinx在 0, 上的积分值,由于这 个函数的不定积分求不出,因此使用Integrate命令无法得到具体结果,但可以用数值积分 可以求得近似值。如例 2.2.18。 例 2.2.18 求 积分 0sinsinxdx。 这个被积函数 fxsinsinx找不到初等的原函数 ,用命令 Integratef,x,min,max直接输入,得不到结果。但用命令 Nintegratef,x,a,b输入,即可得到近似值。具体情况参见图 2.2.20,其中 Pi 表示 。 第二篇 数学试验 第 2 章 数学试验 2.2 实验 2 一元微积分的编程实现 22 图 2.2.20 积分 0sinsinxdx 在 Mathematica 程序下的数值解 如果积分 的被 函数存在不连续点,或存在奇 异 点我们可对积分进行分段求解。例如 例2.2.19。 例 2.2.19 求积分 11 x1dx。 被积函数x1在 -1, 1上,显然有 x0点是一个无穷间断点。因此若要求其数值积分,必须在其中插入点 0。于是,利用数值积分命令 Nintegratef,x,xmin, x1, x2 xmax输入,其中 x1, x2,是奇异点。这样就可得到积分的数值解。具体操作参见图 2.2.21 图 2.2.21 积分 11 x1dx 在 Mathematica 程序下的数值解 对无穷积分,也可求 得积分数值解 ,例如 例 2.2.20。 例 2.2.20 求积分 dxe x 02 。 第二篇 数学试验 第 2 章 数学试验 2.2 实验 2 一元微积分的编程实现 23 对于 求 无穷积分的数值解 ,也可以直接用命令 Nintegratef,x,a,b,其中 b可以用无穷大 Infinity替换。 具体操作参见图 2.2.22。 图 2.2.22 积分 dxe x 02 在 Mathematica 程序下的数值解 思考题 可以将第一篇中的习题一、习题二中的题用 Mathematica程序 做一下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值