Я пытаюсь вычислить интеграл от функции в Matlab и Mathematica, которую программное обеспечение не может сделать символически.
Вот мой код MatLab до сих пор, но я понимаю, что он может быть не очень полезным, как есть.
f = @(t) asin(0.5*sin(t));
a = @(t) sin(t);
F = int(f,t) % Matlab can't do this
F =
int(asin(sin(t)/2), t)
A = int(a,t) % This works
A =
-cos(t)
dt = 1/(N-1); % some small number
for i=1:N
F(i) = integral(f,(i-1)*dt,i*dt);
A(i) = integral(a,(i-1)*dt,i*dt);
end
Оба вычисления в цикле for дают грубое приближение f
или a
, а не их интегралов после умножения на dt
.
В математическом стекеобмен Я нашел вопрос , который выводит метод конечных разностей для интеграла в точке.Однако, когда я делал вычисления в Matlab, он выводил уменьшенную версию f
, которая была очевидна после построения графика (см. Выше, что я имею в виду под уменьшением).Я думаю, это потому, что для меньших интервалов интеграл в основном аппроксимирует функцию с различной степенью точности (снова см. Выше).
Я пытаюсь получить или символическое уравнение для интеграла, или приближение интеграла отфункция в каждом месте.
Так что мой вопрос тогда будет , если у меня есть функция f, что MatLab и Mathematica не могут легко взять интеграл от
- Могу ли я аппроксимировать интеграл напрямую с помощью интегрального калькулятора, кроме стандартных? * (
int
, integral
, trapz
)
или
Могу ли я сначала аппроксимировать функцию конечными разностями, а затем символически вычислить интеграл?