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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.89
nikozavr
0 / 0 / 0
Регистрация: 07.01.2011
Сообщений: 281
01.08.2011, 16:45     Метод Рунге Кута #1
Реализовал метод Рунге Кута 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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.08.2011, 16:45     Метод Рунге Кута
Посмотрите здесь:

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


к тому же чтобы там не говорили теоретики, а иногда приходится допиливать метод руками для конкретной функции да и для сходимости вообще
nikozavr
0 / 0 / 0
Регистрация: 07.01.2011
Сообщений: 281
01.08.2011, 19:16  [ТС]     Метод Рунге Кута #9
Мне показалось, что можно и так. Или нет?
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 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 Посмотреть сообщение
Мне показалось, что можно и так. Или нет?
хм..впрочем я погарячился) можно и так
nikozavr
0 / 0 / 0
Регистрация: 07.01.2011
Сообщений: 281
01.08.2011, 19:43  [ТС]     Метод Рунге Кута #11
Может поясните сообщение №8?

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

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

Добавлено через 14 минут
Ну так как с моими вопросами?
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 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
как видно по графикам решение растет очень быстро.
nikozavr
0 / 0 / 0
Регистрация: 07.01.2011
Сообщений: 281
01.08.2011, 20:44  [ТС]     Метод Рунге Кута #13
А как мне прогу переделать для системы из 6 уравнений?
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
01.08.2011, 20:58     Метод Рунге Кута #14
Цитата Сообщение от nikozavr Посмотреть сообщение
А как мне прогу переделать для системы из 6 уравнений?
Вычисляем для всех уравнений K0(cм. свой код), потом для всех уравнений К1, аналогично К2 и К3 и лишь потом вычисляем K
nikozavr
0 / 0 / 0
Регистрация: 07.01.2011
Сообщений: 281
07.08.2011, 22:22  [ТС]     Метод Рунге Кута #15
Не понятно как организовать функцию (процедуру) для 6 уравнений? Чего она возвращать и как будет?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.08.2011, 12:43     Метод Рунге Кута
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
nikozavr
0 / 0 / 0
Регистрация: 07.01.2011
Сообщений: 281
14.08.2011, 12:43  [ТС]     Метод Рунге Кута #16
как функцию для одного уравнения:
Код
double myfunc(const double& x, const double& y)
{
        return 6*x*x+5*x*y+y*y+4*x+2*y-3;
        
}
переделать для системы:

dQ/dt = g/V*(N*cosj-cosQ)
dH/dt = V*sinQ
dP/dt=(-g/V*cosQ)*N*sinj
dX/dt=V*cosQ*cosP
dZ/dt=V*cosQ*sinP
Yandex
Объявления
14.08.2011, 12:43     Метод Рунге Кута
Ответ Создать тему
Опции темы

Текущее время: 08:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru