2021-12-23 17:31:24 +0200 | received badge | ● Famous Question (source) |
2020-03-11 09:14:11 +0200 | received badge | ● Notable Question (source) |
2020-02-13 07:21:03 +0200 | received badge | ● Notable Question (source) |
2018-12-06 18:55:43 +0200 | received badge | ● Popular Question (source) |
2018-07-26 20:59:34 +0200 | received badge | ● Popular Question (source) |
2015-11-14 19:17:35 +0200 | received badge | ● Supporter (source) |
2015-11-07 22:29:11 +0200 | commented answer | How to push from the cloud to github? You can create a .term file from the interface brought up by the "+New" button on the top left, then choose the ">_terminal" button. This gives you a full interactive linux command line. |
2015-11-04 21:22:11 +0200 | answered a question | How to push from the cloud to github? Hi, I am experiencing the same error as you when I use the terminal window in the top right of the file browser. Based on this thread I think the issue has something to do with whether you are connecting to github via ssh or https. WORKAROUND:
The workaround is very simple: This worked for me, I hope it solves your problem |
2015-10-29 16:24:54 +0200 | received badge | ● Teacher (source) |
2015-10-29 07:32:52 +0200 | answered a question | symbolic and numeric double integration method I'm interpreting your question as: Is there a sage function which will give a symbolic solution to an integral if a closed form exists and a numeric solution otherwise. To my knowledge there is not though the following function may be what you are asking for: def sym_or_num_Integral(f,variables,lower_bound=[None],upper_bound=[None]): if isinstance(variables,list): if not isinstance(lower_bound,list): lower_bound=[lower_bound] while len(lower_bound)!=len(variables): if len(lower_bound)>len(variables): break lower_bound.append(None) if not isinstance(upper_bound,list): upper_bound=[upper_bound] while len(upper_bound) != len(variables): if len(lower_bound)>len(variables): break upper_bound.append(None) if len(variables)==1: return sym_or_num_Integral(f,variables[0],lower_bound[0],upper_bound[0]) inputs_inner=[variables[0],lower_bound[0],upper_bound[0]] inputs_outer=[variables[1:],lower_bound[1:],upper_bound[1:]] return sym_or_num_Integral(sym_or_num_Integral(f,*inputs_inner),*inputs_outer) result=integral(f,variables,lower_bound,upper_bound) if 'integrate' in str(result): return result.n() else: return result The method of checking if the solution is a closed form is quite hacky and I'd welcome and improvement too it. This function can do any number of integrals so long as you input the parameters as a list, i.e. variables=[x,y], lower_bound=[x_lower,y_lower]. Two examples: sage: var('x y') sage: sym_or_num_Integral(sin(x)*y,[x,y],[0,0],[2,2]) -2*cos(2) + 2 sage: sym_or_num_Integral(sin(x*y),[x,y],[0,0],[2,2]) 2.1044917239083536 You can have the integral be definite in any subset (must include first variable) of the variable and not the others: sage: sym_or_num_Integral(sin(x)*y,[x,y],[0,None],[2,None]) -1/2*y^2*(cos(2) - 1) Was this all you were looking for? |
2015-10-29 05:35:47 +0200 | commented question | symbolic and numeric double integration method Can you define what you mean by good? Do you mean one that won't return integrate(....)? It seems that sage will always return integrate(...) when there is no closed form solution. var('x,y') #No closed form sage: integral(integral(sin(x*y),x,0,2),y,0,2) integrate(-cos(2*y)/y + 1/y, y, 0, 2) #has closed form solution sage: integral(integral(sin(x)*y,x,0,2),y,0,2) -2*cos(2) + 2 If what you want is the closed form solution when that is avaliable and a numeric solution the following function should suffice: def sym_or_num_Integral(f,variable,lower_bound=None,upper_bound=None): result=integral(f,variable,lower_bound,upper_bound) if 'integrate' in str(result): return result.n() else: return result |
2015-10-29 04:34:28 +0200 | asked a question | derivative of order var('m') returns 0 Hello, #MATHMATICA CODE in[0] g = x^2 + 3/2*(x^2 - 1)*x f = D[g, {x, m}] out[0]= ∂(x,m)(3/2x(-1+x^2))+Power(m,0)[x,2] in[1] f /. {m -> 2} out[1]= 2+9x What I believe to be the equivalent code in sage will only give me 0 instead of an expression which I could then evaluate by setting m=2: #Sage example 1 sage: g = x^2 + 3/2*(x^2 - 1)*x sage: var('m') sage: diff(g,x,m) 0 I know it is possible to differentiate a variable number of times due to the following: #Sage example 2 sage: diff((x^2-1)^n,x,n) 2*(x^2 - 1)^(n - 1)*n*x*log(x^2 - 1) + 2*(x^2 - 1)^(n - 1)*x I think that example 2 works because I have x raised to the power n. Is it possible to accomplish the equivalent of what I did in mathematica in sage (i.e. have example 1 not return 0)? Alternatively if this is not possible what advice do you have for how I could work on making this functionality exist? Thanks in advance. |
2015-10-27 03:41:06 +0200 | received badge | ● Scholar (source) |
2015-10-27 03:41:01 +0200 | commented answer | Legendre_P in symbolic function - recursion error This works thanks! I wonder if you have any insights into what went wrong with my initial method and how it is that your edit fixes this? Thank you again for your time and effort very much appreciated. |
2015-10-27 02:49:06 +0200 | commented answer | Legendre_P in symbolic function - recursion error Thank you so much for your answer and time it's introduced me to some aspect of sage I was unaware of. Sorry for poorly phrasing the question however I think I can clarify. I would like print(f) to give me an answer fully expanded, not in terms of my_legendre(). A simpler example would be: sage: var('y_max') sage: Y_fnc(x,y_max,l,m)=y_max*cos(x)^3 sage: f(x,y_max,l,m)=Y_fnc(x,y_max,l,m) * cos(x)^4 -2*sqrt(Y_fnc(x,y_max,l,m))*sin(x)*cos(x)^3 sage: print(f) (x, y_max, l, m) |--> y_max*cos(x)^7 -2*sqrt(y_max*cos(x)^3)*cos(x)^3*sin(x) sage: plot(f(x,y_max)) Which will print the expanded output as above an plot with the only errors being imaginary parts. This is for Neutron scattering analysis btw. |
2015-10-27 02:30:04 +0200 | received badge | ● Student (source) |
2015-10-27 02:29:58 +0200 | received badge | ● Editor (source) |
2015-10-26 21:11:06 +0200 | asked a question | Legendre_P in symbolic function - recursion error Hello, I have the equation
Which results in:
[...]
File "/home/ian/sage-6.8-x86_64-Linux/local/lib/python2.7/site-packages/sage/symbolic/expression_conversions.py", line 319, in symbol raise NotImplementedError("symbol")
RuntimeError: maximum recursion depth exceeded while calling a Python object
With example line of the truncated output being:
I have also tried to use maxima.assoc_legendre_P but this doesn't work when I try to plot:
Y_fnc(x,y_max,l,m)=y_max*maxima.assoc_legendre_P(l,m,cos(x)) f(x,y_max,l,m)=Y_fnc(x,y_max,l,m) * cos(x)^4 -2*sqrt(Y_fnc(x,y_max,l,m))*sin(x)*cos(x)^3 plot(f(x,1,2,0),0,2*pi)
I can accomplish plotting by defining Python Functions: def Y_fnc_py(x,l,m,y_max): return y_max*gen_legendre_P(l,m,cos(x)) def f(x,y_max,l,m): return Y_fnc_py(x,y_max,l,m) * cos(x)^4 -2*sqrt(Y_fnc_py(x,y_max,l,m))*sin(x)*cos(x)^3 plot(f(x,y_max=2,l=1,m=1),0,2*pi) Works however this will not allow me print f(x,y_max,l=3,m=2) so I can easily write down the equation. So this allows me to plot easily but doesn't display the equation well Help much appreciated thank you |