matlab - 求解积分极限

标签 matlab numeric equation numerical-integration

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

Integral equation to solve

如您所见,这是不完整的 beta 功能。我认识abc。积分限制是从0x。我需要找到x

最佳答案

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

首先,计算不完全 beta 函数作为 X 的函数(我减去了 c 因为我们想要找到使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)

关于matlab - 求解积分极限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29978885/

相关文章:

Java、Matlab 读取 Wav 文件中的数据,有何不同?

image - 转置矩阵/难以理解 bsxfun 的工作原理

java - 公式计算不正确

C# 设置对象参数

python - Python 的 epsilon 值是否正确?

c++ - 使用 csparse : cs_cholsol 求解简单的稀疏线性方程组

arrays - 在给定矩阵的每一行中找到最后一个非零元素的索引?

c++ - C++ Eigen 库中用于设置 vector/矩阵的未知错误

r - R中非空数值向量的维数

python-3.x - python中 float 的十六进制字符串表示