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

Решение систем дифференциальных уравнений методами Эйлера - 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, появляется черный экран, то в самой среде не как не удается инициализировать графику. Само приложение как бы дохнет, то есть не грузит процессор вообще. Инициализирую графику с помощью команд gdriver = DETECT; initgraph(&gdriver, &mode, ""); Для инициализации используется библиотека EGAVGA.BGI. Пробовал сменить...
Конвертация 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 есть ли возможность это сделать? я разрабатываю консольное приложение. подробнее

Показать сообщение отдельно
qwone
9 / 9 / 1
Регистрация: 18.08.2008
Сообщений: 129
27.09.2008, 22:58
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
#include <iostream.h>
#include <math.h>
int main(){
double t,I,U,h;
double R1=30,R2=25,R3=50,R5=15,R6=60;
double C=20E-6,t0=0,U0=0,I0=0,R4=1.88,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 c=1/(R3+R5+R6);
double d=R2/(R1+R2);
double E0=15,E,T1=0.01,T2=0.02;
cout<<"Uslovie zadachi "<<endl<<"vvedite shag(0.001) :"<<endl;
cin>>h;
cout.precision(3);
cout<<t0<<"\t"<<U0<<"\t"<<I0<<endl;
t=t0;
while(t<=T1){
             t=t0+h;
             I=I0+h*(E0*sin(3.14*30*2*t0+3*3.14/5)*d-I0*a-U0*b)/L;
             U=U0+h*(I0*b-U0*c)/C;
             I0=I;
             U0=U;
             t0=t;
             cout<<"U =" <<U<<"\t"<<"I =" <<I<<endl;
}
cin>>h;
 
while( (t1<=t ) && (t<=t2) ){
                 t=t0+h;
                 I=I0+h*(-I0*a-U0*b)/L;
                 U=U0+h*(I0*b-U0*c)/C;
                 I0=I;
                 U0=U;
                 t0=t;
                 cout<<t<<"\t"<<I<<endl;
                 }
cin>>h;
return 0;
}
я слегка причесал твою программу . Там есть еще глюки ,как в формулах ,так и в исполнении .Позже подумаю.

Добавлено через 4 часа 48 минут 47 секунд
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
#include <iostream>
#include <math.h>
using namespace std;
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=40; // частота
double  w=2*pi*f;
//                начальные условия
double t,t0=0,t1=0.01,t2=0.02; // время
double n=1000,h=(t2-t0)/n ; // число и шар деления  
double E0=15;
double I0=0,I1,U0=0,U1;// напряжение и токи
cout << "---  t0 ----   "<<endl;
cout<<"t     \t I        \t U     "<<endl;
int AA=1,B=20; // показывать каждое  B
for(t=t0;t<=t1;t=t+h){    // до переключения
    I1=I0+h*1/L*(E0*sin(w*t+pi)*d-I0*a-U0*b);
    U1=U0+h*1/C*(I1*b-U0*g);
    I0=I1;U0=U1;
    AA++;
    if (AA==B){
        AA=1;
        cout<<t<<"\t"<<I0<<"\t"<<U0<<endl;
        }
};
cout << "---  t1 ----   "<<endl;
cout<<"t     \t I        \t U     "<<endl;
for(;t<=t2;t=t+h){    // после  переключения
    I1=I0+h*(1/L*(-I0*a-U0*b));
    U1=U0+h*1/C*(I1*b-U0*g);
    I0=I1;U0=U1;
    AA++;
    if (AA==B){
        AA=0;
        cout<< t <<"\t"<< I0<<"\t"<<U0<<endl;
        } 
    }
cout << "---  t2 ----   "<<endl;
cin.get();
return 0;
};
не заморачивайся .забирай
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru