Using coeffs to extract a matrix

24 views (last 30 days)
Jonah Berean-Dutcher
Jonah Berean-Dutcher on 9 Sep 2020
Edited: Matt J on 9 Sep 2020
I have a polynomial function of many symbolic variables, and I want to extract the 'coefficient matrix' from this polynomial. Every term in the polynomial has only two factors of these symbolic variables, i.e.
The coefficient matrix I want to extract is the one that would produce precisely this polynomial if I evaluated the vector-matrix-vector product:
where here x is a vector whose entries are all these symbolic variables, and Kis the coeffient matrix. In Mathematica, this is straightforward, there's a function called CoefficientArrays which performs exactly this operation. What is the best way to do this in Matlab? I have looked at the 'coeffs' function, but it doesn't appear to offer the same level of functionality as the Mathematica function I referenced.

Accepted Answer

Matt J
Matt J on 9 Sep 2020
Edited: Matt J on 9 Sep 2020
The coefficient matrix I want to extract is the one that would produce precisely this polynomial if I evaluated the vector-matrix-vector product:
Such a K matrix is not unique, but the hessian() command,
will give a symmetric solution for K. E.g.,
>> syms x y z
>> P = 3*y^2 + x*y + 2*z*x;
>> K = hessian(P,[x,y,z])/2
K =
[ 0, 1/2, 1]
[ 1/2, 3, 0]
[ 1, 0, 0]
  1 Comment
Matt J
Matt J on 9 Sep 2020
Edited: Matt J on 9 Sep 2020
If you want a solution for K that is upper triangular, you can transform the symmetric solution according to,
>> K=diag(diag(K))+2*triu(K,1)
K =
[ 0, 1, 2]
[ 0, 3, 0]
[ 0, 0, 0]

Sign in to comment.

More Answers (0)

Products


Release

R2020a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!