Thanks for your help Felix, with your ideas i made progresses. But the problem isn't fixe yet. Since i have some symbolic variable such 'dx' in my expressions, the code's line --> 500 return eval(string, {'I': numpy.complex(0,1)}) generate this folowing error NameError: name 'dx' is not defined Even when i put in the begining of my function var ("dx"), the problem stay.
Thanks again On 14 août, 04:04, thelamecamel <thelameca...@gmail.com> wrote: > Hi Viny, > > Sage's mathematica support at present seems to be geared towards > sending data to mathematica and printing the results to the screen, > rather than getting mathematica's results back into sage for data > manipulation. So the going may be a little rough. > > Sage can convert its own arrays into mathematica's notation, e.g. > Jason's example > sage: b=mathematica([1,2,3]) > will create a mathematica variable representing the array {1,2,3}, > accessible from sage. I'm not sure whether you can send mathematica > more complicated things such as functions in this fashion. > > Once you've got your variables into mathematica, you perform > mathematica functions on them like so: > sage: x = mathematica(1) > sage: mathematica.eval('myfunc[x_,y_]:=x+y') > sage: x.myfunc(2) > 3 > > It's hard to get your mathematica results back into sage for use. As > Jason noted below, mathematica arrays with {} don't get converted back > into sage arrays with []. There is a ticket related to the array > problem <http://trac.sagemath.org/sage_trac/ticket/4948>, but there > seems to be no progress on it. > > I gave up and rolled my own mathematica list to numpy array conversion > - you might find it useful. I believe that using eval() is frowned > upon for security reasons. If you want sage arrays rather than numpy > arrays, then use sage_eval() (which is considerably slower for large > arrays) and strip out the numpy stuff. Comments on the below code are > welcome. > > import numpy > import re > def mma_to_numpy(mma_arr): > """Convert mathematica array to numpy array.""" > # Convert the mathematica object to a string > string = repr(mma_arr) > # Convert mathematica-style {} to python style [] > string = string.replace('{','[').replace('}',']') > # Replace mathematica's crazy exponent notation with the standard > one > string = string.replace('*^', 'e') > # Delete new lines (both \n and \r\n appear sporadically) > string = string.replace('\n', ' ').replace('\r', ' ') > # Detect characters that should not be in an array > if re.findall(r'[a-df-zA-HJ-Z]+', string) != []: > raise TypeError, "Mathematica returns non-array: %s" % string > # Read the string into numpy, interpreting I as j > return eval(string, {'I': numpy.complex(0,1)}) > > You use it as such: > sage: b = mathematica([1.5,2.+3.j,3]) > sage: b > {1.5, 2. + 3.*I, 3} > sage: numpy.array(mma_to_numpy(b), dtype='D') > array([ 1.5+0.j, 2.0+3.j, 3.0+0.j]) > > Hope that this helps - there isn't much documentation on this stuff. > > Cheers, > Felix > > On Aug 13, 8:26 pm, Viny <hje...@hotmail.com> wrote: > > > On 13 août, 10:47, Viny <hje...@hotmail.com> wrote: > > > > Hi, > > > > I have a problem of memory into maxima when it performs a symbolic > > > expression of an hessian matrix. This symbolic expression of the > > > hessian seems to be too big. My sage program is written using python. > > > And i want to compute the hessian matrix with mathematica 6.0 in my > > > sage file. > > > I need to compute symbolic expresstion of the gradient and the hessian > > > with mathematica and after compute the mathématica LinearSolve > > > function to solve hessian^-1*grad. > > > How to make this interface in my .sage? > > > Please help me!!! > > > > I have mathematica 6.0 and sage4.0.2 in my linux 64bit system. > > > This is an example of the function to compute the gradient in > > my .sage, but it doesn't work. > > def grad(f,v): > > return mathematica ( f ).D( [ ' v ',1] ) > > The result is {0,0} . I have another problem of format, i don't know > > the command to change { } in () in the mathematica result {0,0} --~--~---------~--~----~------------~-------~--~----~ To post to this group, send email to sage-support@googlegroups.com To unsubscribe from this group, send email to sage-support-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-support URLs: http://www.sagemath.org -~----------~----~----~----~------~----~------~--~---