Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 35, средняя оценка - 4.94
Limmer
0 / 0 / 1
Регистрация: 03.10.2012
Сообщений: 5
#1

Решение системы дифференциальных уравнений методом Эйлера - C++

23.01.2014, 13:23. Просмотров 8291. Ответов 4
Метки нет (Все метки)

В интернете нашел похожий код, но для 1 уравнения, может кто помочь сделать для 2? Тоесть для системы
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
#include "stdafx.h"
 
 
#include<iostream>
using namespace std;
void func(double& Xi, double& Yi,double kx, double ky, double h);
int main()
{
double h,Xi,Yi,Xkon,kx,ky;
int n;
cout<<"\t"<<"\t"<<"******************************* *****************n";
cout<<"\t"<<"\t"<<"* * "<<"\n";
cout<<"\t"<<"\t"<<"* Reshenie difurov 1 poryadka methodom Eulera *"<<"\n"; 
cout<<"\t"<<"\t"<<"******************************* ******************" ;
cout<<endl;
cout<<"Vvedite nachaloe znachenie intervala [a,b]=";
cin>>Xi;
cout<<"Vvedite konechoe znachenie intervala [a,b]=";
cin>>Xkon;
cout<<"Vvedite chislo shagov=";
cin>>n;
h=(Xkon- Xi)/n;
cout<<endl;
cout<<"Vvedite nachalnoe uslovie y=";
cin>>Yi;
cout<<"Vvedite koefitsient pri x=";
cin>>kx;
cout<<"Vvedite koefitsient pri y=";
cin>>ky;
cout<<"|Interval|Chislo shagov|Shag prirasheniya|Nacalnoe Y|Uravnenie vida:| "<<"\n";
cout<<"|--------|-------------|-----------------|----------|---------------|"<<"\n";
cout<<"|"<<"["<<Xi<<","<<Xkon<<"]" <<" |"<<n<<" |"<<h<<" |"<<Yi<<" |"<<"y'="<<kx<<"x"<<"+"<<ky<<"y"<<" |"<<"\n";
cout<<endl;
cout<<endl;
for (int i=1;i<=n;i++)
{ 
func(Xi,Yi,kx,ky,h);
cout<<"\n";
}
return 0;
}
 
void func(double& Xi, double& Yi, double kx, double ky, double h)
{
double f1,Yprom,a,Xprom;
f1=(kx*Xi)+(ky*Yi);
Yprom=Yi+f1*(h/2);
Xprom=Xi+h/2;
a=kx*Xprom-Yprom;
Yi=Yi+a*h;
cout<<"\t"<<"\t"<<"Interval x="<<Xi<<"\t"<<" Resultat y="<<Yi;
Xi=Xi+h;
}
0
Миниатюры
Решение системы дифференциальных уравнений методом Эйлера  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.01.2014, 13:23
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Решение системы дифференциальных уравнений методом Эйлера (C++):

Решение систем дифференциальных уравнений методами Эйлера
Здравствуйте, дорогие программисты и просто любители языка С++! В принципе, моя будущая специальность никак не пересекается с...

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

Численное интегрирование системы дифференциальных уравнений методом Рунге - Кутта
Доброго времени суток. Пытаюсь разработать функцию для численного интегрирования систем дифференциальных уравнений методом Рунге-Кутта. При...

Функция для численного интегрирования системы дифференциальных уравнений методом Рунге - Кутта
Доброго времени суток. У меня есть вот такая задачка: Разработать функцию для численного интегрирования системы дифференциальных...

Решение системы уравнений методом Гаусса
Всем доброго времени суток. Нужно написать программу для решения СЛАУ методом Гаусса. #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #define...

Решение системы уравнений методом Гауса
Вот, ради интереса попробовал написать программу (С++). Сейчас она работает, но выполняет лишь первый шаг. Нужно чтобы программа выполняла...

