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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.76
isu
6 / 0 / 0
Регистрация: 01.10.2012
Сообщений: 64
#1

Метод Рунге-Кутта 3 порядка - C++

20.12.2013, 01:15. Просмотров 2423. Ответов 12
Метки нет (Все метки)

Начерикал что-то,вроде бы работает,но не уверен,да и не доходит,как под условия сделать задачи,тыкните,пожалуйста
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
#include "stdafx.h"
#include<math.h>
#include<stdio.h>
 
double f(double x, double y)
{
    return(x - y);
}
 
void main()
{
    int i, n;
    double K1, K2, K3,  h, x, x1, y;
    printf("vvedite zna4enie y0=");
    scanf_s ("%lf", &y);
    printf("vvedite zna4enie x0=");
    scanf_s ("%lf", &x);
    printf("vvedite zna4enie xn=");
    scanf_s ("%lf", &x1);
    printf("vvedite veli4iny shaga h=");
    scanf_s ("%lf", &h);
 
    n = (x1 - x) / h;
 
    for (i = 0; i<n; i++)
    {
        K1 = f(x, y);
        printf("\n %lf", K1);
 
        K2 = f(x + h / 2, y + h / 2 * K1);
        printf("\n %lf", K2);
 
        K3 = f(x + h / 2, y + h / 2 * K2);
        printf("\n %lf", K3);
 
        
 
        y = y + h / 6 * (K1 + 2 * K2 + 2 * K3);
        printf("\n %lf", y);
    }
    scanf_s ("%lf", &y);
}
Задание:Методом Рунге-Кутты 3-го порядка решить уравнение http://www.cyberforum.ru/cgi-bin/latex.cgi?dy\div dx = 1\div  (x+y) на отрезке [1;3] c начальным условием http://www.cyberforum.ru/cgi-bin/latex.cgi?y(1)=3.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.12.2013, 01:15     Метод Рунге-Кутта 3 порядка
Посмотрите здесь:

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

Метод Рунге-Кутта 4 порядка (исправить код) - C++
Всем привет. Нужно решить пример методом Рунге-Кутта 4-го порядка точности. Пример: y=1/2*x*y x0=0 - начало интервала. y0=1 -...

