Я пытался решить дифференциальное уравнение второго порядка, используя это 1, , однако я не мог понять это правильно и не нашел ничего полезного в Интернете, но я считаю, что я достиг прогресса.Интерпретация вывода dsolve для использования с ODE45 [MATLAB]
Я использовал dsolve;
syms x(t) v(t) fi(t)
[x(t), v(t)] = dsolve(diff(x) == v, diff(v) == fi/m, x(0) == [-L, -L], v(0) == [5, 10])
который дает мне;
x(t) =
int(fi(x)/5, x, 0, t, 'IgnoreSpecialCases', true, 'IgnoreAnalyticConstraints', true) - 5
v(t) =
C2 + t*(int(fi(x)/5, x, 0, t, 'IgnoreSpecialCases', true, 'IgnoreAnalyticConstraints', true) - 5) + int(-(x*fi(x))/5, x, 0, t, 'IgnoreSpecialCases', true, 'IgnoreAnalyticConstraints', true)
Теперь мне нужна помощь, связанная с результатом, и мне интересно, могу ли я использовать этот результат, чтобы получить что-то из ode45? Также я хочу построить решение в качестве эталонной траектории для моделирования 500 частиц, движущихся через силовое поле.
использованием ode45:
function dxdt = solution(t,y0)
frprintf('Second stop')
.....
dxdt = [x, v]
end
вызова из основного файла:
t:dt:t_f
y0 = [x0,v0]
fprintf('first stop')
[x, v] = ode45(@solution, y0, t)
Я настроил его так, что если код будет работать гладко было бы напечатать «первую остановку, вторая остановка, третья остановка "и" четвертая остановка ", она только распечатывает первую остановку и вот где я получаю ошибку.
'dsolve' и' int' предназначены для символической математики и предназначены главным образом для получения аналитических решений. 'ode45' используется для решения ODEs численно. Эти две вещи сильно отличаются друг от друга. Ваши символические уравнения здесь полностью абстрактны, поэтому вы не должны ожидать каких-либо решений. Я рекомендую вам вернуться к обучению использованию «ode45». Прочтите документацию ('doc ode45' в окне команд). Попробуйте примеры. Не ожидайте, что сразу выясните это. Если вы сталкиваетесь с вопросами/вопросами, найдите этот сайт. Если вы зададите вопрос, убедитесь, что он является конкретным. – horchler
Так что я не могу поместить ничего из этого в ode45? –
Нет. Я не вижу смысла. 'dsolve' призван дать вам аналитическое решение дифференциального уравнения *, если оно существует *.Он не может существовать здесь, потому что вы указали все в терминах абстрактной функции (функции без определения) 'fi'. Если вы хотите использовать символическую математику, чтобы помочь вам получить функции для 'ode45', [см. Это сообщение в блоге MathWorks] (http://blogs.mathworks.com/loren/2013/06/10/from-symbolic-differential- уравнения-на-их-числового раствор /). – horchler