我在Matlab中实现双积分时遇到了麻烦。
与其他双积分不同,我需要第一个(内部)积分的结果作为第二个变量的表达式,然后才能通过第二个(外部)积分,因为它必须由k驱动。
例如:
在上面的例子中,我需要将内部积分的结果表示为2y,这样我就可以在做第二个(外部)积分之前计算(2y)^ k。
有人知道如何在Matlab中执行此操作吗?
答案 0 :(得分:0)
我不喜欢象征性地做事,因为99.9%的问题根本没有封闭形式的解决方案。对于做的99.9%的问题有一个封闭形式的解决方案,该解决方案是笨重的,几乎没用。这可能是因为我的具体纪律,但我会假设你的问题属于99.9%的一组,所以我会提出最明显的数字方法来做到这一点。
也就是说,集成一个调用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