Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C++ Для чего нужны файлы с расширением .h, .c? Не подскажите, для чего нужен (.h) и (.c) файл? А (.cpp)? Я читал, что это заголовочный файл, но за зачем он нужен? https://www.cyberforum.ru/ cpp-beginners/ thread1717872.html Работа со строками - Invalid conversion from 'char' to 'const char*' C++
#include <iostream> #include <ctype.h> #include <stdio.h> #include <string.h> using namespace std; void poisk(int n, char str,char str1, int *n1, int num) { int i; char *s, *s1; *n1=0; for (i=0; i<n;i++)
C++ Строки и все что сними связано Здравствуйте, дорогие форумчане, нужна ваша помощь. Решая задачи я очень сильно запутался в функциях\объектах. Прошу помочь разобраться с ними. з.ы. Да, в интернете полным полно информации, но там на "литературном" жаргоне, который я не очень-то и понимаю. Собственно и сами проблемы... К примеру: char s; cin>>s; В данном случае программа засчитает только одно слово? Т.е. до пробела,... https://www.cyberforum.ru/ cpp-beginners/ thread1717844.html C++ Разветвленная структура с несколькими циклами https://www.cyberforum.ru/ cpp-beginners/ thread1717801.html
Помогите написать программы
Непонятное условие while C++
Вообщем попрошу знатоков объяснить мне пару строк ( смотреть комментарии к коду ) #include <iostream> const int ArSize = 10; void strcount(const char * str); int main() { using namespace std; char input; char next;
C++ Алгоритм минимальной выпуклой оболочки https://www.cyberforum.ru/ cpp-beginners/ thread1717781.html
Нужна реализация алгоритма минимальной выпуклой оболочки Желательно самого простого что бы била одно функция помогите с кодом
C++ Как сделать двухстороннюю заливку в OpenGL? Есть стена. Её нужно закрасить с двух сторон, а у меня только с одной получается. Как закрасить её с двух сторон? https://www.cyberforum.ru/ cpp-beginners/ thread1717780.html Работа с switch C++
Есть конструкция, к примеру, та, которая указана ниже. Нужно ее зациклить, но сделать так, чтобы в каждый последующий раз не было предыдущего выбранного варианта. К примеру, в 1ый раз введу 1, мое число поделиться на 2. Затем опять дадут мне выбор, но уже не будет 1 варианта. Не соображу как сделать. Зациклить несложно, но вот чтобы вариант убирался не выходит #include<iostream> ...
C++ Замена одного слова на другое Здравствуйте!!!! Помогите плз. Есть задача: Строки. Написать программу, в которой пользователь вводит строку текста, слово, которое он хочет заменить в этой строке(word_1) и слово для замены(word_2). Каждая из введенных строк должна сохраняться в отдельном динамическом массиве. Произвести замену всех слов word_1 на word_2 и вывести результат на экран. Пример: Введите исходный текст ->... https://www.cyberforum.ru/ cpp-beginners/ thread1717750.html C++ Удалить строки матрицы, в которых встречаются одинаковые элементы https://www.cyberforum.ru/ cpp-beginners/ thread1717733.html
2) Заданная матрица размером NxM. Удалить те строки, в которых встречаются одинаковые элементы.
C++ Перенести в другой массив те элементы, которые встречаются более одного раза
1) Заданный массив а1, а2, ..., аn Перенести в другой массив те элементы, которые встречаются более одного раза, исключив их из первого.
C++ Вычислить среднее количество осадков и отклонение от среднего для каждого года https://www.cyberforum.ru/ cpp-beginners/ thread1717709.html
Помоги плиз решить задачу с Абрамова(272). Даны действительные числа а1901, a1902, ..., а1950 – количество осадков (в миллиметрах), выпавших в Москве в течение первых 50 лет нашего столетия. Надо вычислить среднее количество осадков и отклонение от среднего для каждого года.
1 / 1 / 1
Регистрация: 12.10.2015
Сообщений: 207
22.04.2016, 13:02  [ТС] 0