Метод Рунге-Кутта пятого порядка, модификация Мерсона - C++
помогите сделать этот метод при условии - автоматический выбор шага по контрольным членами((( заранее спасибо!!

Метод Рунге-Кутта - C++
Нужно решить диффур второго порядка. При решении выводятся нуля. Где я оплошал? #include &lt;math.h&gt; using namespace std; ...

Метод Рунге-Кутта - C++
Помогите написать метод Рунге Кутта для решение систем диф. уравнений из 4 уравнений. dx/dt=Px=f1(t,x,y,Px,Py) dy/dt=Py=f2(t,x,y,Px,Py)...

метод Рунге-Кутта - C++
Помогите написать программу на хаотичное движение бильярдных шаров методом Рунге-Кутта. При столкновении шары должны отталкиваться, ну и...

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
S_el
2092 / 1599 / 306
Регистрация: 15.12.2013
Сообщений: 6,420
20.12.2013, 09:23     Метод Рунге-Кутта 3 порядка #2
Оно и не будет работать,у вас в программе
C++
1
2
3
4
 double f(double x, double y)
{
    return(x - y);
}
а надо

C++
1
2
3
4
double f(double x, double y)
{
    return 1/(x - y);
}
isu
6 / 0 / 0
Регистрация: 01.10.2012
Сообщений: 64
20.12.2013, 09:26  [ТС]     Метод Рунге-Кутта 3 порядка #3
А остальное правильно?
Ev_Hyper
Заблокирован
20.12.2013, 09:32     Метод Рунге-Кутта 3 порядка #4
Вы уверены, что правильно нашли K?
и разве сумма коэф. при К не должна быть = 1?

Добавлено через 2 минуты
Вы что пытаетесь переделать ф-лы для 4-го порядка под 3?
isu
6 / 0 / 0
Регистрация: 01.10.2012
Сообщений: 64
20.12.2013, 09:40  [ТС]     Метод Рунге-Кутта 3 порядка #5
В точку(
Ev_Hyper
Заблокирован
20.12.2013, 09:52     Метод Рунге-Кутта 3 порядка #6
так может проще переделать под 4-порядок?
Добавьте 4-ое K:
C++
1
K4 = f(x + h , y + h * K3);
и тут измените:
C++
1
y = y + h / 6 * (K1 + 2 * K2 + 2 * K3+K4);
ну или переделайте под 3:

C++
1
2
3
 K1 = f(x, y);
 K2 = f(x + h / 3, y + h / 3 * K1);
 K3 = f(x + h / 2, y + 1 / 4 * K1+1/4*K2);
и p1=1/6,p2=-3/2,p3=1/6;

Добавлено через 51 секунду
Вариантов p, а соответственно и K может быть много
isu
6 / 0 / 0
Регистрация: 01.10.2012
Сообщений: 64
20.12.2013, 10:45  [ТС]     Метод Рунге-Кутта 3 порядка #7
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
#include "stdafx.h"
#include<math.h>
#include<stdio.h>
 
double f(double x, double y)
{
    return 1/(x - y);
}
 
void main()
{
    int i, n;
    double K1, K2, K3,  h, x, x1, y;
    printf("vvedite zna4enie y0=");
    scanf_s ("%lf", &y);
    printf("vvedite zna4enie x0=");
    scanf_s ("%lf", &x);
    printf("vvedite zna4enie xn=");
    scanf_s ("%lf", &x1);
    printf("vvedite veli4iny shaga h=");
    scanf_s ("%lf", &h);
 
    n = (x1 - x) / h;
 
    for (i = 0; i<n; i++)
    {
        K1 = f(x, y);
        K2 = f(x + h / 3, y + h / 3 * K1);
        K3 = f(x + h / 2, y + 1 / 4 * K1 + 1 / 4 * K2);
 
        
 
        y = y + h / 6 * (K1 + 4 * K2 +  K3);
        printf("\n %lf", y);
    }
    scanf_s ("%lf", &y);
}
вот что получилось,с вашей помощью)

Добавлено через 38 минут
проверьте,пожалуйста
Ev_Hyper
Заблокирован
20.12.2013, 12:05     Метод Рунге-Кутта 3 порядка #8
Прошу прощения, спешил на пару, поэтомунаписал немного неправильно =/

Вернусь с занятий перепроверю и напишу как правильно. Формулы посмотрите в интернетею
По коду n сделайте double и проверьте формулу y, разве там нужно делить на (K1+,,,), а не умножать?
alexandrmironov
0 / 0 / 0
Регистрация: 20.10.2013
Сообщений: 3
20.12.2013, 12:22     Метод Рунге-Кутта 3 порядка #9
Присоединяюсь к вопросу, тоже нужна программа для вычисления дифф.уравнения методом Рунге-Кутты третьего порядка.
S_el
2092 / 1599 / 306
Регистрация: 15.12.2013
Сообщений: 6,420
20.12.2013, 17:31     Метод Рунге-Кутта 3 порядка #10
опять не правильно.
C++
1
2
K2 = f(x + h / 3, y + h / 3 * K1);
K3 = f(x + h / 2, y + 1 / 4 * K1 + 1 / 4 * K2);
Из какой формулы вы брали эти коэффициенты?

Добавлено через 15 минут
А еще вы интегрируете не правильно,у вас x вообще не меняется.
Ev_Hyper
Заблокирован
20.12.2013, 17:35     Метод Рунге-Кутта 3 порядка #11
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
double f(double x, double y)
{
   return 1/(x - y);
 
}
 
void main()
{
    double K1, K2, K3,  h, x, x1, y,i;
    printf("vvedite zna4enie y0=");
    scanf_s ("%lf", &y);
    printf("vvedite zna4enie x0=");
    scanf_s ("%lf", &x);
    printf("vvedite zna4enie xn=");
    scanf_s ("%lf", &x1);
    printf("vvedite veli4iny shaga h=");
    scanf_s ("%lf", &h);
 
     
    for (x; x<x1; x+=h)
    {
        K1 = f(x, y);
        K2 = f(x + h / 3, y + h * K1 / 3 );
        K3 = f(x + h / 2, y + K1*h / 4 + h* K2 / 4 );
 
        y = y + h * (K1/2 - 3 * K2/2 +  2*K3);
        printf("\n %lf", y);
    }
    scanf_s ("%lf", &y);
}
проверь такю Есть тестовый пример?
isu
6 / 0 / 0
Регистрация: 01.10.2012
Сообщений: 64
21.12.2013, 01:03  [ТС]     Метод Рунге-Кутта 3 порядка #12
Только условие задачи (
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.12.2013, 01:55     Метод Рунге-Кутта 3 порядка
Еще ссылки по теме:

Метод Рунге-Кутта. - C++
хотелось бы спросить знающих людей. Мне необходимо решить систему ДУ уравнений методом Рунге_кутта 4 порядка. А значит мне нужно в...

метод Рунге-Кутта - C++
Всем доброго времени суток, меня интересует, пользуясь методом Рунге -Кута для диф уравнений, я получу в ответе точки, графика диф...

Метод Рунге-Кутта - C++
как реализовать программу для уравнения вида dv/dt=const*dm/dt методом рунге-кутта. как именно заменить производную справа

Алгоритм Рунге-Кутта для производной второго порядка - C++
Здравствуйте. Нужно составить график зависимости x от t для данного уравнения, для сказали нужно посчитать это уравнение методом...

Численно решить ОДУ методом Рунге-Кутта 4 порядка - C++
Доброго времени суток. Мне нужно численно решить ОДУ методом Рунге-Кутта 4 порядка. Уравнение имеет вид: p'=-A-B*p, p(0)=p0. Проблема...


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

Или воспользуйтесь поиском по форуму:
isu
6 / 0 / 0
Регистрация: 01.10.2012
Сообщений: 64
23.12.2013, 01:55  [ТС]     Метод Рунге-Кутта 3 порядка #13
Кликните здесь для просмотра всего текста

взял формулу отсюда,а что не так?
Yandex
Объявления
23.12.2013, 01:55     Метод Рунге-Кутта 3 порядка
Ответ Создать тему
Опции темы

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