用第二个变量表示的二重积分
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
我在 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