2015-10-22 5 views
0

Я хочу, чтобы вычислить следующий интеграл:Оценить интеграл в MATLAB

exp(-y^2/(2*a^2))* cosh(y)*log(cosh(y)) 

от y=0 к y = Inf

мне нужно сделать это интеграл для вектора значений a? Как я могу это сделать?

+0

Вы действительно хотите вычислить этот интеграл для 'y = Inf'? 'cosh (1000)' is 'Inf' в Matlab и' exp (-1000) '' '0', поэтому вы получите« NaN »очень быстро. – IKavanagh

+0

@IKavanagh: Это нормально, даже если я могу вычислить его численно до верхнего предела, скажем 1000. – pikachuchameleon

ответ

4

Как уже заметил IKavanagh, вы не можете вычислить интеграл, используя integral, потому что он превосходит диапазон значений с плавающей запятой. Таким образом, использование символической панели инструментов, вероятно, является единственной возможностью.

%define your function: 
syms a y 
f=exp(-y^2/(2*a^2))* cosh(y)*log(cosh(y)) 

Теперь вы можете вычислить интеграл:

iF=int(f,y,0,inf); 

По крайней мере, в моей MatLab версии, явное решение не может быть найден, предупреждение поднимается. Таким образом, нам нужно выполнить два шага, подставить a с заданными значениями, а затем решить это с помощью vpa. В случае, если в последних версиях Matlab обнаружено явное решение, использование vpa является неосновательным.

solution=vpa(subs(iF,a,[1,2,3,4])) 
Смежные вопросы