Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.81/47: Рейтинг темы: голосов - 47, средняя оценка - 4.81
0 / 0 / 0
Регистрация: 10.05.2015
Сообщений: 11
1

Описать метод Эйлера и обратный метод Эйлера

10.05.2015, 18:05. Показов 8640. Ответов 21
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Может кто помочь с методом "обратный метод Эйлера(Backward Euler)"
как его описать? форлуму знаю, а вот как в самом коде

Описать метод Эйлера и обратный метод Эйлера
- прямой метод Эйлера
Описать метод Эйлера и обратный метод Эйлера
- обратный метод Эйлера(неявний)

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
#include<iostream>
#include <cmath>
 
using namespace std;
 
double f(const double x, const double y){
    return y*exp(0.7*x) - exp(-1.5*x);
}
 
void P_Euler(double x, double b, double h, double y){
    double d, c, xd = 0, yd = 1, yd1 = 0, hd = h / 2;
    cout << "\nПрямий метод Ейлера \n";
    for (; x < b + h; x += h){
        y += h * f(x, y);
        for (int j = 0; j < 1; j++){
            yd1 = yd + hd * f(xd, yd);
            yd = yd1; xd += hd;
        }
        c = (yd1 - y) / (h*h - h*h / 4);
        d = c * h*h;
        cout << "x =  " << x << " |  y = " << y << " |  yd = " << yd1 << " |  c = " << d << "\n";
        cout << "--------------------------------------------------------------------------------" << "\n";
    }
}
 
 
 
void V_Euler(double x, double b, double h, double y){
    double d, c, xd = 0, yd = 1, yd1 = 0, hd = h / 2;
    cout << "\nОбратный метод Ейлера \n";
    for (; x < b + h; x += h){
        y += h * f(x, y);
        //y += h * f(x,y)/(1-h);
        for (int j = 0; j < 1; j++){
            yd1 = yd + hd * f(xd, yd);
            //yd1 = yd + hd * f( xd,yd)/(1-hd);
            yd = yd1; xd += hd;
        }
        c = (yd1 - y) / (h*h - h*h / 4);
        d = c * h*h;
        cout << "x =  " << x << " |  y = " << y << " |  yd = " << yd1 << " |  c = " << d << "\n";
        cout << "--------------------------------------------------------------------------------" << "\n";
    }
}
 
 
 
void Runge_Kutta(double x, double b, double h, double y){
    double y0 = 1, x0 = 0, k0, k1, k2, k3, c, d, hd = h / 2;
    double yd0 = 1, yd1 = 0, xd0 = 0, kd0, kd1, kd2, kd3;
    cout << "\nМетодРунге-Кутта \n";
    for (; x < b; x += h){
        k0 = h * f(x, y);
        k1 = h * f(x + h / 2, y + k0 / 2);
        k2 = h * f(x + h / 2, y + k1 / 2);
        k3 = h * f(x + h, y + k2);
 
        y += (k0 + 2 * k1 + 2 * k2 + k3) / 6;
 
        for (int j = 0; j < 2; j++){
            kd0 = hd * f(xd0, yd0);
            kd1 = hd * f(xd0 + hd / 2, yd0 + kd0 / 2);
            kd2 = hd * f(xd0 + hd / 2, yd0 + kd1 / 2);
            kd3 = hd * f(xd0 + hd, yd0 + kd2);
            yd1 = yd0 + (kd0 + 2 * kd1 + 2 * kd2 + kd3) / 6;
            xd0 += hd; yd0 = yd1;
        }
        c = abs(y - yd1) / (h*h*h*h - h*h*h*h / 16);
        d = c * h*h*h*h;
        cout << "x =  " << x << " |  y = " << y << " |  yd = " << yd1 << " |  c = " << d << "\n";
        cout << "--------------------------------------------------------------------------------" << "\n";
    }
}
 
int main(){
    setlocale(LC_ALL, "Russian");
    double a, b, h, y0;
 
    cout << " a = "; cin >> a;
    cout << " b = "; cin >> b;
    cout << " h = "; cin >> h;
    cout << " y(0)= "; cin >> y0;
 
    P_Euler(a, b, h, y0);
    V_Euler(a, b, h, y0);
    Runge_Kutta(a, b, h, y0);
 
    system("PAUSE>>void");
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.05.2015, 18:05
Ответы с готовыми решениями:

Метод Эйлера, и Метод Лагранжа, в долгу не останусь
1)Метод Эйлера 2)Теорема Лагранжа задания вложены

Метод Эйлера
Пишу программу, и нужно реализовать двойной пересчет, вроде поняла как это сделать но не могу...

Метод эйлера
Прошу помощи. Помогите реализовать метод Эйлера при помощи C++. Задач на вытекания жидкости из...

Не работает метод Эйлера
Вроде метод Рунге-Кутты считает правильно, а вот метод Эйлера выдает какую-то ерунду. Подскажите,...

21
0 / 0 / 0
Регистрация: 10.05.2015
Сообщений: 11
11.05.2015, 13:57  [ТС] 21
Author24 — интернет-сервис помощи студентам
S_el, ой рунге-кутта забыла за него
0
0 / 0 / 0
Регистрация: 25.02.2013
Сообщений: 46
03.11.2016, 21:20 22
Откуда вы взяли функцию f?

Цитата Сообщение от leniwe Посмотреть сообщение
double f(const double x, const double y){
* * return y*exp(0.7*x) - exp(-1.5*x);

Ее же нет в условии задачи.
0
03.11.2016, 21:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.11.2016, 21:20
Помогаю со студенческими работами здесь

Явный метод Эйлера для ОДУ
есть код #include&quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;math.h&gt; #include &lt;fstream&gt; using...

Решения ОДУ, используя уточненный метод Эйлера
Вот задача: Разработать программу для численного решения ОДУ, используя уточненный метод Эйлера. В...

Комбинированный метод Эйлера для решения интегралов второго порядка
Три дня штудирую форум но так и не смог найти ответ на свой вопрос.... Нужно реализовать...

Метод Эйлера (решение дифференциального уравнения). Ошибка. Написание программы
Здравствуйте, прошу помощи, т.к. в программировании я не силен... Имеется полу написанная...


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

Или воспользуйтесь поиском по форуму:
22
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru