2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Символьные вычисления в Matlab
Сообщение09.10.2018, 10:12 
Добрый день!

В результате некоторых вычислений в Matlab я получаю символьное уравнение:

a) $2 \cdot x1 - 21M + 3 \cdot x2 - 5 \cdot x3 + 4M \cdot x1 + 7M \cdot x2 - M \cdot y1 - M \cdot y2$ == 0

Где $x1, x2, x3, y1, y2$ - его переменные, а $M$ - некоторый очень большой положительный параметр.

Мне нужно:
1. Привести подобные слагаемые и выразить свободный член $-21M$, чтобы получилось:

b) $(-2-4M) \cdot x1 + (-3-7M) \cdot x2 +5 \cdot x3 + M \cdot y1 + M \cdot y2== - 21M$

2. Получить вектор из коэффициентов данного уравнения. Предполагаю, что это можно сделать при помощи функции equationsToMatrix, но для этого на вход нужно подать выражение $b$. А получить его средствами Matlab у меня пока не получается. Пытался выражать свободный член при помощи solve, а приводить подобные функцией collect, но результата не получил. Судя по всему, по той причине, что Matlab не различает переменные $x1, x2, x3, y1, y2$ и параметр $M$. Может быть можно как то "разграничить" их?

Обобщу:

Есть выражение $a$. Средствами Matlab нужно получить:
$C = [-2-4M, -3-7M, 5, M, M, 0, 0, 0, -21M]$

Как сделать это наиболее правильно?

 
 
 
 Re: Символьные вычисления в Matlab
Сообщение09.10.2018, 16:03 
Приведение подобных:
Используется синтаксис Matlab M
>> ec=collect(eq,[x1,x2,x3,y1,y2])
 


коэффициенты можно вытащить с помощью функции coeffs
Используется синтаксис Matlab M
>> coeffs(ec,[x1,x2,x3,y1,y2])
 

но они почему то следуют справа налево. Обратите внимание, coeffs работает с выражением, а не с уравнением, т.е. "==0" в ec быть не должно (это не страшно, pascal -равенство можно дописать потом).

В общем разберётесь по ходу дела.

 
 
 
 Re: Символьные вычисления в Matlab
Сообщение09.10.2018, 23:58 
Andrey_Kireew, все получилось, большое спасибо!

 
 
 [ Сообщений: 3 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group