Форум программистов, компьютерный форум 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
25.09.2008, 22:16
С вас врят ли потребуют слишком серьезных программ .
Программа должна быть консольная (без окон и всяких прибамбасов) .Это слишком затянет код программы .Графику наверное тоже можно откинуть . Си в консоле слаб на графику.
Скорее всего будет ввод будет с клавиатуры или в программе вставлены данные .
Будут фунции построенные на формуле решения и вывод .
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>   //  а это вводится что бы то что ниже работало
using namespace std;  //
 
float b= Fun(a){   // здесь формула для решения
return a;
};
 
 
int main (){                    
    cout << "Vvecti 4islo :";        // Здесь будет сообщение что надо что-то ввести
    float a;
    cin >> a;    // здесь вводится 
    float b= Fun(a);  // здесь решается
    cout << "Otvet:"<<b;  // a здесь выводится
    return 0;
}
вот примерно она так будет выглядеть . только она сейчас на с++ а надо наверное на С (состарить операторы- ну те что использовались ранее )

Добавлено через 11 минут 59 секунд
Блок-схема метода Эйлера-Коши с уточнением
http://solidbase.karelia.ru/edu/meth...ler_koshi.shtm
http://solidbase.karelia.ru/edu/meth_calc/files/13.shtm
Это значить надо будет делать иттерацию ( постепенное приближение).
Задать начальное число - потом вставить в формулу и получить его еще ближе . И если оно мало меняется то это оно и есть .
Аналогия как артелирист - выстрел - перелет(недолет)-выстрел - .. - цель поражена

Добавлено через 8 минут 47 секунд
Да забыл .
Бывают уравнения Ax^2+Bx+C=0 здесь зная A B C можно найти x по классической формуле . Но если бы не было формулы делали так :
x=-(C+Ax^2)/B . но мы же не знаем x . тогда бы взяли примерное x=x1 и нашли бы
x2=-(C+Ax1^2)/B и если x2 и x1 сильно отличались то делали дальше
x3=-(C+Ax2^2)/B
...
x100= -(C+Ax99^2)/B долго по человеческим меркам и быстро сделала бы машина.




1.3 Решение системы дифференциальных уравнений на языке Фортран:
Fortran
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
          REAL L,C,I0,I1,I2
          r1 = 30
          r2 = 25
          r3 = 50
          r4 = 1.88
          r5 = 15
          r6 = 50
          t0 = 0
          t1 = 0.01
          t2 = 0.02
          n = 1000
          E0 = 15
          f = 40
          L = 5.57E-3
          C = 20E-6
          I0 = 0
          U0 = 0
          fi = 3.14
          w = 2*3.14*f
          a = r4+(r1*r2)/(r1+r2)+(r3*(r5+r6))/(r5+r6+r3)
          b = (r5+r6)/(r3+r5+r6)
          g = 1/(r3+r5+r6)
          h = (t2-t0)/n
          WRITE(1,*)'        t        ','        I        ','        U'
          k = 3
          DO t = t0, t2, h
          IF (k.EQ.3) THEN
                  WRITE(1,*)t,I0,U0
                  k = 0
          END IF
          IF(t.LT.t1) THEN
                  d = r2/(r1+r2)
          ELSE
                  d = 0
          END IF
          I1 = I0+h*(1/L*((E0*SIN(w*t+fi))*d-I0*a-U0*b))
          U1 = U0+h*(1/C*(I0*b-U0*g))
          I2 = I0+h*(1/L*((E0*SIN(w*t+fi))*d-I1*a-U1*b))
          U2 = U0+h*(1/C*(I1*b-U1*g))
          I0 = I2
          U0 = U2
          k = k + 1
          END DO
          END
тебе что это перевести в С++ ???
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru