Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
4 / 4 / 3
Регистрация: 01.04.2016
Сообщений: 136
Matlab 2016

Решение системы ДУ в аналитическом виде

19.10.2019, 13:32. Показов 1792. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.

Необходимо решить следующую систему ДУ в аналитическом (символьном) виде:

p1'(t)=-5p1(t)+3p2(t)+4p3(t)
p2'(t)=3p1(t)-5p2(t)+4p4(t)
p3'(t)=2p1(t)-7p3(t)+3p4(t)
p4'(t)=2p2(t)+3p3(t)-7p4(t)

Начальные условия: p1=1; p2=0; p3=0; p4=0.

Пробую через dsolve без начальных условий (для начала):

Matlab M
1
S=dsolve('Dp1=-5*p1+3*p2+4*p3','Dp2=3*p1-5*p2+4*p4','Dp3=2*p1-7*p3+3*p4','Dp4=2*p2+3*p3-7*p4');
После выполнения создается структура S с полями a1,a2,a3,a4, но в полях ничего нет - пусто.

В чем может быть проблема?
P.S. Возможно ли добавление в СДУ ограничения типа p1+p2+p3+p4=1?

Заранее благодарю
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.10.2019, 13:32
Ответы с готовыми решениями:

Решение диф. уравнения параболического типа в аналитическом виде
Доброго времени суток, форумчане! Помогите решить диф. уравнение параболического типа. Необходимо для того, что бы прогу тестить. Нет...

Задание сигналов в аналитическом виде
Подскажите,пожалуйста,как в Simulink падать 2 сигнала в аналитическом виде на вход сумматора,при этом посмотреть выходной сигнал. К...

Записать в аналитическом виде комплексные амплитуды
Плоская однородная электромагнитная волна левой круговой поляризации распространяется вводной среде в заданном направлении. ...

9
416 / 200 / 69
Регистрация: 20.01.2019
Сообщений: 714
19.10.2019, 15:26
Лучший ответ Сообщение было отмечено senek как решение

Решение

senek,
Как-то так
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
clear all 
clc
 
syms p1(t) p2(t) p3(t) p4(t)
eqns = [diff(p1)==-5*p1+3*p2+4*p3
        diff(p2)==3*p1-5*p2+4*p4
        diff(p3)==2*p1-7*p3+3*p4
        diff(p4)==2*p2+3*p3-7*p4];
S=dsolve(eqns);
p1(t) = S.p1
p2(t) = S.p2
p3(t) = S.p3
p4(t) = S.p4
С начальными условиями
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
clear all 
clc
 
syms p1(t) p2(t) p3(t) p4(t)
eqns = [diff(p1)==-5*p1+3*p2+4*p3
        diff(p2)==3*p1-5*p2+4*p4
        diff(p3)==2*p1-7*p3+3*p4
        diff(p4)==2*p2+3*p3-7*p4];
 
cond = [p1(0)==1, p2(0)==0, p3(0)==0, p4(0)==0];
Sc=dsolve(eqns,cond);
p1c(t) = Sc.p1
p2c(t) = Sc.p2
p3c(t) = Sc.p3
p4c(t) = Sc.p4
Добавлено через 46 минут
C ограничением надо вот так действовать
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
clear all 
clc
 
syms p1(t) p2(t) p3(t) p4(t)
p4=1-p1-p2-p3; 
eqns = [diff(p1)==-5*p1+3*p2+4*p3
        diff(p2)==3*p1-5*p2+4*p4
        diff(p3)==2*p1-7*p3+3*p4];
cond = [p1(0)==1, p2(0)==0, p3(0)==0];
Sc=dsolve(eqns,cond);
p1c(t) = Sc.p1
p2c(t) = Sc.p2
p3c(t) = Sc.p3
p4c(t) = 1 - Sc.p1 - Sc.p2 - Sc.p3
check = p1c(t)+p2c(t)+p3c(t)+p4c(t)
0
4 / 4 / 3
Регистрация: 01.04.2016
Сообщений: 136
19.10.2019, 17:14  [ТС]
Попробовал второй способ
Цитата Сообщение от AlMih Посмотреть сообщение
С начальными условиями
Выдает ошибку "The equations are invalid".
Даже когда разделил уравнения запятыми, не помогло.