4
S_el
2133 / 1661 / 354
Регистрация: 15.12.2013
Сообщений: 6,593
23.01.2014, 14:08 #2
Цитата Сообщение от Limmer Посмотреть сообщение
В интернете нашел похожий код, но для 1 уравнения, может кто помочь сделать для 2? Тоесть для системы
Уверен,что в интернете можно найти код и для системы.Да что там в интернете,думаю и на этом форуме,есть не одна реализация.
0
Limmer
0 / 0 / 1
Регистрация: 03.10.2012
Сообщений: 5
23.01.2014, 14:25  [ТС] #3
Цитата Сообщение от S_el Посмотреть сообщение
Уверен,что в интернете можно найти код и для системы.Да что там в интернете,думаю и на этом форуме,есть не одна реализация.
В том то и беда что использовал поиск но ничего не нахожу. Запросы "метод эйлера для систем уравнений" и "модифицированный метод эйлера" ни к чему не приводят
0
S_el
2133 / 1661 / 354
Регистрация: 15.12.2013
Сообщений: 6,593
23.01.2014, 14:38 #4
Находите по этим формулам:

http://www.cyberforum.ru/cgi-bin/latex.cgi?{y}_{n+1}={y}_{n}+h*(2*{y}_{n}-{z}_{n}-{{x}_{n}}^{2})\\<br />
{z}_{n+1}={z}_{n}+h*(-3*{y}_{n}+{z}_{n}+{x}_{n})\\
1
Nallikaea
0 / 0 / 0
Регистрация: 03.10.2014
Сообщений: 1
06.10.2014, 22:29 #5
Надеюсь поможет кому-то. Моё решение системы 2х уравнений методом Эйлера и методом Эйлера с пересчетом. За красоту написания не судите ибо я физик, а не программист
(Для проверки точное решение первого 2сhx-1.)
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
#include <iostream>
#include <cmath>
#include <fstream>
 
using namespace std;
 
double dy_dx (double, double, double);
double dz_dx (double, double, double);
double Euler (int, double, double, double, double, double);
double Euler_modify (int, double, double, double, double, double, double, double);
 
int main()
{
    
    double a, b; 
    int N;
    double x=0, y=1, yi, z=0, zi, y1;
    cout<<"Set the interval from a to b:"<<endl;
    cin>>a>>b;  
    cout<<"Set the number of partition points:"<<endl;
    cin>>N; cout<<endl;
    double h=(b-a)/N;
    
    Euler (N, x, y, z, h, y1);
    Euler_modify (N, x, y, z, yi, zi, h, y1);
    
    cout<<"All done! Check your output file!"<<endl;
    return 0;
}
 
double dy_dx (double x, double y, double z)
{
    return x-z;
}
double dz_dx (double x, double y, double z)
{
    return -y;
}
double Euler (int N, double x, double y, double z, double h, double y1)
{
    int i=0;
    ofstream out("out.txt");
    while (i<=N)
    {
        
        y1=y+dy_dx(x, y, z)*h;
        z=z+dz_dx(x, y, z)*h;
        y=y1;
        x=x+h;
        
        out<<x<<" "<<y<<" "<<z<<endl;
        
        i++;
    }
    out.close();
    
};
double Euler_modify (int N, double x, double y, double z, double yi, double zi, double h, double y1)
{
    int i=0;
    ofstream out("out_m.txt");
    while (i<=N)
    {
        
        yi=y+dy_dx(x, y, z)*h;
        zi=z+dz_dx(x, y, z)*h;
        y1=y+(dy_dx(x, y, z)+dy_dx(x+h, yi, zi))*h/2;
        z=z+(dz_dx(x, y, z)+dz_dx(x+h, yi, zi))*h/2;
        y=y1;
        x=x+h;
        
        out<<x<<" "<<y<<" "<<z<<endl;
        
        i++;
    }
    out.close();
    
};
0
06.10.2014, 22:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.10.2014, 22:29
Привет! Вот еще темы с решениями:

Решение системы линейных уравнений методом Гаусса
необходимо решить данную задачу в visual studio c++, если можно с комментариями, в консольном режиме Реализуйте функцию решения...

Решение системы линейных уравнений матричным методом
Друзья, помогите пожалуйста с кодом. Нужен простой, работающий простенький код на С++ позволяющий решать систему линейных уравнений...

Решение системы линейных уравнений методом Крамера
Написать программу решения системы линейных уравнений методом Крамера. Количество переменных до 20. Программа должна выводить результаты...

Решение системы нелинейных уравнений методом Ньютона (С/С++)
Здравствуйте! Помогите пожалуйста написать программу :cry: У меня есть система из 2х уравнений (x+lnx)(y+lny)=1 ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru