复化科特斯公式matlab_基于牛顿—科特斯积分的误差分析

[摘 要]本文首先简单介绍了牛顿科特斯公式的基本思想及算法步骤,然后讨论了牛顿科特斯公式的阶数及复化的子区间个数对误差的影响,得出布尔求积公式(即阶数取4),复化子区间个数取90左右较为理想。

[关键词]积分 复化牛顿-科特斯积分 误差

[中图分类号] G642 [文献标识码] A [文章编号] 2095-3437(2013)18-0152-02

一、引言

我们知道利用插值多项式来构造数值求积公式是最常用的一种方法,为了便于计算与应用,常将积分区间n等分,其中的每个节点作为求积节点,这样构造出来的插值型求积公式就称为牛顿-科特斯(Newton-Cotes)求积公式,这里的n称为牛顿-科特斯公式的阶数。当n=1时,该公式即为梯形求积公式;当n=2时,为辛普森求积公式;当n=3时,为3/8辛普森求积公式;当n=4时,为布尔求积公式。

由文[1]我们知道,当 n≤7 时,牛顿-布尔公式是稳定的。而当 n≥8 时,出现负数,稳定性得不到保证。而且当n较大时,由于Runge现象,收敛性也无法保证。[2]故一般不采用高阶的牛顿-科特斯求积公式。为了提高精度我们通常把积分区间分成若干子区间,然后在每个子区间上应用低阶牛顿-科特斯求积公式求积分,即为复化求积法。[3]

本文借助Matlab[4][5]符号计算系统,首先讨论不同的方法(即阶数的不同)对积分的精度与速度的影响,其次,讨论复化的子区间段数对积分误差的影响。

二、复化的牛顿科特斯求积算法实现

在积分区间[a,b]上取n+1个等距节点xk=a+kn(k=0,1

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 MATLAB 中计算变函数积分,可以使用 `integral2` 函数。该函数可以计算二重积分,包括实部和虚部。 假设要计算函数 $f(z)$ 在平面上的积分 $\int_C f(z)~dz$,其中 $C$ 是一条封闭曲线,可以按以下步骤进行计算: 1. 将 $f(z)$ 拆分为实部和虚部,即 $f(z) = u(x,y) + iv(x,y)$,其中 $u(x,y)$ 和 $v(x,y)$ 分别是 $f(z)$ 的实部和虚部。 2. 定义一个匿名函数 `fun`,其中 `fun(x,y)` 返回 $u(x,y) + i v(x,y)$。 3. 定义 $C$ 的参数方程,例如 $x = x(t), y = y(t)$,其中 $t$ 的范围为 $[a,b]$。 4. 使用 `integral2` 函数计算积分: ``` integral2(@(x,y)real(fun(x,y)),@(x,y)imag(fun(x,y)),a,b); ``` 其中,第一个输入参数是实部函数的句柄,第二个输入参数是虚部函数的句柄,`a` 和 `b` 是 $t$ 的范围。 注意,这里的积分结果是一个数,其中实部是积分的实部,虚部是积分的虚部。 下面是一个示例代码: ```matlab % 定义变函数 f = @(z) exp(z) ./ (z - 2); % 拆分为实部和虚部 u = @(x,y) real(f(x + 1i*y)); v = @(x,y) imag(f(x + 1i*y)); % 定义参数方程 t = linspace(0, 2*pi, 100); x = 2 + cos(t); y = sin(t); % 计算积分 I = integral2(@(x,y) u(x,y), @(x,y) v(x,y), x(1), x(end)); % 显示结果 disp(I); ``` 在这个例子中,计算了 $f(z) = \frac{e^z}{z-2}$ 沿着圆形路径 $|z-2|=1$ 的积分。该函数被拆分为实部和虚部,然后使用 `integral2` 函数计算积分。最终结果是一个数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值