Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.61/18: Рейтинг темы: голосов - 18, средняя оценка - 4.61
5 / 4 / 1
Регистрация: 14.02.2018
Сообщений: 583

Система ОДУ не решается

15.02.2018, 11:25. Показов 5157. Ответов 99
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
подскажите как сделать программу, очень нужно
Миниатюры
Система ОДУ не решается  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.02.2018, 11:25
Ответы с готовыми решениями:

Система уравнений не решается :(
Добрый день, Помогите, пожалуйста, не получается решить систему. С маткадом раньше не работала, так что заранее прошу прощения за...

Не решается система уравнение
Всем привет! Подскажите пожалуйста, почему маткад 15 не решает систему? Ввел начальные условия, первое приближение. После given сама...

Не решается система уравнений
при решении уравнений выдается единичная матрица, это же не ответы...как быть, помогите пожалуйста!

99
 Аватар для mat_for_c
223 / 213 / 80
Регистрация: 26.04.2013
Сообщений: 972
17.02.2018, 14:07
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от ElKros Посмотреть сообщение
вот так задается все
тогда можете спокойно вместо переменных tau, P, eps, alpha, I0 написать числа в самих уравнениях и убрать их из передаваемых параметров (их останется 5).

Цитата Сообщение от ElKros Посмотреть сообщение
и почему не распознает exp, когда ее объявляем глобальной константой ?
без кода не скажу

Добавлено через 2 минуты
Цитата Сообщение от ElKros Посмотреть сообщение
pow(2.718, (-alpha / y_0)); // не видит exp = 2.718
тут надо писать
C++
1
2
3
#include <cmath>
 
exp(-0.25/ y_0);
Добавлено через 7 минут
Цитата Сообщение от ElKros Посмотреть сообщение
Если они у нас присутствуют в задании уравнения, то мы их тоже должны вписывать в объявление и просчет
Когда вчера речь зашла про константы, я вас не правильно понял. Я думал вы спрашиваете про квалификатор const
0
5 / 4 / 1
Регистрация: 14.02.2018
Сообщений: 583
17.02.2018, 15:24  [ТС]
mat_for_c, pow(2.718, (-alpha / y_0)); здесь вместо 2.718 я писала число е, а его не воспринимало, хотя я писала его как глобальную const double e = 2.718

Добавлено через 32 минуты
mat_for_c, а для того, чтобы записывать при компиляции число в степени, то для этого нужно писать отдельно функцию ?

Добавлено через 16 минут
mat_for_c, у меня после выполнения программы в выводе пишет непонятные числа
0
 Аватар для mat_for_c
223 / 213 / 80
Регистрация: 26.04.2013
Сообщений: 972
17.02.2018, 17:37
Цитата Сообщение от ElKros Посмотреть сообщение
у меня после выполнения программы в выводе пишет непонятные числа
исходный код в студию
0
5 / 4 / 1
Регистрация: 14.02.2018
Сообщений: 583
17.02.2018, 18:00  [ТС]
mat_for_c,
C++
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
double dy0dt(const double t, const double y_0, const double y_1, const double y_2, const double y_3){
    return 8.85*pow(10, -6) - y_2*y_0*((1.2 - 1 - y_0) / (1 - y_1)) + y_0 / pow(10, -8);
}
double dy1dt(const double t, const double y_0, const double y_1, const double y_2, const double y_3){
    return y_0 * y_2;
}
double dy2dt(const double t, const double y_0, const double y_1, const double y_2, const double y_3){
    return y_0 * y_3;
}
 
double dy3dt(const double t, const double y_0, const double y_1, const double y_2, const double y_3){
    return pow(10, 30)*(sqrt(y_0))*(exp(-0.25 / y_0));
}
void rungeKutta_by_4(double y0, double y1, double y2, double y3, double t0, double max_t, double h){
    double k1[4], k2[4], k3[4], k4[4];
 
    double t = t0;
 
    vector<function<double(double, double, double, double, double) >> vfunc;
    vfunc.push_back(dy0dt);
    vfunc.push_back(dy1dt);
    vfunc.push_back(dy2dt);
    vfunc.push_back(dy3dt);
 
    size_t max_iter = (max_t - t0) / h;
 
    for (int i = 0; i < max_iter; i++)
    {
        cout << t << "\t" << setprecision(5) << y0 << "\t" << y1 << "\t" << y2 << "\t" << y3 << endl;
 
        for (int j(0); j < 4; ++j) {
            k1[j] = h*vfunc[j](t, y0, y1, y2, y3);
        }
 
        for (int j(0); j < 4; ++j) {
            k2[j] = h*vfunc[j](t + 0.5*h, y0 + 0.5*k1[0], y1 + 0.5*k1[1], y2 + 0.5*k1[2], y3 + 0.5*k1[3]);
        }
 
        for (int j(0); j < 4; ++j) {
            k3[j] = h*vfunc[j](t + 0.5*h, y0 + 0.5*k2[0], y1 + 0.5*k2[1], y2 + 0.5*k2[2], y3 + 0.5*k3[3]);
        }
 
        for (int j(0); j < 4; ++j) {
            k4[j] = h*vfunc[j](t + h, y0 + k3[0], y1 + k3[1], y2 + k3[2], y3 + k3[3]);
        }
 
        y0 += (k1[0] + 2 * k2[0] + 2 * k3[0] + k4[0]) / 6.;
        y1 += (k1[1] + 2 * k2[1] + 2 * k3[1] + k4[1]) / 6.;
        y2 += (k1[2] + 2 * k2[2] + 2 * k3[2] + k4[2]) / 6.;
        y3 += (k1[3] + 2 * k2[3] + 2 * k3[3] + k4[3]) / 6.;
 
        t = t + h;
    }
    cout << t << setprecision(5) << "\t" << y0 << "\t" << y1 << "\t" << y2 << "\t" << y3 << endl;
 
}
int main() {
    double y_0, y_1, y_2, y_3;
    cout << "Input y0: "; cin >> y_0; // 10^(-10)
    cout << "Input y1: "; cin >> y_1; // 0
    cout << "Input y2: "; cin >> y_2; // 0
    cout << "Input y3: "; cin >> y_3; // 0
    double beg_time, max_time;
    double step;
cout << "Input begin: "; cin >> beg_time; // = 0
    cout << "Input end: "; cin >> max_time;   // = 1
cout << "Input step: "; cin >> step;      // = 0.1
rungeKutta_by_4(y_0, y_1, y_2, y_3, beg_time, max_time, step);
}
0
 Аватар для mat_for_c
223 / 213 / 80
Регистрация: 26.04.2013
Сообщений: 972
17.02.2018, 18:25
Цитата Сообщение от ElKros Посмотреть сообщение
у меня после выполнения программы в выводе пишет непонятные числа
если вы про -nan(ind), то это из-за того, что вычисляется корень от отрицательного числа. уж слишком гигантские константы у вас в ОДУ заданы, числа очень быстро возрастают. можете посмотреть при отладке.

и да, исправьте eps на pow(10,6);, но роли это не играет
0
5 / 4 / 1
Регистрация: 14.02.2018
Сообщений: 583
17.02.2018, 18:35  [ТС]
mat_for_c, у меня такое на любых интервалах пишет. А если мне нужно ввести у0 = 10^-10 С клавиатуры, то как лучше его вводить, потому что в таком варианте не считает консоль

Добавлено через 3 минуты
mat_for_c, или лучше функцию для этого написать ?
0
 Аватар для mat_for_c
223 / 213 / 80
Регистрация: 26.04.2013
Сообщений: 972
17.02.2018, 18:43
Цитата Сообщение от ElKros Посмотреть сообщение
нужно ввести у0 = 10^-10 С клавиатуры
10e-10
0
5 / 4 / 1
Регистрация: 14.02.2018
Сообщений: 583
22.02.2018, 16:54  [ТС]
mat_for_c, мне сказали, что решаться должно. а вы не знаете как можно сделать методом эйлера ? может он будет считать ?
0
 Аватар для mat_for_c
223 / 213 / 80
Регистрация: 26.04.2013
Сообщений: 972
22.02.2018, 19:52
Цитата Сообщение от ElKros Посмотреть сообщение
мне сказали, что решаться должно
какие начальные условия ОДУ? интервал вычисления?
Цитата Сообщение от ElKros Посмотреть сообщение
а вы не знаете как можно сделать методом эйлера
не вкурсе
0
5 / 4 / 1
Регистрация: 14.02.2018
Сообщений: 583
22.02.2018, 19:56  [ТС]
mat_for_c, y0(0) = 10e-10, y1(0)=y2(0)=y3(0)=0, t=[ 0;2×10e^-5]
0
 Аватар для mat_for_c
223 / 213 / 80
Регистрация: 26.04.2013
Сообщений: 972
22.02.2018, 20:58
Цитата Сообщение от ElKros Посмотреть сообщение
мне сказали, что решаться должно
Цитата Сообщение от ElKros Посмотреть сообщение
y0(0) = 10e-10, y1(0)=y2(0)=y3(0)=0, t=[ 0;2×10e^-5]
с такими условиями даже матлаб не решает
0
5 / 4 / 1
Регистрация: 14.02.2018
Сообщений: 583
22.02.2018, 20:59  [ТС]
mat_for_c, очень странно
0
 Аватар для mat_for_c
223 / 213 / 80
Регистрация: 26.04.2013
Сообщений: 972
22.02.2018, 21:01
он решает до 2*10e-9

Добавлено через 1 минуту
а дальше y0 становится < 0 и корень из отрицательного числа переходит в комплекснозначное решение

Добавлено через 37 секунд
проверьте еще раз ду
0
5 / 4 / 1
Регистрация: 14.02.2018
Сообщений: 583
22.02.2018, 21:17  [ТС]
mat_for_c, просто мне говорили, что система жесткая или неустойчивая, но решаться должна. Чтобы записать 2*10^-5 мы записывали? Может я не правильно записываю
0
 Аватар для mat_for_c
223 / 213 / 80
Регистрация: 26.04.2013
Сообщений: 972
22.02.2018, 21:18
Цитата Сообщение от ElKros Посмотреть сообщение
Чтобы записать 2*10^-5 мы записывали
2*10e-5
я так и сяк пробовал уже
0
5 / 4 / 1
Регистрация: 14.02.2018
Сообщений: 583
22.02.2018, 21:25  [ТС]
mat_for_c, то есть не в методе дело, а в самой оду?
0
 Аватар для mat_for_c
223 / 213 / 80
Регистрация: 26.04.2013
Сообщений: 972
22.02.2018, 21:42
Цитата Сообщение от ElKros Посмотреть сообщение
то есть не в методе дело, а в самой оду
думаю да

Не по теме:

оду не из физики часом?

0
5 / 4 / 1
Регистрация: 14.02.2018
Сообщений: 583
22.02.2018, 21:45  [ТС]
mat_for_c, у нее есть какой-то физический смысл и она связана как-то с сегнетоэлектриками
0
 Аватар для mat_for_c
223 / 213 / 80
Регистрация: 26.04.2013
Сообщений: 972
22.02.2018, 21:46
Цитата Сообщение от ElKros Посмотреть сообщение
у нее есть какой-то физический смысл и она связана как-то с сегнетоэлектриками

Не по теме:

долой физику :wall:

0
5 / 4 / 1
Регистрация: 14.02.2018
Сообщений: 583
22.02.2018, 21:54  [ТС]
mat_for_c, хотелось бы и мне так сказать )

