用第二个变量表示的二重积分

Double integral expressed by a second variable

我在 Matlab 中实现二重积分时遇到问题。

与其他二重积分不同,在进行第二个(外部)积分之前,我需要第一个(内部)积分的结果作为第二个变量的表达式,因为它必须由 k 提供动力。

例如:

在上面的示例中,我需要将内积分的结果表示为 2y,以便在进行第二次(外)积分之前计算 (2y)^k。

有谁知道如何在 Matlab 中做到这一点?

我不喜欢象征性地做事,因为99.9% 的问题根本没有封闭形式的解决方案。对于 do 的 99.9% 的问题都有一个封闭形式的解决方案,该解决方案是笨拙的,几乎没有用处。这可能是因为我的特定学科,但我假设你的问题属于那 99.9% 的集合之一,所以我将展示最明显的 numerical 方法这个。

也就是集成一个调用integral自身的函数:

function dbl_int()

    f = @(x,y) 2.*x.*y + 1;    
    k = 1;

    x_limits = [0 1];
    y_limits = [1 2];

    val = integral(@(y) integrand(f, y, k, x_limits), ...
                   y_limits(1), y_limits(2));

end

function val = integrand(f, y, k, x_limits)

    val = zeros(size(y));
    for ii = 1:numel(y)        
        val(ii) = integral(@(x) f(x,y(ii)), ...
                           x_limits(1), x_limits(2));        
    end

    val = val.^k;

end