Метод RKF45? - C++ - Ответ 9055556

22.04.2016, 13:02. Показов 3981. Ответов 6
Метки (Все метки)

Ответ

Вот мой код, но что -то не то выдает. Должно быть так: x1 =-0.90; x2 =0.47 (при t =2)

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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#include <stdio.h>
#include <iostream>
#include <math.h>
using namespace std;
 
double const tol = 0.001;
 
double f1(double x1, double x2, double t)// 
{
    return(-52*x1-100*x2+exp(-t));               
}
 
double f2(double x1, double t)//
{
    return(x1+sin(t));               
} 
double s(double h, double x, double y)//
{
   return pow((tol*h)/(2*(fabs(y-x))),1.0/4.0);
}
 
int main()
{
    setlocale(LC_ALL,"rus");
   
    double t, s1,s2, h,tol, eps, E1, E2, k1, k2, k3, k4, k5, k6, y1, y2, m1, m2, m3, m4, m5, m6, x1, x2, x11,x22,y11,y22;
    //cout << "  "<<endl;
    //cout<<"h = ";//
    //cin >> h;
    
    t = 0; // 
    x1 = 1; // 
 
    x2 = 0; // 
    h = 0.001;   //2 or 3
    eps = 0.0001;//5 or 4
    int i = 0;
    y1 = x1;
    y2 = x2; 
    //s1 = s(h,x1,y1);
    //s2 = s(h,x2,y2);
    //while(E1 > eps || E2 > eps)
    while(true)
    {
 
        k1 = h*f1(x1, x2, t);
        m1 = h*f2(x1, t);
        
        k2 = h*f1(x1 + k1/4.0, x2 + m1/4.0, t + h/4.0);
        m2 = h*f2(x1 + k1/4.0, t + h/4.0);
 
        k3 = h*f1(x1 + (3.0*k1)/32.0 + (9.0*k2)/32.0, x2 + (3.0*m1)/32.0 + (9.0*m2)/32.0, t + (3.0*h)/8.0);
        m3 = h*f2(x1 + (3.0*k1)/32.0 + (9.0*k2)/32.0, t + (3.0*h)/8.0);
 
        k4 = h*f1(x1 + (1932.0*k1)/2197.0 - (7200.0*k2)/2197.0 + (7296.0*k3)/2197.0,
                  x2 + (1932.0*m1)/2197.0 - (7200.0*m2)/2197.0 + (7296.0*m3)/2197.0, t + (12.0*h)/13.0);
        m4 = h*f2(x1 + (1932.0*k1)/2197.0 - (7200.0*k2)/2197.0 + (7296.0*k3)/2197.0, t + (12.0*h)/13.0);
        
        k5 = h*f1(x1 + (439.0*k1)/216.0 - 8.0*k2 + (3680.0*k3)/513.0 - (815*k4)/4104.0,
                  x2 + (439.0*m1)/216.0 - 8.0*m2 + (3680.0*m3)/513.0 - (815*m4)/4104.0, t + h);
        m5 = h*f2(x1 + (439.0*k1)/216.0 - 8.0*k2 + (3680.0*k3)/513.0 - (815*k4)/4104.0, t + h);
 
        k6 = h*f1(x1 - (8.0*k1)/27.0 + 2*k2 - (3544.0*k3)/2565.0 + (1895.0*k4)/4104 - (11.0*k5)/40.0,
                  x2 - (8.0*m1)/27.0 + 2*m2 - (3544.0*m3)/2565.0 + (1895.0*m4)/4104 - (11.0*m5)/40.0,
                  t + h/2.0);
        m6 = h*f2(x1 - (8.0*k1)/27.0 + 2*k2 - (3544.0*k3)/2565.0 + (1895.0*k4)/4104 - (11.0*k5)/40.0, t + h/2.0);
 
        x11 = x1;
        x22 = x2;
        
        //до 5 
        x1 = x1 + (25.0*k1)/216.0 + (1408.0*k3)/2565.0 + (2197.0*k4)/4101.0 - k5/7.0;
        x2 = x2 + (25.0*m1)/216.0 + (1408.0*m3)/2565.0 + (2197.0*m4)/4101.0 - m5/7.0; 
        
        //cout<<"t = "<< t << " x1 = "<< x1 << " x2 = " << x2 << endl;
        //до 6
        y11 = x11;
        y22 = x22;
 
        y1 = y1 + (16.0*k1)/135.0 + (6656.0*k3)/12825.0 + (28561*k4)/56430.0 - (9*k5)/50.0 + (2.0*k6)/55.0; //???
        y2 = y2 + (16.0*m1)/135.0 + (6656.0*m3)/12825.0 + (28561*m4)/56430.0 - (9*m5)/50.0 + (2.0*m6)/55.0; //???
        //if(fabs(x1-x11)< 0.0001||fabs(x2-x22)< 0.0001)
        //{
        //  break;
        //}
        if((eps<=fabs(y1 - x1) && fabs(y1 - x1) < eps*10.0) && (eps<=fabs(y1 - x1)&&fabs(y1 - x1) < eps*10.0))
        {
            cout<<"Ответ:"<<endl;
            cout<<"t = "<< t << " x1 = "<< x1<< " y1 = "<< y1<< " x2 = "<< x2<< " y2 = "<< y2<<endl;
            break;
        }
        else if(fabs(y1 - x1) == eps/10.0||fabs(y1 - x1) < eps/10.0)
        {
            //h++;
            h = h*s(h,x1,y1);
            t = t + h;
 
        }
        else
        {
            //h--;
            h = h*s(h,x1,y1);
            //t = t + h;
            x1 = x11;
            x2 = x22;
            y1 = y11;
            y2 = y22;
        }
        //cмотрим шаг, если погрешность не устраивает . то меняем шаг и тогда удаляем  последнюю итерацию(вроде)
        //если погрешность устраивает то шаг оставляем и продолжаем.
        //E1 = ();
        //cout<<"E1 = "<<E1<<"  E2 = "<<E2;
        
    }
    
    //cout<<"t = "<< t << " x1 = "<< x1 << " x2 = " << x2 << endl;
    
    system("pause");
    return 0;
}


