当matlab不能直接计算定积分时应该怎么办 | 您所在的位置:网站首页 › matlab求极限limx→0 › 当matlab不能直接计算定积分时应该怎么办 |
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 实验室设备网 版权所有 |