2013-09-14 5 views
0

По сути то, что я хотел бы сделать, этоИгнорировать отрицательные значения MATLAB интегральной

[email protected](x,y) x.*y 
integral2(fun,-5,5,-5,5) 

Однако, я хочу, чтобы игнорировать части моего диапазона интегрирования, где х * у отрицательно. В принципе, скорректируйте мои оценки интеграции так, что x * y гарантированно будет больше нуля во всем диапазоне. Для примера x * y, который я дал, его легко решить для соответствующих границ, но я фактически работаю с более сложной функцией, где это не так очевидно.

Настоящий код приведен ниже. Я хочу выбрать границы для интеграции, так что «de» всегда положительно. Есть идеи? Благодаря!

[email protected](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) 

ответ

1

Вместо того чтобы изменять домен, то проще определить вспомогательную функцию, которая возвращает ноль, когда исходная функция отрицательна:

[email protected](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 
Смежные вопросы