Добавлено через 3 минуты
mat_for_c, но надо решить (((
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.02.2018, 21:54

Не решается система уравнений
откуда ошибка?

Как решается данная система?
Народ помогите, задание найти решение системы, как такое сделать в маткаде. не понимаю просто((

Система уравнений решается неверно
Доброго времени суток. Возникла проблема с решением системы уравнений. ....ax+b/a-c*x^2, x&gt;=500 z= ...

Почему не решается система уравнений?
Вручную считается. Т.е. в формулах ошибки нету

Не решается система диф. уравнений
Решаю систему по примеру, частное уравнение вывел правильно, а вот с общим что-то не то. Wolfram Alfa выдает следующее:


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
BitTorrent (версия 7.11 English) и Меню Настройки
russiannick 15.11.2026
Пункты, отвечающие за отключение обновлений в BitTorrent версии 7. 11 (английской) Options Preferences General Language
Транслитерация текста с кириллицы на латиницу (вариант №4)
Maks 15.11.2026
Что-то я перемудрил с предыдущими версиями, в этот раз сделал всё проще, обратившись к функции "СтрокаЛатиницей" из типового общего модуля "СтроковыеФункцииКлиент". В данной функции нет апострофов,. . .
BitTorrent (версия 4.3.9) и Меню Настройки
russiannick 15.11.2026
В меню Настройки можно отключить автоматическое обновление программы. Карта этого меню приложена ниже. Нужный пункт выделен красным. Сервис Настройки Поведение
Транслитерация текста с кириллицы на латиницу (вариант №3)
Maks 15.11.2026
Обновленная версия предыдущей обработки. Изменения коснулись букв: Ъ, Ы, Ь, Э, отображения которых зависят от положения реквизита "Транслитерация имён". Изменено отображение буквы Й. Добавлена. . .
Транслитерация текста с кириллицы на латиницу (вариант №2)
Maks 13.11.2026
Обновленная версия ранее созданной обработки. Добавлено: - Проверка исходного текста на кириллицу, через обращение к стандартной функции "ТолькоКириллицаВСтроке" из общего модуля. . .
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы. Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru