Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 23.12.2019
Сообщений: 13

Добавить вычисление с точносью для метода Рунге-Кутты 2-го порядка

27.04.2021, 15:53. Показов 1193. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте всем, написала программу, которая решает ОДУ методом Рунге-Кутты 2-го порядка, но тут понадобилось добавить допустимую точность. Бьюсь уже несколько дней, все не могу написать.
Значения a=0;
b=1.2;
y0=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
#include <iostream>
#include <cmath>
using namespace std;
float fun(float x, float y)
{
    return x/(2*y);
}
 
void run_kut(float a, float b, float y0, int n)
{
    float x, y, x1, y1, h, k1, k2, k3, k4;
    x = a;
    y = y0;
    h = (b - a) / n;
    for (int i = 0; i<n; i++)
    {
        k1 = h*fun(x, y);
        x1 = x + h / 2.;
        y1 = y + k1 / 2.;
        k2 = h*fun(x1, y1);
        y1 = y + k2 / 2.;
        k3 = h*fun(x1, y1);
        x += h;
        y1 = y + k3;
        k4 = h*fun(x, y1);
        y += (k1 + 2. * k2 + 2. * k3 + k4) / 6.;
        cout << "x[" << i + 1 << "]=" << x << "\t" << "y[" << i + 1 << "]=" << y << "\n";
    }
}
int main()
{
    setlocale(LC_ALL, "Russian");
    int n;
    float a, b, y0,e;
    system("Cls");
    cout << "Ведите a="; cin >> a;
    cout << "Ведите b="; cin >> b;
    cout << "Ведите  y0="; cin >> y0;
    n = (b-a)/pow(0.0001,1./4);
    cout<<"Шаг = " << (b - a) / n<<endl;
    cout << "\nМетод Рунге-Кутты:\n";
    run_kut(a, b, y0, n);
    cout << "\n";
    return 0;
    system("pause");
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.04.2021, 15:53
Ответы с готовыми решениями:

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

Автоматический выбор шага для метода Рунге-Кутты 4 порядка
Добрый день. Кто-нибудь знает можно ли это реализовать в маткаде, не делая всего вручную? Заранее спасибо.

Как написать программу для метода Рунге-Кутты 4 порядка с автоматическим выбором шага ?
помогите переделать ? #include &lt;iostream&gt; #include &lt;math.h&gt; #include &lt;conio.h&gt; using namespace std; float dydx(float x,...

2
 Аватар для LedZepMrjn
8 / 4 / 5
Регистрация: 26.04.2021
Сообщений: 31
27.04.2021, 16:18
Советую к математикам заглянуть
вроде как по вашей проблеме есть информация: Решение системы ОДУ 3-го порядка методом Рунге-Кутты 4-го порядка
Математики и дифуры тут: https://www.cyberforum.ru/differential-equations/

НЕ БИТЬ И НЕ ругаться, из мат.анализа знаю только пределы, свойства функции и по мелочам, выпускной класс заканчиваю.
1
Модератор
Эксперт CЭксперт С++
 Аватар для Volga_
5209 / 2927 / 1509
Регистрация: 14.12.2018
Сообщений: 5,267
Записей в блоге: 1
27.04.2021, 16:51
Лучший ответ Сообщение было отмечено Anlinta как решение

Решение

Anlinta, можно попробовать - это Рунге-Кутты 4-го порядка:
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
#include <iostream>
using namespace std;
 
double fdY(double X, double Y)
{
    return X / (2 * Y);
}
 
void run_kut(double Y0,double a, double b, int n)
{
    double h = (b - a) / n;
 
    double X = a;
    double Y = Y0;
 
    double k1Y, k2Y, k3Y, k4Y;
 
    cout << "X\tY" << endl;
    do
    {
        cout << X << "\t" << Y << endl;
        k1Y = h * fdY(X, Y);
        k2Y = h * fdY(X + h / 2, Y + k1Y / 2);
        k3Y = h * fdY(X + h / 2, Y + k2Y / 2);
        k4Y = h * fdY(X + h, Y + k3Y);
 
        X += h;
        Y += (k1Y + 2 * k2Y + 2 * k3Y + k4Y) / 6;
    } while (X <= b + h / 2);
}
 
int main()
{
    double Y0 = 1.0;
    double a = 0.0;
    double b = 1.2;
    int n = 10;
    run_kut(Y0, a, b, n);
    system("pause");
    return 0;
}
Успехов !
3
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.04.2021, 16:51
Помогаю со студенческими работами здесь

Применение метода Рунге-Кутты 4 порядка
Имеется ОДУ 2 порядка: y′′+1/x*y′+1/x=0 с начальными условиями y(1)=1;y′(1)=0.5;h0=0.1 Итак, как я понял, для уравнения второго...

Превод из метода Рунге-Кутты 4го порядка в метод Эйлера
Могут ли сильные в Си подкорректировать вот эту программу так чтобы она осуществляла расчёт системы диффуров методом Эйлера а не...

Решение Рунге-Кутты 4-го порядка для ОДУ 2-го порядка
Добрый день. Есть ОДУ y``+9y=0 и начальные условия, я думаю они не так важны А так же метод его решения, а именно Рунге-Кутты 4-го...

Метод Рунге-Кутты для ДУ 2-го порядка
Здравствуйте. Огромная просьба помочь с применением метода Рунге-Кутты для ДУ следующего вида: a*y''+b*y'=c, где a,b,c - константы. ...

Метод Рунге-Кутты для ДУ третьего порядка
Приветствую! Требуется написать реализацию метода Рунге-Кутты для ДУ третьего порядка. ДУ следующее: y''=xy'-x2y-1. Я выполнил...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru