# System of Linear algebraic eqn. to matrix form

2 views (last 30 days)
Nunthadech Rodcheuy on 3 Jun 2012
Answered: Kevin O on 6 Dec 2013
I would like to convert system of algebraic equation to Matrix form
I knew that in Mathematica "CoefficientsArray[expression,{x,y,z}]" will help me pull out those coefficients of unknowns and it can also arranges in order.
For ex. unknowns are x, y, z
eqn : 2x+3y=0
>>> then in Mathematica i can do [2 3 0] or even [3 0 2], my point is, it can manage the order . >>>However, so far in MATLAB that i knew, the cmd is "coeffs(expr)", i got [2 3] and that's it no 0 for z
Does anyone know how to assign an order as well as include 0 coefficient in the out put array?
Thk

Nunthadech Rodcheuy on 5 Jun 2012
I've got a sol. for those who are in the same situation
try using >>>subs()
for ex.
[subs(f,{x,y,z},{0,0,1}) subs(f,{x,y,z},{0,1,0}) subs(f,{x,y,z},{1,0,0})]
result is
ans = [0 3 2]

Walter Roberson on 3 Jun 2012
You can specify the indeterminents for ceoffs

#### 1 Comment

Nunthadech Rodcheuy on 3 Jun 2012
Could you please give an sample code?
for ex. input 2*x+3*y+0*z output [3 0 2]
i've tried specify in the following way but it's not work for me , out put is still an equation.
syms x y z
>> coeffs(2*x+3*y,[x y z])
ans =
2*x+3*y
Anyway, thk a lot, i really appreciate your suggestion

Kevin O on 6 Dec 2013
For anyone using versions earlier than 2013, which has the equationstoMatrix function, I used this block of code to create a 6X6 coefficient matrix from a vector of equations and variables. It isn't pretty, but that's probably why they added the new function:
% for i=1:6
K(i,:)=[subs(EQ(i),[a1 a2 a3 a4 a5 a6],[1 0 0 0 0 0]) ...
subs(EQ(i),[a1 a2 a3 a4 a5 a6],[0 1 0 0 0 0]) ...
subs(EQ(i),[a1 a2 a3 a4 a5 a6],[0 0 1 0 0 0]) ...
subs(EQ(i),[a1 a2 a3 a4 a5 a6],[0 0 0 1 0 0]) ...
subs(EQ(i),[a1 a2 a3 a4 a5 a6],[0 0 0 0 1 0]) ...
subs(EQ(i),[a1 a2 a3 a4 a5 a6],[0 0 0 0 0 1])];
end