当matlab不能直接计算定积分时应该怎么办 您所在的位置:网站首页 matlab求极限limx→0 当matlab不能直接计算定积分时应该怎么办

当matlab不能直接计算定积分时应该怎么办

2023-03-16 06:44| 来源: 网络整理| 查看: 265

matlab定积分可以通过int函数来计算定积分

如计算 \displaystyle\int_{0}^{+\infty}\dfrac{\sin(x)}{x}\mathrm dx

clear;clc; syms x; f = sin(x)/x; int(f,0,inf)

结果如下:

ans = pi/2

但是有时候,这个方法会失效

比如计算 \displaystyle\int_{0}^{1}\arctan x\ln(1+x)\mathrm dx

clear;clc; syms x; f = atan(x).*log(1+x); int(f,0,1)

返回的结果竟然将输入原封不动的输出!

ans = int(log(x + 1)*atan(x), x, 0, 1)

对此,我们要返璞归真,利用定积分的定义来计算

分四步:分割、近似、求和、取极限

\Delta x_k=x_{k}-x_{k-1}\quad k=1,2,\cdots n

\xi_{k}\in[x_{k-1},x_{k}]

\lambda=\max_{1\leq k \leq n}{\Delta x_{k}}

\int_{a}^{b}{f(x)}dx=\lim_{\lambda\to 0}\sum_{k=1}^{n}f(\xi_{k})\Delta x_{k}

当将积分区间 n 等分、并取右端点:

\int_{a}^{b}f(x)dx=\lim_{n\to\infty}\sum_{i=1}^{n}f(a+\dfrac{b-a}{n}i)\dfrac{b-a}{n}

程序代码如下

clear;clc; lower = 0;upper = 1;n = 10000; h = (upper - lower)/n; x =lower:h:upper; f = @(x)atan(x).*log(1+x); s = []; for i = 1:n s1 = f(lower+h*i)*h; s = [s,s1]; end sum(s)

输出结果:

ans = 0.214932425270775

这样的结果是有限小数,并不能用无理数具体地表示

但是这种处理方法比较适合是有限区间的定积分,如果计算上限为无穷大时的积分(反常积分,并且收敛),可以将上限设一个比较大的数,如100000,这样求得的结果与实际值并没有太大的差别。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有