С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.89
nikozavr
0 / 0 / 0
Регистрация: 07.01.2011
Сообщений: 281
#1

Метод Рунге Кута - C++

01.08.2011, 16:45. Просмотров 2447. Ответов 15
Метки нет (Все метки)

Реализовал метод Рунге Кута 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
#include <cstdlib>
#include <iostream>
#include <math.h>
using namespace std;
double myfunc(const double& x, const double& y)
{
    return 6*x*x+5*x*y+y*y+4*x+2*y-3;
    
}
int main(int argc, char *argv[])
{
    int i, n; 
    double x, y, h,py, fy,k,k0,k1,k2,k3;
    cout<< " h = "; cin>>h;
    cout<< " n = "; cin>>n;
    cout<< " x0 = "; cin>>x;
    cout<< " y0 = "; cin>>y;
   for (i = 0; i <= n; i++)
    {
        fy = myfunc(x, y);
        k0=h*fy;
        k1=h*myfunc(x+h/2, y+k0/2);
        k2=h*myfunc(x+h/2, y+k1/2);
        k3=h*myfunc(x+h, y+k2);
        k=(k0+2*k1+2*k2+k3)/6;
        y += k;
        
        cout << "y = " << y;
        cout << "   x = " << x << "\n";
        x += h;
    }
    system("PAUSE");
    return EXIT_SUCCESS;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.08.2011, 16:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Метод Рунге Кута (C++):

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

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

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

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

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

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

15
Paporotnik
383 / 227 / 7
Регистрация: 06.07.2011
Сообщений: 512
01.08.2011, 16:49 #2
подставить и проверить не вариант?
0
nikozavr
0 / 0 / 0
Регистрация: 07.01.2011
Сообщений: 281
01.08.2011, 16:53  [ТС] #3
Иначе не просил бы.
Есть и второй вопрос: как подправить для системы из 6 уравнений?
0
Jupiter
Каратель
Эксперт С++
6561 / 3982 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
01.08.2011, 17:38 #4
Цитата Сообщение от nikozavr Посмотреть сообщение
Реализовал метод Рунге Кута 4 порядка для ДУ. Работает, считает. Но есть подозрения, что неправильно. Проверьте пожалуйста.
ну так покажи ДУ которое считаешь и если задача студенческая то и точное решение должно быть
0
nikozavr
0 / 0 / 0
Регистрация: 07.01.2011
Сообщений: 281
01.08.2011, 18:51  [ТС] #5
Да нет у меня студенческого уравнения. Просто метод надо реализовать для системы из 6. по работе.
Я сделал пока для одного. Прошу проверить и поправить.
0
Jupiter
Каратель
Эксперт С++
6561 / 3982 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
01.08.2011, 18:53 #6
Цитата Сообщение от nikozavr Посмотреть сообщение
Да нет у меня студенческого уравнения. Просто метод надо реализовать для системы из 6. по работе.
Я сделал пока для одного. Прошу проверить и поправить.
ну так покажи это одно, я уравнения не вижу
0
nikozavr
0 / 0 / 0
Регистрация: 07.01.2011
Сообщений: 281
01.08.2011, 19:00  [ТС] #7
Ну я же его в функции описал, в коде:

6*x*x+5*x*y+y*y+4*x+2*y-3
0
Jupiter
Каратель
Эксперт С++
6561 / 3982 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
01.08.2011, 19:14 #8
а почему вы вводите и шаг(h) и количество шагов(n), нужно вводить что-то одно, шаг(или)количество отрезков и исходя из крайних точек расчитывать количество шагов(или) шаг

Не по теме:

Цитата Сообщение от nikozavr Посмотреть сообщение
Ну я же его в функции описал, в коде:
6*x*x+5*x*y+y*y+4*x+2*y-3
Цитата Сообщение от nikozavr Посмотреть сообщение
по работе.
не дай бого после кого-то поддерживать такой код


к тому же чтобы там не говорили теоретики, а иногда приходится допиливать метод руками для конкретной функции да и для сходимости вообще
0
nikozavr
0 / 0 / 0
Регистрация: 07.01.2011
Сообщений: 281
01.08.2011, 19:16  [ТС] #9
Мне показалось, что можно и так. Или нет?
0
Jupiter
Каратель
Эксперт С++
6561 / 3982 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
01.08.2011, 19:29 #10
Цитата Сообщение от nikozavr Посмотреть сообщение
Мне показалось, что можно и так. Или нет?
количество шагов n, для расчета на отрезке [a, b] считаеться по формуле
http://www.cyberforum.ru/cgi-bin/latex.cgi?n = \frac{(b - a)}{h} + 1

Добавлено через 6 минут
Цитата Сообщение от nikozavr Посмотреть сообщение
Мне показалось, что можно и так. Или нет?
хм..впрочем я погарячился) можно и так
0
nikozavr
0 / 0 / 0
Регистрация: 07.01.2011
Сообщений: 281
01.08.2011, 19:43  [ТС] #11
Может поясните сообщение №8?

В том что Вы пишете про количество шагов, я не уверен.

Хотя, был бы уверен - не создал бы тему.

Добавлено через 14 минут
Ну так как с моими вопросами?
0
Jupiter
Каратель
Эксперт С++
6561 / 3982 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
01.08.2011, 19:47 #12
Цитата Сообщение от nikozavr Посмотреть сообщение
Может поясните сообщение №8?
В том что Вы пишете про количество шагов, я не уверен.
Хотя, был бы уверен - не создал бы тему.
Да нет вы правы, эт я проглядел, так что у вас все тип-топ в плане логики программы и верности расчетов.
По поводу вашего ДУ, только что проверил его на свой программе, и ее результаты совпадают с вашими так что ДУ такой попался.
Вот на вольфраме посмотрите графики точого решения
http://www.wolframalpha.com/input/?i...%2B4*x%2B2*y-3
как видно по графикам решение растет очень быстро.
1
nikozavr
0 / 0 / 0
Регистрация: 07.01.2011
Сообщений: 281
01.08.2011, 20:44  [ТС] #13
А как мне прогу переделать для системы из 6 уравнений?
0
Jupiter
Каратель
Эксперт С++
6561 / 3982 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
01.08.2011, 20:58 #14
Цитата Сообщение от nikozavr Посмотреть сообщение
А как мне прогу переделать для системы из 6 уравнений?
Вычисляем для всех уравнений K0(cм. свой код), потом для всех уравнений К1, аналогично К2 и К3 и лишь потом вычисляем K
2
nikozavr
0 / 0 / 0
Регистрация: 07.01.2011
Сообщений: 281
07.08.2011, 22:22  [ТС] #15
Не понятно как организовать функцию (процедуру) для 6 уравнений? Чего она возвращать и как будет?
0
07.08.2011, 22:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.08.2011, 22:22
Привет! Вот еще темы с ответами:

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

ДУ. Метод Рунге-Кутта. Погрешность. - C++
Сам Рунге-Кутта III порядка. - &quot;реализовано&quot;. Огорчает погрешность, не могу понять как улучшить точность (и не достаточно ли такой?). ...

Метод Рунге-Кутта 2-го порядка - C++
Написал код программы. С компиляцией вроде бы нет проблем. А цикл for воспринимать не хочет. Программа просто его пропускает. Помогите...

Метод Рунге-Кутта 4 порядка - C++
Помогите найти ошибку в методе рунге-Кутта 4 порядка System::System(double m, const Vector3D&amp; g, double C, double f, double p, double S,...


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

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

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