Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Новый участник


Сообщения: 9
Благодарности: 0

Профиль | Отправить PM | Цитировать


Знаю, я сделал прогу, но она дает неправильные результаты, я проверял в Маткаде, может я не так реализовал этот алгоритм.... могу привести код вот он:

главный цикл
for (ind = 0+h; ind <= T; ind += h) {
v = CalcCondition(v0);
v0 = v;
cout << "\n" << ind << ": " << v.w;
}
h - это шаг

описание структур v и v0:
struct vector {
double w, y, z;
} v, v0;

vector CalcCondition (vector v0) {
vector v;
v.z = f1(v0.w, v0.y, v0.z);
v.y = f2(v0.w, v0.y, v.z);
v.w = f3(v0.w, v.y, v.z);
return v;
}

double f1 (double w, double y, double z) {
return z + (-z/Tya - (Tv+Tem)*y/(Tya*Tv*Tem) - w/(Tya*Tv*Tem) + kdv*u/(Tya*Tv*Tem))*h;
}

double f2 (double w, double y, double z) {
return y + z*h;
}

double f3 (double w, double y, double z) {
return w + y*h;
}

функции f1, f2, f3 - это система дифуров первого порядка, вот система:

z(штрих) = -z/Tya - (Tv+Tem)*y/(Tya*Tv*Tem) - w/(Tya*Tv*Tem) + kdv*u/(Tya*Tv*Tem)
y(штрих) = z
w(штрих) = y

T, к - это все константы

вроде все правильно написано, но результаты неправильные!!

Отправлено: 20:41, 22-09-2008 | #5