Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
 Аватар для Phoenix-
1 / 1 / 0
Регистрация: 03.03.2009
Сообщений: 14

Как сделать график в Рунге-Кутта

17.05.2009, 22:47. Показов 2151. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Народ! помогите с графиком...фиг знает как его делать...нужно что бы он выводил точное значение и первую производную


Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
    {Решение задачи Коши при помощи численного метода Рунге-Кутта}
Program Runge_Kutta;
 uses crt;                            {подключение используемых модулей}
 var x0,xk,kp,k,i,n:integer;      {описание переменных используемых в }
     x,h:real;                                                                    {программе}
     y0,fk1,f,fk2,fk3,fk4:array[1..100] of real;
     y,z:array[1..100] of real;
 
{ n-порядок уравнения, у0-вектор(одномерный массив) начальных условий }
{х0,хk-границы интегрирования; h- шаг вычислений; кр - кратность вывода}
{}
 
              {/-/-/-/-/-/-/-/-/-/-/-процедура правых частей-/-/-/-/-/-/-/-/-/-/}
 Procedure right_parts;
            begin
                 f[1]:=y[2];                                       {система диф. уравнений 1-го}
                 f[2]:=2*y[2]-y[1]+5*x*exp(x);              { порядка}
   end;
              {/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/}
 Procedure vivod;                   {процедура вывода решения}
 begin
     write(' ',x:8:8);               {вывод "шага"}
     for i:=1 to n do              {количество выводимых столбцов решения}
     write('  ',y[i]:8:8);          {вывод результатов вычисления}
     writeln;
 end;
              {+++++++++++ ОСНОВНОЙ БЛОК ПРОГРАММЫ  +++++++++++}
 Procedure blok;
   begin x:=x0; k:=0;
         for i:=1 to n do begin y[i]:=y0[i];
                                z[i]:=y[i];
                            end;
   repeat
 {*/*/*/*/*/*/*/*/*/*/*/*/ПОДПРОГРАММА РУНГЕ-КУТТА */*/*/*/*/*/*/*/*/}
         right_parts;
         for i:=1 to n do begin fk1[i]:=h*f[i];
                                y[i]:=z[i]+fk1[i]/2;
                           end;
         x:=x+h/2;
         right_parts;
         for i:=1 to n do begin fk2[i]:=h*f[i];
                                y[i]:=z[i]+fk2[i]/2;
                           end;
         right_parts;
         for i:=1 to n do begin fk3[i]:=h*f[i];
                                y[i]:=z[i]+fk3[i];
                            end;
         x:=x+h/2;
         right_parts;
         for i:=1 to n do begin fk4[i]:=h*f[i];
                                y[i]:=z[i]+1/6*(fk1[i]+2*fk2[i]+2*fk3[i]+fk4[i]);
                                z[i]:=y[i];
                             end;
 {*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*}
         k:=k+1;
         if k=kp then begin
                             vivod;
                             k:=0;
                      end;
   until x>xk;
    end;
 {+++++++++++++++++++++++++++++++++++++++++++++++++++++++++}
 {*-*-*-*-*-*-*-*-*-*-*-ввод данных  *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-}
begin     clrscr;                 {очистка экрана}
highvideo;                       {включение повышенной яркости символов}
    writeln('                   введите порядок уравнения: ');
lowvideo;                          {выключение повышенной яркости}
    read(n);
highvideo;
    writeln('                   введите начальные условия: ');
lowvideo;
    for i:=1 to n do read(y0[i]);
highvideo;
    writeln('                   введите границы отрезка : ');
lowvideo;
    read(x0,xk);
highvideo;
    writeln('                   введите шаг вычислений: ');
lowvideo;
    read(h);
highvideo;
    writeln('                   введите кратность вывода на экран: ');
lowvideo;
    read(kp);
    clrscr;
    {*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-}
 
 
highvideo;
    write('      x');                                       {вывод }
    for i:=1 to n do
    write('      ','  y(',i,')   ');                       {названий}
    writeln;  lowvideo;                                   { столбцов }
    writeln('нач.значения=','',y0[1]:8:8,'  ',y0[2]:8:8);
    blok;                     {вызов основного блока программы }
 
end.
Миниатюры
Как сделать график в Рунге-Кутта  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.05.2009, 22:47
Ответы с готовыми решениями:

Метод Рунге-Кутта
Содержание задания : Y1=0,2Y1+Y2+0,2e^(-x)Y2^(3); Y2=xe^(-x) -10Y2-0,2X^(2)Y1^(3); Y1(0)=1; Y2(0)=0 ..... Исходные данные:...

метод Рунге-Кутта
Нужно составить программу расчета зависимости температуры окружающей среды от температуры тела методом Рунге-Кутта. dT/dt=-r(T-TSR),...

Метод Рунге-Кутта
Составить программу для решения задачи Коши dy/dx=f(x,y), x=, y(a)=y0 четырехэтапным методом Рунге-Кутта, если f(x)=y-2x/y, a=0, b=1, y0=1

