functions with vector inputs

Are vector functions supported in sage?

as in:

f1(r,phi,theta) = 1/r
f2(r,phi,theta) = 1
f3(r,phi,theta) = 1
F = vector([f1, f2, f3])
G=rot(F) # vector function


An ancient post seems to suggest that rot has to be defined with a positional python-argument like rot(*F).

Is there a way for "rot" to take the vector symbolically as an argument?

edit retag close merge delete

1

I think I know what you mean now. sage: rot(r,phi,theta) = F could in theory make a vector function, but it doesn't currently know what to do.

( 2012-10-01 13:02:19 -0500 )edit

Sort by » oldest newest most voted

I don't understand the question. Are you asking if it's possible to use the special notation like f(x) = x^2 for the creation of vector valued functions? If so, the answer is currently no, but it could probably be added to the Sage preparser without much problem. Of course you can always define the function rot the ordinary way to take a vector and return a vector:

sage: rot = lambda v: vector([1/v[0],1,1])
sage: rot(vector([2,1,1]))
(1/2, 1, 1)

more

I usually think of a gradient as being a property of a single-variable function... but anyway, is this what you want?

sage: F.diff()
[(r, phi, theta) |--> -1/r^2      (r, phi, theta) |--> 0      (r, phi, theta) |--> 0]
[     (r, phi, theta) |--> 0      (r, phi, theta) |--> 0      (r, phi, theta) |--> 0]
[     (r, phi, theta) |--> 0      (r, phi, theta) |--> 0      (r, phi, theta) |--> 0]
sage: diff(F)
[(r, phi, theta) |--> -1/r^2      (r, phi, theta) |--> 0      (r, phi, theta) |--> 0]
[     (r, phi, theta) |--> 0      (r, phi, theta) |--> 0      (r, phi, theta) |--> 0]
[     (r, phi, theta) |--> 0      (r, phi, theta) |--> 0      (r, phi, theta) |--> 0]

more

My mistake: the problem arises while calculating the divergence. It was a copy/paste failure. I will edit the question. I don't think this is the answer I was looking for.

( 2012-10-01 10:39:11 -0500 )edit