Решение дифференциальных уравнений с дискретными значениями в MATLAB с использованием ode45

У меня есть дифференциальное уравнение -

L'(x) = F1(x,L(x))

Используя ode45, я получил решение для L (x). У меня есть массив значений для L (x), обозначенный L_val. Используя это решение, я собираюсь решить еще одно дифференциальное уравнение.

w'(x)=L(x)/x

Как я могу найти w (x)? Тем более, что L (x) - это не функция от x, а массив дискретных значений.


person User6292    schedule 01.11.2020    source источник
comment
Просто интегрируйте L(x)/x. Или решите оба ОДУ одновременно.   -  person David    schedule 02.11.2020


Ответы (1)


Используйте кумулятивную функцию трапециевидной интеграции: https://fr.mathworks.com/help/matlab/ref/cumtrapz.html

В качестве альтернативы вы можете использовать другие правила с большей точностью (правило Симпсона, поиск в центре Matlab для файла функции). Другой прагматический способ - слишком вычислить интерполянт высокого порядка вашей функции и интегрировать его напрямую.

person Laurent90    schedule 21.11.2020