3
 Аватар для Phoenix-
1 / 1 / 0
Регистрация: 03.03.2009
Сообщений: 14
17.05.2009, 22:59  [ТС]
Вставил точное значение но че то оно не то выводит...
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
  {Решение задачи Коши при помощи численного метода Рунге-Кутта}
Program Runge_Kutta;
 uses crt;                            {подключение используемых модулей}
 var x0,xk,kp,k,i,n:integer;      {описание переменных используемых в }
     x,h,g:real;                                                                      {программе}
     y0,fk1,f,fk2,fk3,fk4:array[1..100] of real;
     y,z:array[1..100] of real;
 
{ n-порядок уравнения, у0-вектор(одномерный массив) начальных условий }
{х0,хk-границы интегрирования; h- шаг вычислений; кр - кратность вывода}
{}
 
              {/-/-/-/-/-/-/-/-/-/-/-процедура правых частей-/-/-/-/-/-/-/-/-/-/}
 Procedure right_parts;
            begin
                 f[1]:=y[2];                                       {система диф. уравнений 1-го}
                 f[2]:=2*y[2]-y[1]+5*x*exp(x);              { порядка}
   end;
              {/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/}
 Procedure vivod;                   {процедура вывода решения}
 begin
     write(' ',x:8:8);               {вывод "шага"}
     for i:=1 to n do              {количество выводимых столбцов решения}
     write('  ',y[i]:8:8);          {вывод результатов вычисления}
     writeln;
 end;
              {+++++++++++ ОСНОВНОЙ БЛОК ПРОГРАММЫ  +++++++++++}
 Procedure blok;
   begin x:=x0; k:=0;
         for i:=1 to n do begin y[i]:=y0[i];
                                z[i]:=y[i];
                            end;
   repeat
 {*/*/*/*/*/*/*/*/*/*/*/*/ПОДПРОГРАММА РУНГЕ-КУТТА */*/*/*/*/*/*/*/*/}
         right_parts;
         for i:=1 to n do begin fk1[i]:=h*f[i];
                                y[i]:=z[i]+fk1[i]/2;
                           end;
         x:=x+h/2;
         right_parts;
         for i:=1 to n do begin fk2[i]:=h*f[i];
                                y[i]:=z[i]+fk2[i]/2;
                           end;
         right_parts;
         for i:=1 to n do begin fk3[i]:=h*f[i];
                                y[i]:=z[i]+fk3[i];
                            end;
         x:=x+h/2;
         right_parts;
         for i:=1 to n do begin fk4[i]:=h*f[i];
                                y[i]:=z[i]+1/6*(fk1[i]+2*fk2[i]+2*fk3[i]+fk4[i]);
                                z[i]:=y[i];
                             end;
 {*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*}
         k:=k+1;
         if k=kp then begin
                             vivod;
                             k:=0;
                      end;
   until x>xk;
    end;
 {+++++++++++++++++++++++++++++++++++++++++++++++++++++++++}
 {*-*-*-*-*-*-*-*-*-*-*-ввод данных  *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-}
begin     clrscr;                 {очистка экрана}
highvideo;                       {включение повышенной яркости символов}
    writeln('                   введите порядок уравнения: ');
lowvideo;                          {выключение повышенной яркости}
    read(n);
highvideo;
    writeln('                   введите начальные условия: ');
lowvideo;
    for i:=1 to n do read(y0[i]);
highvideo;
    writeln('                   введите границы отрезка : ');
lowvideo;
    read(x0,xk);
highvideo;
    writeln('                   введите шаг вычислений: ');
lowvideo;
    read(h);
highvideo;
    writeln('                   введите кратность вывода на экран: ');
lowvideo;
    read(kp);         clrscr;
    {*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-}
 
 
highvideo;
    write('      x');                                       {вывод }
    for i:=1 to n do
    write('      ','  y(',i,')   ');                       {названий}
    writeln;  lowvideo;                                   { столбцов }
    g:=exp(x)+x*exp(x)+5/6*x*x*x*exp(x);
    writeln('нач.значения=','',y0[1]:8:8,'  ',y0[2]:8:8,'  ',g);
    blok;                     {вызов основного блока программы }
end.
0
 Аватар для Phoenix-
1 / 1 / 0
Регистрация: 03.03.2009
Сообщений: 14
19.05.2009, 16:13  [ТС]
Что ни кто не знает методов решения диф.уравнений?
0
 Аватар для Phoenix-
1 / 1 / 0
Регистрация: 03.03.2009
Сообщений: 14
21.05.2009, 22:54  [ТС]
Кто знает как сжать окно вывода на экран графика?

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
Program RGK;
 uses crt,graphABC;          {подключение используемых модулей}
 const  kp=1;
 var k,p,n,x0,xk,i,j,G,JJ,d,u,yy,yx:integer;     {описание переменных используемых в программе}
 x,M,MN,h,q:real;  { n-порядок уравнения, х0,хk-границы интегрирования; h- шаг вычислений; кр - кратность вывода}
 y0,y,z,f,fk1,fk2,fk3,fk4:array[0..100] of real ;          {массивы из ста элементов}
 b,bb:array[0..100]of real;
 
          {Процедура правых частей}
  procedure PPCh;
  begin
  f[1]:=y[2]; {первому элементу массива f присваивается второй элемент массива }
  f[2]:=2*y[2]-y[1]+5*x*exp(x);
  end;
 
