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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Степень вывести через указатель,a десятичный логарифм через функцию рекуренционную http://www.cyberforum.ru/cpp-beginners/thread1079367.html
Написать функции,где 3 натуральных числа a,b,c(a/b-десятичный логарифм).Чтобы степень вывести через указатель,a десятичный логарифм через функцию рекуренционную.
C++ Обмен местами двух заданных поддеревьев Собственно, вопрос заключается в том, чтобы реализовать обмен местами двух заданных поддеревьев на C++. http://www.cyberforum.ru/cpp-beginners/thread1079358.html
C++ Построение таблицы истинности
Нужно построить таблицу истинности. Таблицу программа вроде строит, но строит только до: при n=3 и 2^n=8, а если уже будет 4 и 16, выдает ошибку. Помогите найти. #include "stdafx.h" #include <iostream> using namespace std; int _tmain(int argc, _TCHAR* argv) { int m=8, n=3;
C++ Вызов типа
Имеется объявления пипов... int*m4; int(*m5); int**m6; int(*m7)(int,float); Подскажите,как каждый можно вызвать?
C++ Дан одномерный целочисленный массив А из N элементов. Найти в нём максимальное значение среди простых чисел http://www.cyberforum.ru/cpp-beginners/thread1079347.html
Здравствуйте,уважаемые программисты!) Помогите решить,пожалуйста, данную задачку в С++: Дан одномерный целочисленный массив А из N элементов. Найти в нём максимальное значение среди простых чисел. ________________________________________________________________________________________________ (К сожалению, откровенно говоря, я учусь на 1м курсе вечерней форме обучения, и преподавательница по...
C++ Генератор сообщений MessageGenerator Задача приложена в pdf. Вопрос: 1. Как реализовать в Visual Studio эту схему? 2. Что из себя представляет MessageGenerator, и приемник сообщений. Как их реализовать? Золотые вы люди, если подскажите решение кодом. подробнее

Показать сообщение отдельно
Nallikaea
Сообщений: n/a
06.10.2014, 22:29     Решение системы дифференциальных уравнений методом Эйлера
Надеюсь поможет кому-то. Моё решение системы 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();
    
};
 
Текущее время: 01:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru