Ask Your Question

# Solve symbolic matrix cell

I'm trying to take a cell from a matrix and solve for a variable symbolically. When I run this, I get the error:

TypeError: The first argument must be a symbolic expression or a list of symbolic expressions.

This is the code I am trying to execute:

var('a','b','c','x','y','z')
Rz = matrix([[cos(a),-sin(a),0,0],[sin(a),cos(a),0,0],[0,0,1,0],[0,0,0,1]])
Ry = matrix([[cos(b),0,sin(b),0],[0,1,0,0],[-sin(b),0,cos(b),0],[0,0,0,1]])
Rx = matrix([[1,0,0,0],[0,cos(c),-sin(c),0],[0,sin(c),cos(c),0],[0,0,0,1]])
P = matrix([[x],[y],[z],])

Rzyxp = Rz * Ry * Rx * P
show(Rzyxp)

eqn2 = Rzyxp
show(eqn2)

result1 = solve(eqn2==0, b)
show(result1)


Any help would be appreciated

edit retag close merge delete

## 2 answers

Sort by » oldest newest most voted

Rzyxp is a matrix, so Rzyxp is its third row: a vector; albeit a one-dimensional one. In order to get the entry itself, you need to index with two indices:

solve(Rzyxp[2,0],b)


does not give an error (but possibly not a very useful answer either).

more

nbrion's answer's usefulness can be slightly enhanced with a few assumptions:

 sage: with assuming(b>-pi/2,b<pi/2): ((eqn2).solve(b)/cos(b)).trig_reduce()
....: .arctan().trig_expand()
b == arctan(z*cos(c)/x + y*sin(c)/x)


HTH,

more

## Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

## Stats

Asked: 2019-03-19 14:44:52 -0500

Seen: 45 times

Last updated: Mar 20