Форум программистов, компьютерный форум, киберфорум
Наши страницы

Решение систем дифференциальных уравнений методами Эйлера - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Работа с очень большой матрицей http://www.cyberforum.ru/cpp-beginners/thread12908.html
Надо постоянно в программе обращаться к матрице большого размера с элементами double (приблизительно она весит 40Гб). Какие элементы С++ лчше для этого использовать. Принимаются все варианты...
C++ Создать класс "Массив" помогите написать программу. Класс "Массив". Методы: сортировка массива в порядке возрастания,перестроение элементов в обратном порядке, вывод массива на экран. http://www.cyberforum.ru/cpp-beginners/thread12881.html
C++ Проблема графики в Turbo C++
Встретился с очень интересной проблемой, после инициализации графики на Turbo C++ 3.1, появляется черный экран, то в самой среде не как не удается инициализировать графику. Само приложение как бы...
Конвертация int в char и обратно C++
Помогите, я запутался... Есть 2 переменных: int a; char b; Допустим a = 0. Нужно преобразовать ее в символ, чтобы b = '0'. И наоборот b = '8', тогда a = 8. Если я пишу так:
C++ битовая маска http://www.cyberforum.ru/cpp-beginners/thread12858.html
как использовать битовую маску? за пример можно взять выделение k-того разряда из n-разрядного числа (в пофиг какой системе исчесления).
C++ Считать с клавиатуры объект типа CString есть ли возможность это сделать? я разрабатываю консольное приложение. подробнее

Показать сообщение отдельно
havrolev
1 / 1 / 0
Регистрация: 24.09.2008
Сообщений: 10
28.09.2008, 19:47  [ТС]
qwone
Спасибо большое!
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
#include <iostream.h>
#include <math.h>
int main(){
double R1=30,R2=25,R3=50,R4=1.88,R5=15,R6=60;
double C=20E-6,L=5.57E-3;
double a=(R4+(R1*R2)/(R1+R2)+(R5+R6)*R3/(R3+R5+R6));
double b=(R5+R6)/(R3+R5+R6);
double d=R2/(R1+R2);
double g=1/(R3+R5+R6);
double    pi=3.1415;
double    f=30,fi=3*pi/5;
double  w=2*pi*f;
double t,T0=0,T1=0.01,T2=0.02,t0,t1;
double n=1000,h=(T2-T0)/n ;
double E0=15;
double I0=0,I1,U0=0,U1,I,U;
cout << "---  t0 ----   "<<endl;
cout<<"t     \t I        \t U     "<<endl;
int AA=1,B=20;
t=T0;
while(t<=T1)
    {t1=t0+h;
    I1=I0+h*1/L*(E0*sin(w*t0+fi)*d-I0*a-U0*b);
    U1=U0+h*1/C*(I0*b-U0*g);
    t=t1;
    I=I0+h*(1/L*(E0*sin(w*t0+fi)*d-I0*a-U0*b)+1/L*(E0*sin(w*t1+fi)*d-I1*a-U1*b))/2;
    U=U0+h*(1/C*(I0*b-U0*g)+1/C*(I1*b-U1*g))/2;
    t0=t;I0=I;U0=U;
    AA++;
    if (AA==B){
    AA=1;
    cout<<t<<"\t"<<I<<"\t"<<U<<endl;
    }
};
cin.get();
cout << "---  t1 ----   "<<endl;
cout<<"t     \t I        \t U     "<<endl;
while(t<=T2)
    {t1=t0+h;
    I1=I0+h*1/L*(-I0*a-U0*b);
    U1=U0+h*1/C*(I0*b-U0*g);
    t=t1;
    I=I0+h*(1/L*(-I0*a-U0*b)+1/L*(-I1*a-U1*b))/2;
    U=U0+h*(1/C*(I0*b-U0*g)+1/C*(I1*b-U1*g))/2;
    t0=t;I0=I;U0=U;
    AA++;
    if (AA==B){
    AA=1;
    cout<< t <<"\t"<< I<<"\t"<<U<<endl;
    }
    }
cout << "---  t2 ----   "<<endl;
cin.get();
return 0;
};
Вот если кому понадобится таже программа, только методом Эйлера-Коши
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru