Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 1
Регистрация: 29.12.2009
Сообщений: 6

Метод Адамса

25.12.2010, 21:58. Показов 3118. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
ЗДравствуйте, вот у меня проблемка тут возникла: нужно сделать прогу которая считает уравнение методами Рунге-Кутты 4 и вторым вариантом метода Адамса. С первым методом я разобрался быстро, а вот со вторым тяжелее((((не могу понять какие точки в нем использовать
Вот формула Адамса:https://www.cyberforum.ru/cgi-bin/latex.cgi?{x}_{m+1}={x}_{m}+(h/24)*(55*f({x}_{m},{t}_{m})-59*f({x}_{m-1},{t}_{m-1})+37*f({x}_{m-2},{t}_{m-2})-9*f({x}_{m-3},{t}_{m-3}))
Какие точки из моей программы мне брать и подставлять в эту прогу чтоб метод работал так как надо?

C++
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
Series1->Clear();
Series2->Clear();
Series3->Clear();
Series4->Clear();
for (int i = 0; i < StringGrid1->RowCount; i++)
for (int j = 0; j < StringGrid1->ColCount; j++) StringGrid1->Cells[j] [i]= NULL;
StringGrid1->Cells[0] [0]=  "t";
StringGrid1->Cells[1] [0]=  "y(t)";
StringGrid1->Cells[2] [0]=  "y'(t)";
StringGrid1->Cells[3] [0]=  "y''(t)";
StringGrid1->Cells[4] [0]=  "y'''(t)";
 int j;
 float tn,tk,dt;
 tn=StrToFloat(LabeledEdit1->Text);
 tk=StrToFloat(LabeledEdit3->Text);
 dt=StrToFloat(LabeledEdit2->Text);
double k1,k2,k3,k4,
       l1,l2,l3,l4,
       n1,n2,n3,n4,
       m1,m2,m3,m4,
       yx,y1x,y2x,y3x;
float h,t;
       yx=-2;
       y1x=1;
       y2x=0;
       y3x=0;
       h=dt;
       t=0;
  for(t=tn,j=1;t<tk;t+=dt,j++)
  {
  //****************Вычисление коэф РК4
  k1=y1x;
  l1=y2x;
  m1=y3x;
  n1=2*cos(t)-y2x;
  //****************
  k2=(y1x+0.5*h*l1);
  l2=(y2x+0.5*h*m1);
  m2=(y3x+0.5*h*n1);
  n2=2*cos(t+0.5*h)-(y2x+0.5*h*m1);
  //****************
  k3=(y1x+0.5*h*l2);
  l3=(y2x+0.5*h*m2);
  m3=(y3x+0.5*h*n2);
  n3=2*cos(t+0.5*h)-(y2x+0.5*h*m2);
  //****************
  k4=(y1x+h*l3);
  l4=(y2x+h*m3);
  m4=(y3x+h*n3);
  n4=2*cos(t+h)-(y2x+h*m3);
  //****************
 yx=yx+(h/6)*(k1+2*k2+2*k3+k4);
 y1x=y1x+(h/6)*(l1+2*l2+2*l3+l4);
 y2x=y2x+(h/6)*(m1+2*m2+2*m3+m4);
 y3x=y3x+(h/6)*(n1+2*n2+2*n3+n4);
 
 StringGrid1->Cells[0][j]=FloatToStr(t);
 StringGrid1->Cells[1][j]=FloatToStr(yx);
 StringGrid1->Cells[2][j]=FloatToStr(y1x);
 StringGrid1->Cells[3][j]=FloatToStr(y2x);
 StringGrid1->Cells[4][j]=FloatToStr(y3x);
 //StringGrid1->Cells[3][j]=FloatToStr(y2x);
  Series1->AddXY(t,yx);
  Series2->AddXY(t,y1x);
  Series3->AddXY(t,y2x);
  Series4->AddXY(t,y3x);
у меня уравнение исходное y''''(x)+y"(x)-2*cos(x)=0

Добавлено через 3 часа 46 минут
C++
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
{
Series1->Clear();
Series2->Clear();
Series3->Clear();
Series4->Clear();
 
Series5->Clear();
Series6->Clear();
Series7->Clear();
Series8->Clear();
for (int i = 0; i < StringGrid1->RowCount; i++)
for (int j = 0; j < StringGrid1->ColCount; j++) StringGrid1->Cells[j] [i]= NULL;
 
for (int i = 0; i < StringGrid2->RowCount; i++)
for (int j = 0; j < StringGrid2->ColCount; j++) StringGrid1->Cells[j] [i]= NULL;
 
StringGrid1->Cells[0] [0]=  "t";
StringGrid1->Cells[1] [0]=  "y(t)";
StringGrid1->Cells[2] [0]=  "y'(t)";
StringGrid1->Cells[3] [0]=  "y''(t)";
StringGrid1->Cells[4] [0]=  "y'''(t)";
 
StringGrid2->Cells[0] [0]=  "t";
StringGrid2->Cells[1] [0]=  "y(t)";
StringGrid2->Cells[2] [0]=  "y'(t)";
StringGrid2->Cells[3] [0]=  "y''(t)";
StringGrid2->Cells[4] [0]=  "y'''(t)";
 
 
 int j;
 float tn,tk,dt;
 tn=StrToFloat(LabeledEdit1->Text);
 tk=StrToFloat(LabeledEdit3->Text);
 dt=StrToFloat(LabeledEdit2->Text);
double k1,k2,k3,k4,
       l1,l2,l3,l4,
       n1,n2,n3,n4,
       m1,m2,m3,m4,
       yx[150],y1x[150],y2x[150],y3x[150];
       //yx,y1x,y2x,y3x;
double h,t;
       yx[0]=-2;
       y1x[0]=1;
       y2x[0]=0;
       y3x[0]=0;
       h=dt;
       t=0;
  for(t=tn,j=0;t<tk;t+=dt,j++)
 
  {
    //****************//Метод РК4
  k1=y1x[j];
  l1=y2x[j];
  m1=y3x[j];
  n1=2*cos(t)-y2x[j];
  //****************
  k2=(y1x[j]+0.5*h*l1);
  l2=(y2x[j]+0.5*h*m1);
  m2=(y3x[j]+0.5*h*n1);
  n2=2*cos(t+0.5*h)-(y2x[j]+0.5*h*m1);
  //****************
  k3=(y1x[j]+0.5*h*l2);
  l3=(y2x[j]+0.5*h*m2);
  m3=(y3x[j]+0.5*h*n2);
  n3=2*cos(t+0.5*h)-(y2x[j]+0.5*h*m2);
  //****************
  k4=(y1x[j]+h*l3);
  l4=(y2x[j]+h*m3);
  m4=(y3x[j]+h*n3);
  n4=2*cos(t+h)-(y2x[j]+h*m3);
  //****************
 yx[j+1]=yx[j]+(h/6)*(k1+2*k2+2*k3+k4);
 y1x[j+1]=y1x[j]+(h/6)*(l1+2*l2+2*l3+l4);
 y2x[j+1]=y2x[j]+(h/6)*(m1+2*m2+2*m3+m4);
 y3x[j+1]=y3x[j]+(h/6)*(n1+2*n2+2*n3+n4);
 
 StringGrid1->Cells[0][j+1]=FloatToStr(t);
 StringGrid1->Cells[1][j+1]=FloatToStr(yx[j+1]);
 StringGrid1->Cells[2][j+1]=FloatToStr(y1x[j+1]);
 StringGrid1->Cells[3][j+1]=FloatToStr(y2x[j+1]);
 StringGrid1->Cells[4][j+1]=FloatToStr(y3x[j+1]);
 
  Series1->AddXY(t,yx[j+1]);
  Series2->AddXY(t,y1x[j+1]);
  Series3->AddXY(t,y2x[j+1]);
  Series4->AddXY(t,y3x[j+1]);   }
 
     for(t=tn,j=3;t<tk;t+=dt,j++)//Метод Адамса 
  {
      yx[j+1]=yx[j]+(h/24)*(55*yx[j]-59*yx[j-1]+37*yx[j-2]-9*yx[j-3]);
      y1x[j+1]=y1x[j]+(h/24)*(55*y1x[j]-59*y1x[j-1]+37*y1x[j-2]-9*y1x[j-3]);
      y2x[j+1]=y2x[j]+(h/24)*(55*y2x[j]-59*y2x[j-1]+37*y2x[j-2]-9*y2x[j-3]);
      y3x[j+1]=2*cos(t)-y2x[j]+(h/24)*(55*(2*cos(t)-y2x[j])-59*(2*cos(t)-y2x[j-1])+37*(2*cos(t)-y2x[j-2])-9*(2*cos(t)-y2x[j-3]));
          }
          for(t=tn,j=0;t<tk;t+=dt,j++)
          {
 StringGrid2->Cells[0][j+1]=FloatToStr(t);
 StringGrid2->Cells[1][j+1]=FloatToStr(yx[j+1]);
 StringGrid2->Cells[2][j+1]=FloatToStr(y1x[j+1]);
 StringGrid2->Cells[3][j+1]=FloatToStr(y2x[j+1]);
 StringGrid2->Cells[4][j+1]=FloatToStr(y3x[j+1]);
 
  Series5->AddXY(t,yx[j+1]);
  Series6->AddXY(t,y1x[j+1]);
  Series7->AddXY(t,y2x[j+1]);
  Series8->AddXY(t,y3x[j+1]);
                       }
вот смог переделать, но значения производных немного не совпадают((( в чем проблема?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.12.2010, 21:58
Ответы с готовыми решениями:

Метод Адамса-Моултена
Решить приближенно задачу Коши методом Адамса-Моултона, либо методом Эйлера. {y}^{,}=1+0.2*y*sinx-{y}^{2}; y(0)=0

Метод Адамса - исправить ошибки
в коде программы 3 ошибки, тот кто шарит, помогите исправить) #include &lt;math.h&gt; #include &lt;stdio.h&gt; const float a=0,b=2; ...

Неясности в реализации метода Адамса
Добрый вечер, форумчане. Я кажется запутался в реализации этого метода. Скажем порядок метода - 4. Есть: // правые части...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.12.2010, 21:58
Помогаю со студенческими работами здесь

СЛАУ. Метод обратной матрицы, метод Гаусса, метод Крамера, метод Зейделя
Помогите ребят. Не могу построить алгоритмы для этих методов Язык C++

Численное интегрирование системы дифференциальных уравнений методом Адамса
как перевести код из С в С++ код на решение численного интегрирования системы дифференциальных уравнений методом Адамса. #include...

Метод медиан из трех элементов VS улучшенный быстрый метод сортировки(метод Бентли-Макилроя)
Здравствуйте! Дали весьма интересное задание. Сравнить два вышеуказанных метода сортировки для массива из 10000 элементов, результаты...

Мой код - метод бисекции, метод секущих (метод хорд)
Всем привет!!! Изучаем в институте С++. Сделал код, и там, и там одна и та же проблема - при любых вбиваемых значениях программа делает...

Графики - Метод Рунге-Кутта и Метод Адамса
Пожалуйста помогите!!! очень срочно нужно сделать графики (два в одном): метод Рунге-Кутта и метод Адамса......


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
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 На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru