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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Решение дифуравнения на С++

Ответить
Настройки темы
C/C++ - Решение дифуравнения на С++

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


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

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


Подскажите, пожалуйста, алгоритм решения дифура 3-его порядка методом Эйлера. Там вроде как надо переходить от дифура к системе дифуров 1-ого порядка...

Отправлено: 18:48, 21-09-2008

 

Ветеран


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

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


gustav21, нужно просто посчитать или поставить вопрос решений на поток и изготовить для этого прогу?
В любом случаи существуют готовые математические программы среди которых Maple, MathCAD, Matlab, Mathematica и т.д.
Как примерно это выглядит
Решение дифференциальных уравнений в Mathcad
Аналитическое решение дифференциальных уравнений с помошью Maple
и т.д. на том же ресурсе.

А насчёт самого хода решения то в данном случаи с 3го можем понизить (если оно не содержит y или x) до 2го и решать его.

Это сообщение посчитали полезным следующие участники:

Отправлено: 01:05, 22-09-2008 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


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


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

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


В том то и дело, что нужна именно прога на С++ (ну или алгоритм накрайняк)

Отправлено: 09:19, 22-09-2008 | #3


Ветеран


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

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


Цитата gustav21:
ну или алгоритм накрайняк »
т.е., что такое метод Эйлера ты не знаешь?

Отправлено: 14:10, 22-09-2008 | #4


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


Сообщения: 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



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Решение дифуравнения на С++

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Wireless - Посоветуйте WI-FI решение. krec Сетевое оборудование 2 29-06-2009 10:39
FreeBSD - Инженерное решение... xolod. Общий по FreeBSD 1 28-05-2009 23:23
Звук - Колонки - последнее решение Analog Прочее железо 6 03-01-2009 08:03
Теория - Решение системы уравнений quaker_strelok Программирование и базы данных 3 23-09-2007 14:29
Терминальное решение Baboon Сетевые технологии 2 06-10-2003 17:13




 
Переход