Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Составить программу интегрирования методом второго порядка. Pascal (http://www.tehnari.ru/f41/t100188/)

kot64rus 19.12.2014 21:28

Составить программу интегрирования методом второго порядка. Pascal
 
Вложений: 1
Здравствуйте. Скинул рисунок с задачей. Помогите пожалуйста с ней. Графики я уже сам построю. Мне главное понять как программу написать

kot64rus 19.12.2014 21:32

Да в принципе можно на любом другом языке. Но желательно паскаль

Vladimir_S 20.12.2014 11:51

Цитата:

Сообщение от kot64rus (Сообщение 1089547)
Здравствуйте.

И Вам не хворать.
Цитата:

Сообщение от kot64rus (Сообщение 1089547)
Скинул рисунок с задачей.

Спасибо.
Цитата:

Сообщение от kot64rus (Сообщение 1089547)
Помогите пожалуйста с ней.

Это вряд ли. Тут такой матёрый жирный курсовик на недельку работы проглядывает.
Цитата:

Сообщение от kot64rus (Сообщение 1089547)
Графики я уже сам построю.

Замечательно!
Цитата:

Сообщение от kot64rus (Сообщение 1089547)
Мне главное понять как программу написать

Дык... для этого надо было присутствовать на лекциях по теории колебаний, к которым Вас адресуют, или по крайней мере располагать конспектом этих лекций, да еще и разобраться в этой науке. А в лекциях наверняка прописано, как обращаться с такими вот экзотическими осцилляторами. И формулы даны.
Но если так, схематично...
1. Имеем существенно-нелинейное дифференциальное уравнение второго порядка с граничными условиями, каковое нужно решить.
2. Решение сводится прежде всего к преобразованию уравнения второго порядка к системе уравнений первого порядка. Делается это так.
а) Исходное уравнение:
d²q/dt² = exp(-q)(exp(-q)-1)
б) Вводим новую переменную v = dq/dt
в) Записываем систему
dv/dt = exp(-q)(exp(-q)-1) = f(q)
dq/dt = v = g(v)

3. Решаем систему численно. Поскольку Вам предлагается использовать простой метод второго порядка, то воспользуемся простым (немодифицированным) методом Эйлера. Тут так.
а) Задаем шаг по времени Δt.
б) Допустим, мы знаем значения функций q(t) и v(t) для какого-то i-того значения t, т.е. мы знаем q(ti) и v(ti). Тогда мы определяем значения q(ti+Δt) и v(ti+Δt), как
v(ti+Δt) = v(ti) + f(q(ti))*Δt
q(ti+Δt) = q(ti) + g(v(ti))*Δt
в) Стартуя от данных начальных условий, строим функции и графики q(t) и v(t).

Вот как-то так. Там еще требуется провести исследование устойчивости равновесных точек, а вот что под этим понимается и как оно делается - извините, просто не знаю.

kot64rus 20.12.2014 15:51

Цитата:

Сообщение от Vladimir_S (Сообщение 1089628)
И Вам не хворать.Спасибо.Это вряд ли. Тут такой матёрый жирный курсовик на недельку работы проглядывает.Замечательно!Дык... для этого надо было присутствовать на лекциях по теории колебаний, к которым Вас адресуют, или по крайней мере располагать конспектом этих лекций, да еще и разобраться в этой науке. А в лекциях наверняка прописано, как обращаться с такими вот экзотическими осцилляторами. И формулы даны.
Но если так, схематично...
1. Имеем существенно-нелинейное дифференциальное уравнение второго порядка с граничными условиями, каковое нужно решить.
2. Решение сводится прежде всего к преобразованию уравнения второго порядка к системе уравнений первого порядка. Делается это так.
а) Исходное уравнение:
d²q/dt² = exp(-q)(exp(-q)-1)
б) Вводим новую переменную v = dq/dt
в) Записываем систему
dv/dt = exp(-q)(exp(-q)-1) = f(q)
dq/dt = v = g(v)

3. Решаем систему численно. Поскольку Вам предлагается использовать простой метод второго порядка, то воспользуемся простым (немодифицированным) методом Эйлера. Тут так.
а) Задаем шаг по времени Δt.
б) Допустим, мы знаем значения функций q(t) и v(t) для какого-то i-того значения t, т.е. мы знаем q(ti) и v(ti). Тогда мы определяем значения q(ti+Δt) и v(ti+Δt), как
v(ti+Δt) = v(ti) + f(q(ti))*Δt
q(ti+Δt) = q(ti) + g(v(ti))*Δt
в) Стартуя от данных начальных условий, строим функции и графики q(t) и v(t).

Вот как-то так. Там еще требуется провести исследование устойчивости равновесных точек, а вот что под этим понимается и как оно делается - извините, просто не знаю.

Спасибо =). Постараюсь разобраться. Надеюсь получится

kot64rus 20.12.2014 23:38

Блин, похоже я с математикой совсем раздружился. Я совсем не догоняю, как решать это =(
Можно как нибудь на примере. Куда что подставить надо. Весь день сижу понять не могу(

Vladimir_S 21.12.2014 10:19

Вложений: 1
Цитата:

Сообщение от kot64rus (Сообщение 1089791)
Блин, похоже я с математикой совсем раздружился. Я совсем не догоняю, как решать это =( Можно как нибудь на примере. Куда что подставить надо. Весь день сижу понять не могу(

Да нет вопросов! Пожалуйста.
Одно замечание.
Чтобы осциллятор начал реально осциллировать, исходную скорость следует задавать отрицательной. В противном случае получится просто однонаправленное движение с выходом скорости на некую константу.
Итак:
Код:

Const
 Dt=0.1;
 V=-0.5;
 Q=0.0;

Var
 f:Text;
 V_old,V_new,Q_old,Q_new,t:Real;
 i:Word;

Begin
 Assign(f,'D:\Result1.dat');
 Rewrite(f);
 t:=0;
 Q_old:=Q;
 V_old:=V;
 Writeln(f,t:5:1,Q:15:3,V:15:3);
 for i:=1 to 350 do
  begin
  t:=Dt*i;
  Q_new:=Q_old+V_old*Dt;
  V_new:=V_old+Exp(-Q_old)*(Exp(-Q_old)-1)*Dt;
  Writeln(f,t:5:1,Q_new:15:3,V_new:15:3);
  Q_old:=Q_new;
  V_old:=V_new;
  end;
 Close(f);
End.

Естественно, имя файла и путь к нему поставьте свои.
Результат:
Вложение 208301
А вот как там "исследовать точки равновесия на устойчивость" - это я не в курсе.

kot64rus 21.12.2014 14:46

ух, спасибо большое. А то уже не знал что делать. Выручили =)


Часовой пояс GMT +4, время: 17:32.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.