Yes, I think these issues are related, but note however that
plot(abs(exp(i*x)),x,-pi,pi)
is OK; whereas the corresponding contour_plot is not.
Le lundi 21 avril 2014 15:39:25 UTC+2, kcrisman a écrit :
>
> Hi: is http://trac.sagemath.org/ticket/13355 possibly related?
>
> Also, see the discussion at
> https://groups.google.com/forum/#!topic/sage-support/3mekDq5Stvk - if you
> use a Python function instead of a symbolic one, it might work even now.
> Good luck!
>
> - kcrisman
>
> On Sunday, April 20, 2014 9:05:12 AM UTC-4, Alberto Verga wrote:
>>
>> Same question:
>>
>> kx, ky = var('kx', 'ky', domain='real')
>> k = vector( [kx, ky] )
>>
>> d1 = vector( [0,1/sqrt(3)] )
>> d2 = vector( [-1/2,-1/(2*sqrt(3))] )
>> d3 = vector( [1/2,-1/(2*sqrt(3))] )
>>
>> hk(kx,ky) = -exp(I*k.dot_product(d1)) - exp(I*k.dot_product(d2)) -
>> exp(I*k.dot_product(d3))
>> ek(kx,ky) = sqrt((hk(kx,ky).real_part())**2 + (hk(kx,ky).imag_part())**2)
>> contour_plot(ek(kx,ky),(kx,-2*pi,2*pi),(ky,-2*pi,2*pi))
>>
>> works
>>
>> However, the "simpler"
>>
>> ek(kx,ky) = abs(hk(kx,ky))
>> contour_plot(ek(kx,ky),(kx,-2*pi,2*pi),(ky,-2*pi,2*pi))
>>
>> does not work.
>>
>> A simple example would be:
>> x, y = var('x', 'y', domain = 'real')
>> contour_plot( abs( exp(I*x) ), (x, -pi, pi), (y, -pi, pi) )
>>
>> giving the same error: "TypeError: unable to coerce to a real number"
>>
>> Alberto.
>>
>>
>>
>>
>> Le mardi 28 janvier 2014 19:26:35 UTC+1, Albert Schueller a écrit :
>>>
>>> This morning I figured out how to plot the modulus of a complex function
>>> in sage. In my travails I wondered why the first snippet works, but the
>>> second does not? Is there any easy way to make the second snippet work?
>>>
>>> #Plot the modulus of the function, works
>>> var('z',domain=CC)
>>> var('x y', domain=RR)
>>> var('rp ip')
>>> z=x+i*y
>>> rp = (2+z.conjugate()+z^3).real()
>>> ip = (2+z.conjugate()+z^3).imag()
>>> m(x,y) = sqrt(rp^2+ip^2)
>>> plot3d(m(x,y).simplify(),(x,-1.5,1.5),(y,-1.5,1.5))
>>>
>>>
>>>
>>>
>>> My question is, why doesn't this work?
>>>
>>> #Plot the modulus of the function, fails
>>> var('z',domain=CC)
>>> var('x y', domain=RR)
>>> z=x+i*y
>>> m(x,y) = abs(2+z.conjugate()+z^3)
>>> plot3d(m(x,y),(x,-1.5,1.5),(y,-1.5,1.5))
>>>
>>>
--
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 [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-support.
For more options, visit https://groups.google.com/d/optout.