Грубо говоря, в matlab определённый интеграл можно вычислить численно или символьно (Symbolic Math Toolbox).
Для численного вычисления в старых версиях использовались, например, функции
quad (на основе формулы Симпсона)
quadl (
adaptive Lobatto quadrature), а в новых версиях —
integral.
Для символьного интегрирования используется функция
int. Подынтегральное выражение (первый входной аргумент
int) должно быть символьным. Если Вы планируете использовать символьное интегрирование, то перед циклом можно создать символьную переменную
x. Например, при помощи
syms xили при помощи конструктора символьного объекта
x =sym('x')В таком случае выражение, которое задаёт подынтегральную функцию (первый входной аргумент функции
int), будет создано как символьное выражение.
Результат, возвращаемый функцией int — символьное выражение, которое, возможно, содержит имена констант или функций. Для преобразования такого выражения в число в представлении арифметики переменной точности (Variable-Precision Arithmetic) используется функция
vpa. (При помощи
vpa не будет ещё получено число с плавающей точкой двойной точности.) [Вместо
int + vpa можно попробовать воспользоваться
vpaintegral.]
Для преобразования в Double можно воспользоваться функцией
double (конструктором объекта типа double array).
(После данных исправлений, если все константы заданы, возможно заработает вызов функции
f2. Перед использованием этой функции в функции
fzero я бы проверил работоспособность
f2.)