procedure metodRGK;
 begin
 x:=x0;
 k:=0;
 for i:=1 to n do begin
 y[i]:=y0[i]; {вектору У присваивается начальные величины вектора У0}
 z[i]:=y[i];
end;
 repeat
  {*/ПОДПРОГРАММА РУНГЕ-КУТТА /*/}
 PPCh;
 for i:=1 to n do begin
  fk1[i]:=h*f[i];
  y[i]:=z[i]+fk1[i]/2;
 end;
  x:=x+h/2;
    PPCh;
  for i:=1 to n do begin
  fk2[i]:=h*f[i];
  y[i]:=z[i]+fk2[i]/2;
 end;
    PPCh;
  for i:=1 to n do begin
  fk3[i]:=h*f[i];
  y[i]:=z[i]+fk3[i];
 end;
  x:=x+h/2;
    PPCh;
  for i:=1 to n do begin
  fk4[i]:=h*f[i];
  y[i]:=z[i]+1/6*(fk1[i]+2*fk2[i]+2*fk3[i]+fk4[i]);
  z[i]:=y[i];
 end;
 
 
 k:=k+1;
 if k=kp then begin write('  ',x:2:5);
 for i:=1 to n do write('        ',y[i]:3:8);
 write('       ',(exp(x)+x*exp(x)+(5*x*x*x*exp(x)/6)):2:8);
 
 begin
 b[p]:=y[1];
 bb[p]:=y[2];
 p:=p+1;
end;
 writeln;
 k:=0;
end;
 until x>xk;
end;
begin
 clrscr;
  writeln('введите порядок уравнения: ');
  read(n);
  writeln('введите начальные условия: ');
  for i:=1 to n do read(y0[i]);
    writeln('введите границы отрезка : ');
    read(x0,xk);
  writeln('введите шаг вычислений: ');
   read(h);
    clrscr;
for i:=1 to n do
writeln;
 writeln('    x               y(1)               y(2)             tz    ');
 metodrgk;
 yy:=round((b[p-1]-b[0])*200+30);
 yx:=round(x*500);
 readln;
 
 clrscr;
 
SetWindowCaption('GRAF');
SetWindowSize(350+yx,250+yy);
line(70,(170+yy)-30,(150+yx)-20,(170+yy)-30);
line(65,(230+yy)-40,75,(230+yy)-40);
line(70,80,70,220+yy);
textout(55,70,'y');
textout(185+yx-65,167+yy-25,'x');
textout(57,160+yy-29,'0');
textout(25,232+yy-52,'-0.9');
line(70,75,67,85);
line(70,75,73,85);
line(150+yx-20,170+yy-30,150+yx-30,170+yy-30-3);
line(150+yx-20,170+yy-30,150+yx-30,170+yy-30+3);
 
MN:=0;
u:=round((exp(0)+0*exp(0)+(5*0*0*0*exp(0)/6))*200);
for i:=1 to 1000 do
begin
 M:=(exp(MN)+MN*exp(MN)+(5*MN*MN*MN*exp(MN)/6));
 G:=round(M*200);
 putpixel(70+d,30+yy-G+u-20,clLime);
 MN:=MN+0.001;
 d:=round(mn*500);
END;
mn:=0;  p:=0;
repeat
 mn:=mn+0.05;
 d:=round(mn*500);
 G:=round(b[p]*200);
 JJ:=round(bb[p]*200);
 setpencolor(clPurple);
 CIRCLE(70+d,30+yy-G+u-20,2);
 
 p:=p+1;
until mn>xk;
End.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.05.2009, 22:54
Помогаю со студенческими работами здесь

Метод Рунге - Кутта - Мерсона
Я написала из книги программу по методу Рунге - Кутты - Мерсона. Выдает ошибки. Я уже не знаю, что ещё можно исправить. type VEC=ARRAY ...

Метод Рунге-Кутта 4 порядка точности
Уважаемые Форумчане помогите решить задачу Коши для обыкновенного дифференциального уравнения y' =f(x, y) на промежутке методом...

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

Решение системы ОДУ методом Рунге-Кутта
Вообщем такая проблема: нужно оду 2 порядка преобразовать к системе оду первого порядка и найти ее решение методом Рунге-Кутта. Вот...

Решение диф. уравнения 1-го порядка методом Рунге-Кутта
Здраствуйте, извините за обращение, задание поди пустяковое, но и с ним мне нужна помощь( (2x–y)y'=(x^2)y+ 2 - само уравнение X0=a=0 ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru