如何在 Matlab 中数值求解定积分的上限?

How to numerically solve for the upper bound of a definite integral in Matlab?

给定方程

对于某些给定的函数 f(x),其中还给出了 gamma,您如何在 Matlab 中数值求解上界 u

f(x) 可以是任何模型的占位符。

这是一个求根和积分问题,但由于我缺乏 Matlab 知识,我仍在努力弄清楚它是如何完成的。

我最初的解决方案是蛮力法。假设我们有

gamma = 0.8,我们可以通过从一些非常小的值 u 中提取其积分来找到从 -infu 的定积分,直到我们得出一个结果 gamma = 0.8.

syms f(x)
f(x) = (1/(sqrt(6*pi)))*exp(-(x^2/6));  
gamma = 0.8;
u = -10;

res = int(f,x,-Inf,u);
while double(res) <= gamma
    u = u+0.1;
    res = int(f,x,-Inf,u);
end
fprintf("u is %f", u);

这个解决方案很慢,肯定不会一直有效。

我设置 u = 10 是因为看函数的图形,我们实际上没有得到区间 [-5, 5] 之外的任何东西。

您可以使用 MATLAB Symbolic Math Toolbox(您可能需要安装的插件)。 这样你就可以为自己定义一个“真正的”未知变量 x(不是 x-values 的数组),然后从负无穷大积分:

syms f(x)
f(x) = exp(2*x)  % an example function
gamma = int(f,x,-Inf,u)

在将 f(x) 定义为符号函数并将 u 定义为标量后,gamma 是从 -Infu 的积分