P.S. А функция diff, мне кажется, вычисляет не производную функции в символьном виде, а разности соседних элементов ряда (что-то вроде дискретной производной). Поэтому она может не подойти в данном случае. Так ли это?
0
416 / 200 / 69
Регистрация: 20.01.2019
Сообщений: 714
19.10.2019, 20:05
Эти куски кода, что я привел, надо запускать в разных файлах

Добавлено через 8 минут
Насчет diff. Если смотреть хэлп по dsolve (в последних версиях матлаба), то там вот такое предупреждение:
Character vector inputs will be removed in a future release. Instead, use syms to declare variables and replace inputs such as dsolve('Dy = y') with syms y(t); dsolve(diff(y,t) == y).

Добавлено через 2 минуты
В хэпе по diff

"diff

Differentiate symbolic expression or function"

Добавлено через 59 минут
Вот, в "старом стиле"
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
clear all 
clc
 
syms p1(t) p2(t) p3(t) p4(t)
eqns = 'Dp1=-5*p1+3*p2+4*p3,Dp2=3*p1-5*p2+4*p4,Dp3=2*p1-7*p3+3*p4,Dp4=2*p2+3*p3-7*p4';
 
cond = [p1(0)==1, p2(0)==0, p3(0)==0, p4(0)==0];
Sc=dsolve(eqns,cond);
p1c(t) = Sc.p1
p2c(t) = Sc.p2
p3c(t) = Sc.p3
p4c(t) = Sc.p4
1
4 / 4 / 3
Регистрация: 01.04.2016
Сообщений: 136
20.10.2019, 11:09  [ТС]
Цитата Сообщение от AlMih Посмотреть сообщение
Вот, в "старом стиле"
Попробовал, все то же самое - пусто
Миниатюры
Решение системы ДУ в аналитическом виде   Решение системы ДУ в аналитическом виде  
0
4 / 4 / 3
Регистрация: 01.04.2016
Сообщений: 136
20.10.2019, 11:10  [ТС]
Даже если еще раз почистить все переменные - то же самое.
0
416 / 200 / 69
Регистрация: 20.01.2019
Сообщений: 714
20.10.2019, 11:11
А если не ставить точки с запятой в 9-12-й строке?
1
574 / 363 / 186
Регистрация: 11.01.2019
Сообщений: 1,220
20.10.2019, 11:26
Цитата Сообщение от senek Посмотреть сообщение
Вот, в "старом стиле"
Попробовал, все то же самое - пусто
в моем 2016a работает
0
4 / 4 / 3
Регистрация: 01.04.2016
Сообщений: 136
20.10.2019, 13:52  [ТС]
Цитата Сообщение от AlMih Посмотреть сообщение
А если не ставить точки с запятой в 9-12-й строке?
Тогда работает (см. рисунок). Благодарю за ответ.

P.S. Странно, походу ответ (решение диф. уравнений) в MATLAB можно получить только выводом в консоль.
Миниатюры
Решение системы ДУ в аналитическом виде  
0
416 / 200 / 69
Регистрация: 20.01.2019
Сообщений: 714
20.10.2019, 14:04
Ну я также вижу эту структуру в рабочем пространстве.
Потом, ты же можешь вывести результаты на печать, в файл, использовать в дальнейших расчетах и т.п.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.10.2019, 14:04
Помогаю со студенческими работами здесь

Ввод функции в аналитическом виде для расчета интеграла
Пишу программу предназначенную для нахождения неопределенного интеграла, возникла следующая проблема: мне необходимо вводить сам...

Решение системы в буквенном виде
Подскажите пожалуйста, что делать, если ответ мне нужно получить в общем виде, а маткад использует начальное приближение и выводит ответ в...

Решить систему диф.уравнений первого порядка в аналитическом виде и вывести графики найденых функций
Собсно сабж. Нужно решить систему диф.уравнений первого порядка в аналитическом виде (в символьном) и вывести графики найденых функций. ...

Решение системы уравнений в символьном виде
Здравствуйте! Помогите решить систему из 6 уравнений. Нужно найти q1-q6. Пробовал через given и solve, но ничего не выходит.

Решение системы линейных уравнений в матричном виде
Получил задание написать программу которая будет решать систему линейных уравнений матричным способом. Помогите...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru