求解积分极限

问题描述 投票:0回答:1

我需要以数值方式找到积分的极限,并知道该积分的结果。我需要解决的是:

如您所见,这是不完整的 beta 功能。我知道

a
b
c
。积分极限是从
0
x
。我需要找到
x

matlab numeric equation numerical-integration
1个回答
2
投票

fzero
函数可以求解各种非线性方程。

首先,将不完全 beta 函数计算为

X
的函数(我减去了
c
,因为我们想要找到构成
x
Y=0
):

Y=@(X) beta(a,b)*betainc(X,a,b)-c

或者,不使用内置

betainc
函数,而是使用符号代数:

syms t x
Y=matlabFunction(int(t^(a-1)*(1-t)^(b-1),t,0,x)-c);

现在使用

fzero
,因为
x
必须介于 0 和 1 之间,我们将解限制在
[0 1]
内:

x=fzero(Y,[0 1])

如果

fzero
不起作用,可以尝试的最简单的数值方法是二分搜索。它很简单,而且在这里效果很好,所以为什么不使用它呢。我确实假设
Y(x)
[0 1]
上单调递增,但我认为情况总是如此。

x=0.5;
xmin=0;
xMAX=1;
tol=1e-12;
numIts=0;
while abs(Y(x))>tol
    if Y(x)>0
        xMAX=x;
    elseif Y(x)<0
        xmin=x;
    end
    x=(xmin+xMAX)/2;
    numIts=numIts+1;
    if numIts>237 %// If it's not working, stop
        disp('Solution has not converged, there is probably no solution in [0,1]')
        break
    end
end
x
Y(x)
© www.soinside.com 2019 - 2024. All rights reserved.