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

Решение дифуров методами Эйлера-Коши с итерациями и Рунге-Кутты четвертого порядка - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Перегрузка оператора присваивания http://www.cyberforum.ru/cpp-beginners/thread1770478.html
Приветствую всех. Не могли бы подсказать как переопределить оператор присваивания. То что искал, так там написано в общем о переопределении. Существует класс rational, хранящий рациональные числа. class rational{ private: int chisl; int znam; char razd; }
C++ Как ввести формулу Доброго времени суток. Можете подсказать как ввести данную формулу: \frac{1}{\sqrt{n}+n} http://www.cyberforum.ru/cpp-beginners/thread1770472.html
C++ Элементы массива, которые при делении нацело на собственный индекс дают значение большее 2 возвести в квадрат
Ввести одномерный массив A из N элементов. Элементы массива, которые при делении нацело на собственный индекс дают значение большее 2 возвести в квадрат. Массив вывести до и после преобразования.
C++ Вывести номера элементов массива, значения которых отличаются менее чем на 3 от значения наименьшего элемента
Ввести одномерный массив А , вывести его. Напечатать номера элементов, значение которых менее чем на 3 отличается от значения наименьшего элемента массива, и определить количество таких элементов.
C++ Iswalpha не переваривает юникод http://www.cyberforum.ru/cpp-beginners/thread1770443.html
Задача - проверить является ли символ частью слова. Под частью слова я подразумеваю символы любых азбук, иероглифы, etc. Короче, все чем слова записываются. Использую iswalpha, подсовываю ему い из хираганы, как часть слова символ не распознается. Ну ладно, может слоговое письмо не считается alphabetic letter? Окей, подсовываю русскую А. Все равно не распознается. Кто виноват и что делать?...
C++ Операции со временем Здравствуйте, хотел бы узнать на счет времени и операций с ними. Есть задание, часть которого связана со временем, а именно: необходимо заполнять структуру: struct train { string name; string date; // Пример - 02.02.2007 string time; // Пример - 22:30 (минуты:секунды) } А далее вывести самый быстрый поезд и вывести структуру по признаку: по лучшему времени(сначала самый быстрый поезд,... подробнее

Показать сообщение отдельно
Blitzor DDD
12 / 12 / 1
Регистрация: 17.08.2015
Сообщений: 439
26.06.2016, 12:48     Решение дифуров методами Эйлера-Коши с итерациями и Рунге-Кутты четвертого порядка
Sacredlife, ну я недавно решал триплет Лоренца (грубо говоря, систему из трёх диффуров) методом Эйлера. Вот код, посмотри, очень легко сделать по аналогии. Просто поменяй мои три уравнения, на свои

C++ (Qt)
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
#include <iostream>
#include <cmath>
#include <iomanip>
#include <ctime>
#include <unistd.h>
#include <fstream>
 
using namespace std;
 
unsigned int n;
float L=10,Pr=7,H=20,Ra=140;
float Psi,T01,T02,dPsi,dT01,dT02,A,B,C,P,Eps,Time,step,Pi;
 
void initialize_variables(){
 
    Pi=acos(-1.);
    P=1/(pow(L,2));
     Eps= (pow(L,2))/(pow(H,2));
 
    A=1+Eps;
    B = 4*P*Eps+ 1.0/4.0;
    C= P*A+1.0/4.0;
}
 
void initial_approximation(){
    //Начальные приближения
    Psi=0.01;
    T01=0.01;
    T02=0.01;
 
    Time=500;
    n=500000;
    step=Time/n;  //Шаг
}
 
//передаем ссылку на переменную n, и ссылку на переменную filestr,
//без ссылки, файл открывался бы дважды
void Euler_method(const unsigned int &, ofstream &filestr){
 
    for(unsigned int i=0;i<=n;i++)
    {
           dPsi = Psi + step * (-C * Pr * Psi - Ra*Pr* T01/ pow(Pi,4)/ A);
           dT01=T01 + step * (-(4*T02+1)*Psi-C*T01);
           dT02=T02 + step * (2*T01*Psi-B*T02);
 
           Psi=dPsi;
           T01=dT01;
           T02=dT02;
 
           filestr<<i<<"    "<<setw(16)<<Psi<<setw(16)<<T02<<endl;
    }
}
 
int main( )
{
 
float  startcputime = clock();
initialize_variables();
initial_approximation();
 
 // open text file
    ofstream  filestr;
    filestr.open ("Problem 8. Results.txt", ios_base::out | ios_base::trunc);
     if(filestr == NULL)
         {
             cout << "error! didn't open the file!"<<endl;
             return -1;
         }
     else cout<<"The file has been opened!"<<endl;
 
    Euler_method(n, filestr);
 
filestr.close();
cout << "The file has been closed!"<<endl;
float  finishcputime = clock();
cout<<"done in "<< (finishcputime - startcputime)/(1e+6) <<" seconds "<< endl;
    return 0;
}
 
Текущее время: 02:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru