0

基本上我想做的是

fun=@(x,y) x.*y
integral2(fun,-5,5,-5,5)

但是,我想忽略 x*y 为负数的积分范围部分。基本上,调整我的积分范围,以保证 x*y 在整个范围内都大于零。对于我给出的 x*y 示例,它很容易解决适当的界限,但我实际上正在使用一个不那么明显的更复杂的函数。

我的实际代码如下。我想选择积分界限,使“de”始终为正。有任何想法吗?谢谢!

tau=@(r) (tauMax+ r.*(tauMin-tauMax)/(radius));
d= @(r) (height^2+r.^2).^(.5);
cosTheta= @(r) height./ d(r);
cosXi= @(r,psi) -r.*cos(psi)*2^.5/2+height*2^.5/2;

de= @(r,psi) (Esun*tau(r)/pi).*cosTheta(r).*cosXi(r,psi)./(d(r)).^2;
integral2(de,0,275,0,360) 
4

1 回答 1

1

与更改域不同,更容易定义一个辅助函数,该函数在原始函数为负数时返回零:

fun2=@(x,y) max(0,fun(x,y));
integral2(fun2,-5,5,-5,5);

在这种情况下,我们有

>> integral2(fun,-5,5,-5,5)
ans=
  -4.2633e-14
>> integral2(fun2,-5,5,-5,5)
ans=
  312.5000
于 2013-09-14T22:51:54.287 回答