我想在matlab中实现Double积分。单积分很容易,但双精度编程有点复杂。
要实施的等式如下:
我尝试使用语句
实现内部积分t = sym('t'); a = sym('a');
pretty(int(t*((1-t)^-2.5)*((1-a*t)^-1)))
但这导致了更大的等式,我如何评估外积分呢? 关于这个的任何技巧或提示?
答案 0 :(得分:0)
我对你的问题不太确定。积分表示你整合\ theta out,它怎么会出现在解决方案中?并且该等式甚至不依赖于\ theta,因此它应该用\ frac {1} {\ pi}取消。
但是,如果您输入错误并且最终会得到一个数字,那么我猜数值积分可能适合您?
如果是这样,两个积分减少为一个和,你可以在其中一个上使用函数quad,在另一个上使用梯形规则,参见:http://en.wikipedia.org/wiki/Trapezoidal_rule,那么它将是:
function int = integral(f,a,b,c,d)
dt = 0.001;
x = a:dt:b;
tempInt = zeros(length(x));
for i = 1:length(x)
tempInt(i) = quad(@(y) f(x(i),y),c,d);
end
int = dt/2*(2*sum(tempInt)-tempInt(1)-tempInt(end));