Sorry - at ease ... If I name the plot PP or something then put just 'PP' in a different cell from its definition, it shows up fine.
Thanks again for the help Kind regards Gary On Wed, Apr 17, 2013 at 10:39 AM, GaryMak <garymako...@googlemail.com>wrote: > Hi @ppurka - thank you very much as I would never have thought of that! - > that certainly fixes the crashing problem - but I now have an even more > bizarre problem, which is that plot3d does literally nothing! I have > re-booted everything but it makes no difference. Here is my code: > > s = 4 > a=1/s > b=1/s > c=1/s > d=i/s > theta, phi = var('theta,phi') > def f(theta,phi): return ( (a*exp(i*theta)-1)*d*exp(i*phi) - > (b*exp(i*phi)-1)*c*exp(i*theta) ) . abs() > plot3d(f,(theta,0,pi),(phi,0,pi)) > > I know that plot3d works in the same notebook() session say on examples > from the SAGE Reference manual, and the function f as you defined it also > works fine on individual (pairs of) angles ... does this code work on your > computer? > > Thanks again > > > > > On Wednesday, April 17, 2013 2:54:35 AM UTC+2, P Purkayastha wrote: >> >> On 04/16/2013 09:57 PM, GaryMak wrote: >> > Hi >> > >> > I am trying to use plot functions for the first time in sage - >> apologies >> > if this is a dumb question for a change. >> > >> > I have a square matrix M of fixed complex numbers which are then all >> > multiplied by a different phase depending on which column they are in. >> > (In the 2x2 example below M=[a,b;c,d] and column 1 is multiplied by >> > exp(i*theta) and column 2 is multiplied by exp(i*phi) ). I then take >> > another fixed matrix A away from M and take f=det(M-A).abs() as my >> > output. I have explicitly written this formula for A = [1,1;0,0] below. >> > So the function I would like to plot is f as a function of theta and >> phi >> > (in this case). >> > >> > a = 1/2 >> > b = - i/3 >> > c = 1/4 >> > d = i/5 >> > theta, phi = var('theta,phi') >> > f(theta,phi) = ( (a*exp(i*theta)-1)*d*exp(i***phi) - >> > (b*exp(i*phi)-1)*c*exp(i***theta) ) . abs() >> > plot3d(f, (theta,0,pi), (phi,0,pi)) >> > >> > No matter how I try to do this, even if I explicitly write out the >> > complex conjugates of each element, I get what for me is a >> record-length >> > screed of error stuff ending in 'TypeError: unable to coerce to a real >> > number', originating in the command 'plot3d(...etc...)'. I have >> attached >> > a text file with the full output of one of my attempts. >> > >> > I can see that in a way I am asking a lot of the interpreter; but then >> > again I feel I have explicitly made the thing real by the time it gets >> > to be an input for the plot3d function. >> > >> > Is there any way around this, or do I have to start writing complexes >> as >> > a+bi etc and do it the hard way? >> > >> > Many thanks >> > >> > Gary >> >> The problem is actually in the conversion of your function to a >> fast_float() version of the function. Apparently, it fails for symbolic >> "complex" functions (which are not really complex) even in this trivial >> example: >> >> f(theta, phi) = (theta + i * phi).abs() >> ff = fast_float(f, 'theta', 'phi') >> >> One trivial workaround is to define your function to be a python >> function. Somehow, it works. :) >> >> def f(theta,phi): return ( (a*exp(i*theta)-1)*d*exp(i***phi) - >> (b*exp(i*phi)-1)*c*exp(i***theta) ) . abs() >> >> plot3d(f, (theta, 0, pi), (phi, 0, phi)) >> >> >> -- > You received this message because you are subscribed to a topic in the > Google Groups "sage-support" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/sage-support/3mekDq5Stvk/unsubscribe?hl=en > . > To unsubscribe from this group and all its topics, send an email to > sage-support+unsubscr...@googlegroups.com. > To post to this group, send email to sage-support@googlegroups.com. > Visit this group at http://groups.google.com/group/sage-support?hl=en. > For more options, visit https://groups.google.com/groups/opt_out. > > > -- You received this message because you are subscribed to the Google Groups "sage-support" group. To unsubscribe from this group and stop receiving emails from it, send an email to sage-support+unsubscr...@googlegroups.com. To post to this group, send email to sage-support@googlegroups.com. Visit this group at http://groups.google.com/group/sage-support?hl=en. For more options, visit https://groups.google.com/groups/opt_out.