Я хочу, чтобы вычислить следующий интеграл:Оценить интеграл в MATLAB
exp(-y^2/(2*a^2))* cosh(y)*log(cosh(y))
от y=0
к y = Inf
мне нужно сделать это интеграл для вектора значений a
? Как я могу это сделать?
Я хочу, чтобы вычислить следующий интеграл:Оценить интеграл в MATLAB
exp(-y^2/(2*a^2))* cosh(y)*log(cosh(y))
от y=0
к y = Inf
мне нужно сделать это интеграл для вектора значений a
? Как я могу это сделать?
Как уже заметил 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]))
Вы действительно хотите вычислить этот интеграл для 'y = Inf'? 'cosh (1000)' is 'Inf' в Matlab и' exp (-1000) '' '0', поэтому вы получите« NaN »очень быстро. – IKavanagh
@IKavanagh: Это нормально, даже если я могу вычислить его численно до верхнего предела, скажем 1000. – pikachuchameleon