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

Отображение Пуанкаре для системы Хенона-Хейлеса и метод Рунге Кутта - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Как сделать что бы пробел считался и программа не зависала? http://www.cyberforum.ru/cpp-beginners/thread985890.html
Здравствуйте! Помогите с вводом данных в файл. Как сделать что бы пробел считался и программа не зависала? Спасибо за помощь! void ad() { cout <<"Пункт меню создание объявления на продажу авто"<<endl; ofstream F; F.open("C:\\automobile.txt", ios::app); cout << "Введите марку автомобиля: ";
C++ Из группы подряд идущих элементов с одинаковыми значениями оставить только первый Почему не работает программа? не находит сторожа, хотя я их объявляю) //Дан список из n целых чисел a1,a2,..,an. Из группы подряд идущих элементов с одинаковыми значениями оставить только первый. #include <iostream> #include <stdio.h> #include <stdlib.h> #include <math.h> #include <conio.h> #include <time.h> using namespace std; http://www.cyberforum.ru/cpp-beginners/thread985882.html
Динамическое программирование C++
народ помогите пожалуйста. есть задача Написать программу, позволяющую вычислить количество чисел, не содержащих нули, сумма цифр которых ровна заданному N Пример вход-3 выход-4 -------------------- вот принцип сама 3
C++ Подскажите как доделать прогу
Доброго времени суток) Помогите довести до ума программу, чтобы она работала в рамках одной проги 1) Находила наибольшую нечетную цифру. Если ее нет, возвратить 0. 2)Возвратить число с обратным расположением цифр. Собственно вот сам код, который нужно доделать и если получится то упростить. 1)#include <iostream.h> // Найти наибольшую нечетную цифру. Если ее нет, возвратить 0 int main() {...
C++ Моя новая нубская программа и снова не работает:( http://www.cyberforum.ru/cpp-beginners/thread985869.html
#include<iostream> using namespace std; int main() { setlocale(0,"russian"); char suma; char umnozhenie; char deystvie; int d1; int d2;
C++ Открыть файл .pas как текстовый Как можно считать файл *.pas или *.cpp как текстовый ?? подробнее

Показать сообщение отдельно
ruster
0 / 0 / 0
Регистрация: 20.10.2013
Сообщений: 4
24.10.2013, 18:59     Отображение Пуанкаре для системы Хенона-Хейлеса и метод Рунге Кутта
Здравствуйте, столкнулся с такой проблемой, не могу понять ошибку, то ли сам метод не понимаю, то ли где то прокралась. Вообщем суть задачи, отрисовать точки сечения Пуанкаре системы:
dx/dt=Px=f1(t,x,y,Px,Py)
dy/dt=Py=f2(t,x,y,Px,Py)
dPx/dt=-(w^2)*x-2axy=f3(t,x,y,Px,Py)
dPy/dt=-(w^2)*y-ax^2+by^2=f4(t,x,y,Px,Py)
задаются начальные условия H0=0.0417, x=0,y=0.1,Py=0,Px вычисляется через H=1/2(Px^2+Py^2)+w^2/2(x^2+y^2)+ax^2y-b/3y^3
Далее с помощью метода Рунге Кутта вычисляется следующие точки x,y,Px,Py,
и проверяю попадает ли данная точка в сечение по x, чтобы попало в сечение |x-x_sech|<h_sech, где x_sech=0 плоскость сечения, а h_sech=0.05 его ширина.
Если попадает, добавляю точку для отрисовки, далее считаю новые точки и так далее. В конце отрисовывается. Отрисовка сама по себе работает правильно, так что как мне кажется вся проблема в методе, подскажите где ошибка
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
void Rugge_Kutte2(double h,double &Xo,double &Yo,double &PXo,double &PYo,double a,double b)
{
//вместо t везде нули, так как в f1,f2,f3,f4 оно не на что не влияет
    k11=h*f1(0,Xo,Yo,PXo,PYo,a,b);
    k21=h*f2(0,Xo,Yo,PXo,PYo,a,b);
    k31=h*f3(0,Xo,Yo,PXo,PYo,a,b);
    k41=h*f4(0,Xo,Yo,PXo,PYo,a,b);
 
    k12=h*f1(0,Xo+h/2,Yo+k21/2,PXo+k31/2,PYo+k41/2,a,b);
    k22=h*f2(0,Xo+h/2,Yo+k21/2,PXo+k31/2,PYo+k41/2,a,b);
    k32=h*f3(0,Xo+h/2,Yo+k21/2,PXo+k31/2,PYo+k41/2,a,b);
    k42=h*f4(0,Xo+h/2,Yo+k21/2,PXo+k31/2,PYo+k41/2,a,b);
 
    k13=h*f1(0,Xo+h/2,Yo+k22/2,PXo+k32/2,PYo+k42/2,a,b);
    k23=h*f2(0,Xo+h/2,Yo+k22/2,PXo+k32/2,PYo+k42/2,a,b);
    k33=h*f3(0,Xo+h/2,Yo+k22/2,PXo+k32/2,PYo+k42/2,a,b);
    k43=h*f4(0,Xo+h/2,Yo+k22/2,PXo+k32/2,PYo+k42/2,a,b);
 
    k14=h*f1(0,Xo+h/2,Yo+k23,PXo+k33,PYo+k43,a,b);
    k24=h*f2(0,Xo+h/2,Yo+k23,PXo+k33,PYo+k43,a,b);
    k34=h*f3(0,Xo+h/2,Yo+k23,PXo+k33,PYo+k43,a,b);
    k44=h*f4(0,Xo+h/2,Yo+k23,PXo+k33,PYo+k43,a,b);
    
    Xo=Xo+(k11+2*k12+2*k13+k14)/6;
    Yo=Yo+(k31+2*k32+2*k33+k34)/6;
    PXo=PXo+(k21+2*k22+2*k23+k24)/6;
    PYo=PYo+(k41+2*k42+2*k43+k44)/6;
 
}
// вот Эйлер, рисует так же неправильно
void Eiler(double h,double &Xo,double &Yo,double &PXo,double &PYo,double a,double b)
{
    
    double xt=Xo,yt=Yo,pxt=PXo,pyt=PYo;
    Xo=Xo+h*f1(0,Xo,Yo,PXo,PYo,a,b);
    Yo=Yo+h*f3(0,Xo,Yo,PXo,PYo,a,b);
    PXo=PXo+h*f2(0,Xo,Yo,PXo,PYo,a,b);
    PYo=PYo+h*f4(0,Xo,Yo,PXo,PYo,a,b);
 
}
Помогите, пожалуйста, столько времени убил, бросать жалко)

Добавлено через 18 часов 29 минут
Люди добрые, помогите

Добавлено через 5 часов 29 минут
Ну хотя бы, метод Рунге Кутта, для системы посмотрите
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 14:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru