Решение дифференциального уравнения [требует правки]

284
26 декабря 2017, 17:33

Код метода Рунге-Кутта

Помогите разобраться, код не компилируется. Я новичок в С++

Буду очень благодарна за ответ!

#include "iostream"
#include "fstream"
#include "iomanip"
#include <conio.h>
#include <math.h>
#include <vector>
const double a = 0.007, C2 = 1.5e-003, R1 = 50.0, R2 = 60.0,
R3 = 30.0, imin = 1.0, imax = 2.0, Lmin = 4.7, Lmax = 47.0, L2 = 5.45;
const int n = 3;
double k1[n], k2[n], k3[n], k4[n], y[n] = { 0.0, 0.0, 0.0 }, y_0[n] = { 0.0,     0.0, 0.0 },
h = 0.0, t = 0.0, T = 0.0, df[n];
double U1 = 10.0, U2, L = 0.0, L1;
void Splayn(double y[n]) {
double b1, b2, b3, b4, m1 = 0.0, m2 = 0.0, h = imax - imin;
if (fabs(y[0]) <= imin) { L1 = Lmax; }
else if (imin < fabs(y[0]) < imax)
{
    b1 = (2.0*(y[0] - imin) + h)*(imax - y[0])*(imax - y[0]);
    b2 = (2.0*(imax - y[0]) + h)*(y[0] - imin)*(y[0] - imin);
    b3 = (y[0] - imin)*(imax - y[0])*(imax - y[0]);
    b4 = (y[0] - imax)*(y[0] - imin)*(y[0] - imin);
    L1 = (b1*Lmax + b2*Lmin) / (h*h*h) + (b3*m1 + b4*m2) / (h*h);
}
else if (fabs(y[0])>imax) { L1 = Lmin; }
}
void PrintResult(double t) {
if (t < a)
{
    U1 = 10.0*t / a;
}
else if (t < 2 * a)
{
    U1 = 0.0;
}
else {
    T = 0.0, U1 = 0.0;
}
}
void pohidna(double df[n], double t, double y[n]) {
Splayn(y);
PrintResult(t);
df[0] = (U1 - y[0] * R1 - (y[0] - y[1])*R3) / L1;
df[1] = ((y[0] - y[1])*R3 - y[1]*R2 - y[2]) / L2;
df[2] = y[1] / C2;
U2 = y[2];
}
void main(void) {
h = 2.0*a / 400.0;
fstream file;
file.open("result.dat", ios_base::out | ios_base::trunc);
do
    pohidna(df, T, y_0);
for (int i = 0; i < n; i++) {
    k1[i] = h*df[i];
    y[i] = y_0[i] + k1[i] / 2.0;
}
}
t+=h / 2.0;
T+=h / 2.0;
pohidna(df, T, y);
for (int i = 0, i < n, i++) {
k2[i] = h*df[i];
y[i] = y_0[i] + k2[i]/2.0;
}
t+=h/(1.0/ 2.0);
T+=h/(1.0 / 2.0);
pohidna(df, T, y);
for (int i = 0, i < n, i++) {
k3[i] = h*df[i];
y[i] = y_0[i] + k3[i];
y_0[i] = y[i];
}
t += h / (1.0 / 2.0);
T += h / (1.0 / 2.0);
pohidna(df, T, y);
for (int i = 0, i < n, i++) {
k3[i] = h*df[i];
y[i] = y_0[i] + (k1[i]+2.0*k2[i] + 2.0*k3[i]+k4)/6.0;
y_0[i] = y[i];
}
file << t << setw(15);
for(int i=0, i < n, i++) {
file<< y[i] << setw(15);
}
file << U1 << setw(15) << U2 << endl;
}
while (t <= 10.0*2.0*a);
file close();
}
READ ALSO
Подключение библиотек CMake C++

Подключение библиотек CMake C++

Впервые начал использовать CLionХотел построить проект и потом просто открыть получившийся файл в папке дебага, но выдаёт ошибки об отсутствии...

345
Sqlite3 добавляется мусор вместо строк

Sqlite3 добавляется мусор вместо строк

Не получается корректно вставить строки в таблицу с использованием шаблонов, пробую так:

294
Ошибка при qsort по вектору структур

Ошибка при qsort по вектору структур

Добрый деньИмеется структура:

324