Вернуться к обсуждению:
Метод RKF45? C++
0
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.04.2016, 13:02
Готовые ответы и решения:

СЛАУ. Метод обратной матрицы, метод Гаусса, метод Крамера, метод Зейделя
Помогите ребят. Не могу построить алгоритмы для этих методов Язык C++

Метод медиан из трех элементов VS улучшенный быстрый метод сортировки(метод Бентли-Макилроя)
Здравствуйте! Дали весьма интересное задание. Сравнить два вышеуказанных метода сортировки для...

Мой код - метод бисекции, метод секущих (метод хорд)
Всем привет!!! Изучаем в институте С++. Сделал код, и там, и там одна и та же проблема - при любых...

Не понятен метод RKF45
Пишу программу по решению системы 2 уравнений 1 порядка методом RKF45. Не могу понять, как...

6
22.04.2016, 13:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.04.2016, 13:02
Помогаю со студенческими работами здесь

Runge-Kutta-Fehlberg (RKF45)
Здравствуйте, мне нужно решить численным методом Runge-Kutta-Fehlberg (RKF45) дифференциальное...

Не пойму как исправить ошыбку (RKF45)
Код решает дифференциальное уравнение численным метдом &quot;RKF45&quot;, но не пойму в чем ошыбка. Буду рад...

Написать три алгоритма решения СЛАУ: Метод прогонки, метод квадратных корней, метод вращений
Начал писать курсовую. Нужно написать три алгоритма решения СЛАУ: прогонки, квадратных корней,...

Метод хорд, метод касательных, метод половинного деления
Ребят помогите пожалуйста. Задали тему курсовой &quot;Решение нелинейных уравнений (метод хорд, метод...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru