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

С++ для начинающих

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

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

23.01.2014, 13:23. Просмотров 6530. Ответов 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++):

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

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

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

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

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

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

4
S_el
2109 / 1628 / 308
Регистрация: 15.12.2013
Сообщений: 6,531
23.01.2014, 14:08 #2
Цитата Сообщение от Limmer Посмотреть сообщение
В интернете нашел похожий код, но для 1 уравнения, может кто помочь сделать для 2? Тоесть для системы
Уверен,что в интернете можно найти код и для системы.Да что там в интернете,думаю и на этом форуме,есть не одна реализация.
0
Limmer
0 / 0 / 0
Регистрация: 03.10.2012
Сообщений: 5
23.01.2014, 14:25  [ТС] #3
Цитата Сообщение от S_el Посмотреть сообщение
Уверен,что в интернете можно найти код и для системы.Да что там в интернете,думаю и на этом форуме,есть не одна реализация.
В том то и беда что использовал поиск но ничего не нахожу. Запросы "метод эйлера для систем уравнений" и "модифицированный метод эйлера" ни к чему не приводят
0
S_el
2109 / 1628 / 308
Регистрация: 15.12.2013
Сообщений: 6,531
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
Сообщений: n/a
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();
    
};
06.10.2014, 22:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.10.2014, 22:29
Привет! Вот еще темы с ответами:

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

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

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

Решение системы уравнений компактным методом исключений - C++
На С++ надо решить систему уравнений компактным методом исключений. Элементы матрицы- комплексные числа, введенные в символьной форме....


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

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

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