Изменить программу интегрирования методом второго порядка. Pascal
Вложений: 1
Здравствуйте. Возникла проблема с задачей. Вот она и ее решение:
Const Dt=0.1; V=-0.5; Q=0.0; Var f:Text; V_old,V_new,Q_old,Q_new,t:Real; i:integer; Begin Assign(f,'D:\Result1.txt'); 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. Тут реализуется метод интегрирования даже не второго, а первого порядка, т.е. в один шаг. Он страшно неточный, поэтому решение раскачивается и все значения функций быстро нарастают. Поэтому нужно использовать метод хотя бы второго порядка (в два шага), а еще лучше - четвертого Рунге-Кутты. И шаг интегрирования должен быть примерно 0.001. Должны быть периодические функции. Шаг задаю, получаются периодические все правильно. Вместо от 1до350 я поставил от 1до35000. Но у меня не получается преобразовать из первого порядка во второй. Помогите пожауйста.:tehnari_ru_837: |
Уважаемый kot64rus!
Извините, как-то ухитрился пропустить Ваш запрос. По сути же - так: 1. Методы численного решения линейных дифференциальных уравнений, в том числе Рунге-Кутты четвертого порядка, у меня подробно расписаны здесь: http://www.tehnari.ru/f41/t96417/. 2. Как перейти от уравнения второго порядка к системе линейных уравнений и уже её решить ясно из той (моей) программы, которую Вы приводите. Осталось соединить эти две премудрости, с чем Вы, я убежден, справитесь самостоятельно без особого труда. Было бы желание. P.S. И совершенно ни к чему было начинать новую тему по той же задаче. Вполне можно было продолжить эту: http://www.tehnari.ru/f41/t100188/. |
Часовой пояс GMT +4, время: 14:00. |
Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.