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

Решение системы диффуров методом Рунге-Кутта - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Работа с клавиатурой http://www.cyberforum.ru/cpp-beginners/thread6569.html
при работе с курсовой столкнулся с задачей: выполнять действие сразу как только будет нажата какая-либо клавиша(желательно одна из стрелок). задача кажется несложной но никак не могу достигнуть желаемого. помогите каким нибудь исходником или примером.
C++ Как отыскать последовательность битов в файле? Допустим, есть последовательность битов 1111111. как отыскать ее в файле? http://www.cyberforum.ru/cpp-beginners/thread6517.html
Получение массива цветов-палитру из BMP C++
Здравствуйте. У меня следующая задача. Дан файл формата BMP (16-цветный рисунок). Всего 6 цветов. Нужно получить массив цветов-палитру в виде цифр. Т.е. считать пиксели и вывести их в массив в виде цифр, равных их номеру индексированного цвета.
C++ Переход К Команде По Нажатию Enter
ПОдскажите команду, которая позволяет перейти к следующей команде. Например: В самой программе готовой пишу любое число, затем Enter. И только после нажатия на Enter программа отвечает на это чисто любым текстом, которым задаю в коде проги. Заранее спасибо, очень надо....
C++ Текст итема предать в строковую переменную http://www.cyberforum.ru/cpp-beginners/thread6295.html
Есть главное окно(диалог), в нем listBox Как по нажатию пункта меню(обработчик его в файле MainApp.cpp) текст выделенного итема предать в строковую переменную(MainApp.h).:huh::'( Нужно срочно!!!:( H-e-l-p!!!:huh:
C++ WinAPI Где найти функцию Windows API MessageBox? В общем я начал читать книгу по С++ и столкнулся с тем что не нашел эту функцию. У меня установлен С++ Builder 6. "Кнопка SpeedButton2 отвечает за очистку окна редактирования. Однако в случае, когда в редактируемом буфере содержится набранный текст, следует спросить пользователя, желает ли он сохранить текст. Для этой цели не имеет смысла создавать отдельную форму, содержащую всего-навсего... подробнее

Показать сообщение отдельно
getbraine
Сообщений: n/a
15.03.2008, 14:16     Решение системы диффуров методом Рунге-Кутта
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#include <stdio.h>
#include <stdafx.h>
#include <math.h>
#include <iostream>
 
using namespace std;
double f(int i,double x,double y[4]){
    switch (i){
        case 1:return y[4];break;
        case 2: return y[1];break;
        case 3:return y[2];break;
        case 4:return y[3];break;
        default : break;
    }
}
/*************************************************************************
Один шаг метода Рунге-Кутта четвертого порядка для решения
системы дифферециальных уравнений.
 
procedure SystemRungeKuttStep(
    const   x   :   Real;
    const   h   :   Real;
    const   n   :   Integer;
    var     y   :   array of Real);
 
Алгоритм совершает один шаг метода для системы
диффуров y[i]'=F(i,x,y) для i=1..n
 
Начальная точка имеет кординаты (x,y[1], ..., y[n])
 
После выполнения алгоритма в переменной y содержится состояние
системы в точке x+h
*************************************************************************/
void step(double x,double h,int n,double y[4])
{
    int i=0;
    double yt[4];
    double k1[4];
    double k2[4];
    double k3[4];
    double k4[4];
 
    for(i = 1; i <= n; i++)
    {
        k1[i] = h*f(i, x, y);
    }
    for(i = 1; i <= n; i++)
    {
        yt[i] = y[i]+0.5*k1[i];
    }
    for(i = 1; i <= n; i++)
    {
        k2[i] = h*f(i, x+h*0.5, yt);
    }
    for(i = 1; i <= n; i++)
    {
        yt[i] = y[i]+0.5*k2[i];
    }
    for(i = 1; i <= n; i++)
    {
        k3[i] = h*f(i, x+h*0.5, yt);
    }
    for(i = 1; i <= n; i++)
    {
        yt[i] = y[i]+k3[i];
    }
    for(i = 1; i <= n; i++)
    {
        k4[i] = h*f(i, x+h, yt);
    }
    for(i = 1; i <= n; i++)
    {
        y[i] = y[i]+(k1[i]+2.0*k2[i]+2.0*k3[i]+k4[i])/6;
    }
}
/*************************************************************************
Алгоритм решает систему диффуров y[i]'=F(i,x,y) для i=1..n
методом Рунге-Кутта 4 порядка.
 
Начальная точка имеет кординаты (x,y[1], ..., y[n])
 
До конечной точки мы добираемся через n промежуточных
с постоянным шагом h=(x1-x)/m
 
Результат помещается в переменную result[4]
*************************************************************************/
void solvesystemrungekutta(double x,double x1,int steps,double result[4]){
    
    for(int i = 1; i <= steps-1; i++)
    {
        step(x+i*(x1-x)/steps, (x1-x)/steps,4, result);
    }
}
 
int _tmain(){
    //первая координата 
    double temporaryresult[4];
    solvesystemrungekutta(2,3,3,temporaryresult);
    for(int i=1;i<=4;i++){
        printf("Htpekmnf",temporaryresult[i],'\n');
    }
    char c=getchar();
    return 0;
}
подскажите как приспособить этот алгоритм для решения системы диффуров
d2_x/dt_2=-GMx/(x^2+y^2)^(3/2)
d2_y/dy_2=-GMy/(x^2+y^2)^(3/2)
?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 01:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru