Форум программистов, компьютерный форум CyberForum.ru

Решение ОДУ 2го порядка - C++

Восстановить пароль Регистрация
 
Aladin
0 / 0 / 0
Регистрация: 17.05.2011
Сообщений: 5
17.05.2011, 20:15     Решение ОДУ 2го порядка #1
Здравствуйте нужна ваша помощь
ОДУ 2го порядка. y''=5y=0, y(0)=0 y(1)=1;
Необходимо решить методом рунге кутта 4го п.т.

Я сделал как систему ду.
z' = -5y;
y'=z;

Не получается реализовать
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
#include "stdafx.h" 
#include "iostream" 
 
using namespace std; 
 
double y(double x, double y,double z) 
{ 
return -5*y;
} 
double z(double x, double y,double z) 
{ 
return z; 
} 
 
 
 
void r_k_4(double xn,double xk,double h,double y0,double z0,int n) 
{ 
int i; 
double x; 
double *yt = new double [n]; 
double *zt = new double [n]; 
double k1,k2,k3,k4; 
double k_1,k_2,k_3,k_4; 
 
for(x=xn,i=0; x<=xk,i<=n; x+=h,i++) 
{ 
k1 = h * y(x, xn, z0); 
k_1 = h * z(x, xn, z0); 
 
k2 =h*y(x+h/2, y0+k1/2, z0+k_1/2); 
k_2=h*z(x+h/2, y0+k1/2, z0+k_1/2); 
 
k3=h*y(x+h/2,y0+k2/2,z0+k_2/2); 
k_3=h*z(x+h/2,y0+k2/2,z0+k_2/2); 
 
k4=h*y(x+h,y0+k3,z0+k_3); 
k_4=h*z(x+h,y0+k3,z0+k_3); 
 
yt[i]=y0+(k1+2*k2+2*k3+k4)/6; 
zt[i]=z0+(k_1+2*k_2+2*k_3+k_4)/6; 
} 
 
for(x=xn,i=0; x<=xk,i<=n; x+=h,i++) 
{ 
 printf("y[%.2lf] = %3.16lf z[%.2lf] = %3.16lf\n",x,yt[i],x,zt[i]); 
} 
} 
 
void main() 
{ 
double xn=0.0,xk=1.0,y0=0,z0=1,n,h; 
cout<<"N = "; cin>>n; 
h=(xk-xn)/n; 
r_k_4(xn,xk,h,y0,z0,n);
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.05.2011, 20:15     Решение ОДУ 2го порядка
Посмотрите здесь:

Решение ОДУ в FreePascal C++
C++ Решение диф. уравнения для колебаний методом Рунге—Кутты 4го порядка.(С++)
C++ Решения ОДУ, используя уточненный метод Эйлера
Решение СЛАУ третьего порядка C++
C++ Массивы (найти сумму 1го 6го 11го элемента ,потом 2го 7го 12го элемента и так далее)
C++ Матрица порядка n
Явный метод Эйлера для ОДУ C++
Программа для решения систем ОДУ неявный методом Эйлера C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 05:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru