• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Нужна помощь с Паскалем

Статус
В этой теме нельзя размещать новые ответы.

марианна

Новые
Регистрация
1 Дек 2013
Сообщения
15
Реакции
1
Баллы
0
Нужна помощь с Паскалем

решить уравнение методом Ранге-Кутта 4-ого порядка
 

Вложения

  • Безымянный.webp
    Безымянный.webp
    15.7 KB · Просмотры: 309
решить уравнение методом Ранге-Кутта 4-ого порядка
По-моему так, хотя результат получился несколько странный - почти чистая прямая. Но вроде ошибок не вижу.
Пояснения: исходное уравнение второго порядка приведено к системе уравнений первого порядка путём подстановки (dy/dt)=z. Тогда получаем систему:

dz/dt = (t³/5)*z - (t/5)*Sin(t)*y = f(t,y,z)
dy/dt = z = g(t,y,z);

Далее пишем программу и решаем, как это описано тут:
Метод Рунге — Кутты — Википедия

Код:
Const
 t0=0.0;
 y0=0.0;
 z0=-3.41;
 h=0.02;
 t_max=0.44;

Var
 T,Y,Z,Y1,Z1:real;
 i,N:integer;

Function f(t,y,z:real):real;
begin
 f:=t*t*t/5*z-t/5*sin(t)*y;
end;

Function g(t,y,z:real):real;
begin
 g:=z;
end;

Procedure RK(t,y,z:real; var Uy:real; var Uz:real);
var k1,k2,k3,k4,q1,q2,q3,q4:real;
begin
 k1:=h*f(t,y,z);
 q1:=h*g(t,y,z);
 k2:=h*f(t+h/2,y+q1/2,z+k1/2);
 q2:=h*g(t+h/2,y+q1/2,z+k1/2);
 k3:=h*f(t+h/2,y+q2/2,z+k2/2);
 q3:=h*g(t+h/2,y+q2/2,z+k2/2);
 k4:=h*f(t+h,y+q3,z+k3);
 q4:=h*g(t+h,y+q3,z+q3);
 Uz:=z+(k1+2*k2+2*k3+k4)/6;
 Uy:=y+(q1+2*q2+2*q3+q4)/6;
end;

Begin
 N:=Round((t_max-t0)/h);
 T:=t0;
 Y:=y0;
 Z:=z0;
 Writeln('t= ',T:4:2,'    y= ',Y:8:5);
 For i:=1 to N do
  begin
   RK(T,Y,Z,Y1,Z1);
   T:=T+h;
   Y:=Y1;
   Z:=Z1;
   Writeln('t= ',T:4:2,'    y= ',Y:8:5);
  end;
 Readln
End.
P.S. Сейчас для проверки взял функцию y=-3.41t и подставил в исходное уравнение. Тогда слева - ноль, а оба слагаемых действительно совпали до пятого знака (при t=0.2 0.005456 и 0.005419, соответственно). Так что, похоже, всё правильно.
 
help

Помогите с решением подобного уравнения только 3-го порядка. Попытался переделать вашу, но она не получается:gilot:
 

Вложения

  • sfWTukF1Qws.webp
    sfWTukF1Qws.webp
    55.2 KB · Просмотры: 144
  • LoGa_krf1dI.webp
    LoGa_krf1dI.webp
    40.2 KB · Просмотры: 90
Во-первых, не нужно клепать дубли. Все дальнейшие обсуждения задачи давайте будем вести здесь, а эту тему я закрываю.
Во-вторых, я не ответил сразу потому, что несколько надоела манера современного юношества выложить задачку, умоляя о помощи, и больше на форуме не появляться. Как-то, знаете ли, ишачить в пустоту — приятного мало.
Ну и, наконец, по сути. Что именно "не получается"? Вы учли, что здесь возникает система не из двух, а из трёх уравнений? Остальное вполне должно получиться по шаблону.

Так что выкладывайте результаты Ваших попыток — разберёмся. Очень хотелось бы, чтобы Вы действительно разобрались в задачке, а не тупо скатали и сдали. Если есть такой настрой — поможем.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху