基本上我想做的是
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)
答案 0 :(得分: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