# Using matrix elements as arguments

 3 I have a rather easy question, or so it would seem. I have looked for an answer but was unable to find one anywhere so I'm asking it here. I am making a very simple iterative algorithm for which the input as well as the output at the end of every iteration is a vector (or matrix for that matter). What I want to do is use these elements as arguments for several functions during each of the iteration. So for example x=var('x') y=var('y') z=matrix(2,1,[ [1],[1] ] f=x^2+y^3 H=f.hessian()  Then what I would like to do is say H(z[0],z[1])  or H(z)  But no matter what I try I can't seem to get it to work. Ideas? asked Nov 26 '10 DisneySage 31 ● 2 ● 3 niles 3605 ● 7 ● 45 ● 101 http://nilesjohnson.net/

 4 There is a subtle difference between "symbolic expressions" and "callable symbolic expressions", which are also termed "functions". Writing sage: f=x^2+y^3  makes f a symbolic expression, which displays as sage: f x^2 + y^3  On the other hand, writing sage: g(x,y)=x^2+y^3  makes g a callable symbolic expression, which displays as sage: g (x, y) |--> x^2 + y^3  With f, you need to use f.substitute to substitute values, but with g, since you have already informed sage of the variable order, you can use it like a function sage: g(1,3) 28  The way you define your finction determines what kind of expression the corresponding Hessian is; note the difference in syntax below: First method: sage: x=var('x') sage: y=var('y') sage: z=matrix(2,1,[ [1],[1] ]) sage: f=x^2+y^3 sage: H=f.hessian() sage: H.substitute(x=z[0,0],y=z[1,0]) [2 0] [0 6] sage: f x^2 + y^3 sage: H [ 2 0] [ 0 6*y]  Second method, making g a callable symbolic expression: sage: x=var('x') sage: y=var('y') sage: z=matrix(2,1,[ [1],[1] ]) sage: g(x,y)=x^2+y^3 sage: H=g.hessian() sage: H(z[0,0],z[1,0]) [2 0] [0 6] sage: g (x, y) |--> x^2 + y^3 sage: H [ (x, y) |--> 2 (x, y) |--> 0] [ (x, y) |--> 0 (x, y) |--> 6*y]  posted Nov 28 '10 niles 3605 ● 7 ● 45 ● 101 http://nilesjohnson.net/
 2 This works for me: sage: H.substitute(x=z[0,0],y=z[1,0])  (z is a matrix, so it requires two indices to specify an element.) posted Nov 26 '10 John Palmieri 2880 ● 9 ● 25 ● 65 http://www.math.washingto...

[hide preview]