Подскажите, пожалуйста, почему на выходе получаются такие результаты..
| Код | #include <iostream> #include <cmath> using namespace std;
double C1 = 0.1, C2 = 0.2, C3 = 0, T1 = 650, A1 = 8000, A2 = 4000, A3 = 300000, E1 = 72600, E2 = 77000, E3 = 87000, Ro = 1.4, R = 8.31, u = 0.1, l;
double f1(double C1, double C2, double C3, double k1, double k2, double k3) { return (-2 * k1 * C1 * C2 - k2 * C1 * C2)/u; } double f2(double C1, double C2, double C3, double k1, double k2, double k3) { return (-9 * k1 * C1 * C2 - 12 * k2 * C1 * C2 - 9 * k3 * C3 * C2)/u; } double f3(double C1, double C2, double C3, double k1, double k2, double k3) { return (2 * k1 * C1 * C2 - k3 * C3 * C2)/u; }
double MM(double L, double *T) { double h = 0.001, k1, k2, k3, C10, C20, C30, T0, Tt; for (l = 0; l <= L && C3 * 1.48 / Ro < 4.0; l+= h) { C10 = C1; C20 = C2; C30 = C3; T0 = T1; k1 = A1 * exp(-E1 / (R * T0)); k2 = A2 * exp(-E2 / (R * T0)); k3 = A3 * exp(-E3 / (R * T0)); C1 = C10 + h * f1(C10, C20, C30, k1, k2, k3); C2 = C20 + h * f2(C10, C20, C30, k1, k2, k3); C3 = C30 + h * f3(C10, C20, C30, k1, k2, k3); if (l >= 0) Tt = T[0]; if (l >= L / 4) Tt = T[1]; if (l >= L / 2) Tt = T[2]; if (l >= 3 * L / 4) Tt = T[3]; } return l; } int main() { setlocale(LC_ALL, "Russian"); cout<<"Функция 1 равна "<<f1<<".\n"; cout<<"Длина трубы равна "<<l<<".\n"; system("pause"); return 0; }
|
|