Sage wont allow me to add a title to a plot - runtime-error

I am going to put two sets of code in here the first one is the graph Im working on that has no problems. The second set of code is the same as the first except when I try to add a title to the graph I get
RuntimeError: Error in line(): option 'title' not valid.
First Set:
sage: p = plot(log(x),(x,0,10),color='green')
sage: p.axes_labels(['$x$ axis','$y$ axis'])
sage: p
Second Set:
sage: p = plot(log(x),(x,0,10),color='green',title='ln(x)')
sage: p.axes_labels(['$x$ axis','$y$ axis'])
sage: p
I have also tried p.title('ln(x)') it returned the same error.

This works fine for me (in particular, the second one works), as documented at the Graphics object documentation. p.title() is not supported, though
sage: p.show(title='newtitle')
will override the old title you chose.
Which doesn't help you at all... except that this functionality is relatively new. See the original ticket, which was merged only in Sage 5.3. My suspicion is that you are using an older version of Sage. Is that possibly the issue here? In that case, it should not be too difficult to either get a new binary or even to build Sage from source - please follow up if you have any trouble with this.

Related

Replicating a Julia example

I am trying to learn Julia and I read this article about the quick success of Julia. In the last page of the article the author works a small example showing the benefits of multiple dispatch. They define a custom class Spect and define a plot() function for it. Then for an object sqw of type Spect they can call plot(sqw) without having to edit the original plot function. Moreover, this definition also affects similar plotting functions so that you can also call scatter(sqw) without problems. My issue is that author does not show the code, so I do not understand how can you achieve this. I am specially interested in the fact that just defining plot() for this new class is enough to also call other functions like scatter() without defining them for the new class.
Can someone write a small example of this like that of the article so that I can understand how all of this is achieved? Thank you in advance.
Cross posting my answer from Discourse:
It’s a shame the article doesn’t link to the code. Here’s my rough reproduction attempt. My version uses the dct and idct so I’m not getting the nice harmonics, but I think it shows the ideas pretty well.
using RecipesBase, FFTW
struct Spect
points :: AbstractRange
weights :: Vector{Float64}
end
function Spect(f::Function, min, max, n)
points = range(min, max, n)
Spect(points, dct(f.(points)))
end
#recipe function f(S::Spect)
S.points, idct(S.weights)
end
These definitions are enough for
using Plots
squarewave(x) = iseven(floor(x)) ? 1.0 : 0.0
sqw = Spect(squarewave, 0, 5, 20);
plot(sqw)
scatter(sqw)
and

Controlling the 'levels' of differentiation in SageMath 9.1

Sage seems to want to evaluate derivatives as far as possible using the chain rule. A simple example is:
var('theta')
f = function('f')(theta)
g = function('g')(theta)
h = f*g
diff(h,theta)
which would display
g(theta)*diff(f(theta), theta) + f(theta)*diff(g(theta), theta)
My question is, is there a way to control just how far Sage will take derivatives? In the example above for instance, how would I get Sage to display instead:
diff(f(theta)*g(theta))
I'm working through some pretty intensive derivations in fluid mechanics, and being able to not evaluate derivatives all the way like discussed above would really help with this. Thanks in advance. Would appreciate any help on this.
This would be called "holding" the derivative.
Adding this possibility to Sage has already been considered.
Progress on this is tracked at:
Sage Trac ticket 24861
and the ticket even links to a branch with code implementing this.
Although progress on this is stalled, and the branch has not been merged,
you could use the code from the branch.

Euler's method sage math don't know where to sart

enter image description here
I don't know where to start with this program
It says "start with a list of points called ..." so you should probably say, as Python/Sage syntax with starting a list of ordered pairs:
pointlist = [ (2, 1.5) ]
Since this appears to be a homework/exam question, I think that's more than enough help. But you should note that it asks you to "write a loop", which hopefully you learned about and which is just normal Python loop syntax, and that you are asked to append points ... good luck. Just reading the instructions and following them step by step often helps a lot - so that should work here as well.

Wreath Product Of Groups In Sagemath

Can anyone help me with taking Wreath Products of Groups in Sagemath?
I haven't been able to find a online reference and it doesn't appear to be built in as far as I can tell.
As far as I know, you would have to use GAP to compute them within Sage (and then can manipulate them from within Sage as well). See e.g. this discussion from 2012. This question has information about it, here is the documentation, and here it is within Sage:
F = AbelianGroup(3,[2]*3)
G = PermutationGroup([[(1,2,3),(4,5)],[(3,4)]])
Gp = gap.StandardWreathProduct(gap(F),gap(G))
print Gp
However, if you try to get this back into Sage, you will get a NotImplementedError because Sage doesn't understand what GAP returns in this wacky case (which I hope even is legitimate). Presumably if a recognized group is returned then one could eventually get it back to Sage for further processing. In this case, you might be better off doing some GAP computations and then putting them back in Sage after doing all your group stuff (which isn't always the case).

Mathematica not evaluating any trigonometric integrals

When I input any integral, say sin[x] or ln[x], all I get back is the input. And from what I understand that usually means that mathematica can't evaluate the integral...What am i missing here?
I'm new to stackoverflow so I can't post screenshots.
Read the documentation:
Sin[x] manual
Log[x] manual
Note also that by default Log function is of base e, therefore it is your Ln.
In addition, if you have further questions mathematica/wolfram has it's own subsite where you should ask related questions https://mathematica.stackexchange.com/
As of version 9 you can query wolfram alpha directly and it can even try to interpret human language (and fix syntax mistakes like this). To query wolfram alpha start line with =.

Resources