[HP-Prime CAS] Vector Calculus Library - Printable Version +- HP Forums (https://archived.hpcalc.org/museumforum) +-- Forum: HP Museum Forums (https://archived.hpcalc.org/museumforum/forum-1.html) +--- Forum: Old HP Forum Archives (https://archived.hpcalc.org/museumforum/forum-2.html) +--- Thread: [HP-Prime CAS] Vector Calculus Library (/thread-254314.html) [HP-Prime CAS] Vector Calculus Library - CompSystems - 10-30-2013 Hello Start to program a library of vector calculus, in different coordinates (spherical, cylindrical and Cartesian) for the current commands grad fromHP-CAS only work on Cartesian Coordinates =(.   First command or function (test) gradient of a function in (x, y, z) f2(x,y,z):=x^3+y²+z; [ENTER] [d(f2(x,y,z),x),d(f2(x,y,z),y),d(f2(x,y,z),z)] ; [ENTER] => [3*x²,2*y,1] // ok // definition as function gradient(f(x,y,z)):=[d(f(x,y,z),x),d(f(x,y,z),y),d(f(x,y,z),z)]; [ENTER] Done gradient(x^3+y²+z); [ENTER] [0,0,0] ?? What mistake I'm making? gradient CAS mathematica Edited: 30 Oct 2013, 11:32 p.m. after one or more responses were posted Re: [HP-Prime CAS] Vector Calculus Library - Tim Wessman - 10-30-2013 Does this do anything different then the built in capability? toolbox->calculus->differential->Gradient grad(x^3+y^2+z,[x,y,z]) -> [3*x^2,2*y,1] TW Re: [HP-Prime CAS] Vector Calculus Library - CompSystems - 10-30-2013 The first version (dradient, divergence) is exactly like the command to bring the hp-prime, but only works in Cartesian coordinates, my purpose is to operate in spherical and cylindrical coordinates =) I'm waiting for an answer where I am wrong encoding my code for gradent ... Re: [HP-Prime CAS] Vector Calculus Library - Han - 10-30-2013 Quote: The first version (dradient, divergence) is exactly like the command to bring the hp-prime, but only works in Cartesian coordinates, my purpose is to operate in spherical and cylindrical coordinates =) I'm waiting for an answer where I am wrong encoding my code for gradent ... ```gradient(f):=[ diff(f,x), diff(f,y), diff(f,z) ] ``` The input variable of any function (in this case, of gradient) must be exactly that: a variable. You may want to make your gradient function more robust by allowing users to specify the variables of the function, though (rather than assuming it will always be x, y, and z). ```gradient(f,v):=[diff(f,v(1)), diff(f,v(2)), diff(f,v(3)) ]; gradient(x^2*y+z, {x,y,z}); ``` Re: [HP-Prime CAS] Vector Calculus Library - Han - 10-30-2013 Quote: ```gradient(f):=[ diff(f,x), diff(f,y), diff(f,z) ] ``` The input variable of any function (in this case, of gradient) must be exactly that: a variable. You may want to make your gradient function more robust by allowing users to specify the variables of the function, though (rather than assuming it will always be x, y, and z). ```gradient(f,v):=[diff(f,v(1)), diff(f,v(2)), diff(f,v(3)) ]; gradient(x^2*y+z, {x,y,z}); ``` You probably have to enter this in algebraic mode since there seems to be a bug in textbook mode regarding vectors/matrices and entries consisting of functions. Re: [HP-Prime CAS] Vector Calculus Library - CompSystems - 10-30-2013 Quote: You probably have to enter this in algebraic mode since there seems to be a bug in textbook mode regarding vectors/matrices and entries consisting of functions. thanks Han On the entry line and within array [] the [,] key used to skip to the next element, and I can not writing the expression f(x,y) ... [request for hp] I think one solution is to [shift-lock]+[,] = , Edited: 30 Oct 2013, 11:20 p.m. Re: [HP-Prime CAS] Vector Calculus Library - CompSystems - 10-30-2013 Han if I define my original function with diff, not fail, if define symbol d fail, is a possible BUG? // step to step f2(x,y,z):=x^3+y²+z; [ENTER] [d(f2(x,y,z),x),d(f2(x,y,z),y),d(f2(x,y,z),z)] ; [ENTER] => [3*x²,2*y,1] // ok [diff(f2(x,y,z),x) , diff(f2(x,y,z),y), diff(f2(x,y,z),z)]; [ENTER] => [3*x²,2*y,1] // ok // define gradient(f(x,y,z)):= [diff(f(x,y,z),x), diff(f(x,y,z),y), diff(f(x,y,z),z)]; [ENTER] Done gradient(x^3+y²+z); [ENTER] => [3*x²,2*y,1] // ok gradient(f(x,y,z)):= [d(f(x,y,z),x),d(f(x,y,z),y),d(f(x,y,z),z)]; [ENTER] Done gradient(x^3+y²+z); [ENTER] => [0,0,0] ?? // BUG? PD: on the entry line" another problem with v([1]) extraction of elements of a list, matrix ([m,n]), I can only be from an external editor (copy/paste) or encode in "algebraic" entry =( sample gradient2(f(x,y,z),v):=[diff(f(x,y,z),v([1])),diff(f(x,y,z),v([2])),diff(f(x,y,z),v([3]))]; Edited: 31 Oct 2013, 12:05 a.m. Re: [HP-Prime CAS] Vector Calculus Library - Han - 10-31-2013 Quote: Han if I define my original function with diff, not fail, if define symbol d fail, is a possible BUG? Possibly -- it really depends on whether d is meant as a numerical command or a CAS command. The documentation says it is supposed to compute numerical derivatives. However, it appears the developers have allowed it to also compute symbolic derivatives. Quote: // step to step f2(x,y,z):=x^3+y²+z; [ENTER] [d(f2(x,y,z),x),d(f2(x,y,z),y),d(f2(x,y,z),z)] ; [ENTER] => [3*x²,2*y,1] // ok [diff(f2(x,y,z),x) , diff(f2(x,y,z),y), diff(f2(x,y,z),z)]; [ENTER] => [3*x²,2*y,1] // ok // define gradient(f(x,y,z)):= [diff(f(x,y,z),x), diff(f(x,y,z),y), diff(f(x,y,z),z)]; [ENTER] Done gradient(x^3+y²+z); [ENTER] => [3*x²,2*y,1] // ok You should avoid using non-standard variables. When you create the CAS function gradient, your code above uses "f(x,y,z)" to mean a function of three variables as the desired input. However, the CAS interprets this as a single variable whose name is "f(x,y,z)" and does not see it as a function. To see my point, type: ```myfunc(x*Y+Z):=SIN(x*Y+Z); myfunc(2); ==> SIN(2)``` Everything works as if "x*Y+Z" is a valid variable -- but you should avoid this. (It may be an un-intended "feature" but it is not a good use of placeholder variables) Quote: gradient(f(x,y,z)):= [d(f(x,y,z),x),d(f(x,y,z),y),d(f(x,y,z),z)]; [ENTER] Done gradient(x^3+y²+z); [ENTER] => [0,0,0] ?? // BUG? Again, I am not sure of the intended behavior of d but if it is a numerical derivative, there is a good chance the parser is evaluating the partial of "f(x,y,z)" as a variable, which would be considered a constant with respect to x, y, or z. Quote: PD: on the entry line" another problem with v([1]) extraction of elements of a list, matrix ([m,n]), I can only be from an external editor (copy/paste) or encode in "algebraic" entry =( v(1) and v[1] are different in CAS mode. There was a discussion earlier about this. One counts from 0 the other from 1 (I don't remember which). And yes, there is also a bug with textbook mode and the use of the [,] key.