Ask Your Question

omoplata's profile - activity

2020-05-02 09:08:12 +0200 received badge  Notable Question (source)
2020-04-02 23:24:30 +0200 received badge  Famous Question (source)
2019-07-17 13:19:01 +0200 received badge  Notable Question (source)
2019-07-17 13:19:01 +0200 received badge  Popular Question (source)
2019-05-13 21:50:45 +0200 received badge  Notable Question (source)
2019-05-13 21:50:45 +0200 received badge  Popular Question (source)
2019-05-13 21:50:45 +0200 received badge  Famous Question (source)
2019-03-18 09:43:49 +0200 received badge  Popular Question (source)
2018-02-27 11:04:55 +0200 received badge  Notable Question (source)
2017-01-05 02:28:10 +0200 received badge  Nice Answer (source)
2017-01-04 03:05:25 +0200 asked a question Any way to solve these simultaneous equations using Sage?

Input is as following

   1: var('E_0,E,gamma,c,v,m,m_0')
(E_0, E, gamma, c, v, m, m_0)
   2: eq1 = gamma == 1/sqrt(1-v^2/c^2)
   3: eq2 = m == gamma*m_0
   4: eq3 = E == m*c^2
   5: eq4 = E_0 == m_0*c^2
   6: solve([eq1,eq2,eq3,eq4],v,m,m_0,gamma)

The expected solution for v is v = c * sqrt(1-E_0^2/E^2).

I get the following error message. I tried assuming all the variables to be positive and real, but get the same error message.

RuntimeError                              Traceback (most recent call last)
<ipython-input-6-c0343319abfc> in <module>()
----> 1 solve([eq1,eq2,eq3,eq4],v,m,m_0,gamma)

/home/sage/sage-7.4/local/lib/python2.7/site-packages/sage/symbolic/relation.pyc in solve(f, *args, **kwds)
    863             s = []
--> 865     sol_list = string_to_list_of_solutions(repr(s))
    867     # Relaxed form suggested by Mike Hansen (#8553):

/home/sage/sage-7.4/local/lib/python2.7/site-packages/sage/symbolic/relation.pyc in string_to_list_of_solutions(s)
    538     from sage.structure.sequence import Sequence
    539     from sage.calculus.calculus import symbolic_expression_from_maxima_string
--> 540     v = symbolic_expression_from_maxima_string(s, equals_sub=True)
    541     return Sequence(v, universe=Objects(), cr_str=True)

/home/sage/sage-7.4/local/lib/python2.7/site-packages/sage/calculus/calculus.pyc in symbolic_expression_from_maxima_string(x, equals_sub, maxima)
   1798     if len(x) == 0:
   1799         raise RuntimeError("invalid symbolic expression -- ''")
-> 1800     maxima.set('_tmp_',x)
   1802     # This is inefficient since it so rarely is needed:

/home/sage/sage-7.4/local/lib/python2.7/site-packages/sage/interfaces/maxima_lib.pyc in set(self, var, value)
    504             raise TypeError
    505         cmd = '%s : %s$'%(var, value.rstrip(';'))
--> 506         self.eval(cmd)
    508     def clear(self, var):

/home/sage/sage-7.4/local/lib/python2.7/site-packages/sage/interfaces/maxima_lib.pyc in _eval_line(self, line, locals, reformat, **kwds)
    450                 line = line[ind_dollar+1:]
    451                 if statement:
--> 452                     maxima_eval("#$%s$" % statement)
    453         if not reformat:
    454             return result

/home/sage/sage-7.4/src/sage/libs/ecl.pyx in sage.libs.ecl.EclObject.__call__ (/home/sage/sage/src/build/cythonized/sage/libs/ecl.c:7698)()
    794         """
--> 795         lispargs = EclObject(list(args))
    796         return ecl_wrap(ecl_safe_apply(self.obj,(<EclObject>lispargs).obj))

/home/sage/sage-7.4/src/sage/libs/ecl.pyx in sage.libs.ecl.EclObject.__init__ (/home/sage/sage/src/build/cythonized/sage/libs/ecl.c:7221)()
    658         """
    659         if len(args) != 0:
--> 660             self.set_obj(python_to_ecl(args[0]))
    662     def __reduce__(self):

/home/sage/sage-7.4/src/sage/libs/ecl.pyx in sage.libs.ecl.python_to_ecl (/home/sage/sage/src/build/cythonized/sage/libs/ecl.c:6254)()
    473             return Cnil
    474         else:
--> 475             L=cl_cons(python_to_ecl(pyobj[0]),Cnil)
    476             ptr=L
    477             for a in pyobj[1:]:

/home/sage/sage-7.4/src/sage/libs/ecl.pyx in sage.libs.ecl.python_to_ecl (/home/sage/sage/src/build/cythonized/sage/libs/ecl.c:5990)()
    457     elif isinstance(pyobj,bytes):
    458         s=<bytes>pyobj
--> 459         return ecl_safe_read_string(s)
    460     elif isinstance(pyobj,Integer):
    461         if pyobj >= MOST_NEGATIVE_FIXNUM and pyobj <= MOST_POSITIVE_FIXNUM:

/home/sage/sage-7.4/src/sage/libs/ecl.pyx in sage.libs.ecl.ecl_safe_read_string (/home/sage/sage/src/build/cythonized/sage/libs/ecl.c:5409)()
    374     cdef cl_object o
    375     o = ecl_cstring_to_base_string_or_nil(s)
--> 376     o = ecl_safe_funcall(read_from_string_clobj,o)
    377     return o

/home/sage/sage-7.4/src/sage/libs/ecl.pyx in sage.libs.ecl.ecl_safe_funcall (/home/sage/sage/src/build/cythonized/sage/libs/ecl.c:5208)()
    355     if ecl_nvalues > 1:
    356         s = si_coerce_to_base_string(ecl_values(1))
--> 357         raise RuntimeError("ECL says: "+ecl_base_string_pointer_safe(s))
    358     else:
    359         return ecl_values(0)

RuntimeError: ECL says: THROW: The catch MACSYMA-QUIT is undefined.
2017-01-01 21:41:12 +0200 received badge  Self-Learner (source)
2017-01-01 21:41:12 +0200 received badge  Teacher (source)
2017-01-01 18:26:22 +0200 answered a question How to copy code from Jupyter notebook

OK, I found out that this can be done using the %history magic function. For example,

%history -n -o 12-17

prints the inputs 12 to 17 with output, and I can copy from that. But the error messages don't get printed.

2016-12-30 19:21:35 +0200 received badge  Nice Question (source)
2016-12-29 20:52:50 +0200 asked a question How to copy code from Jupyter notebook

How do I copy code from a Jupyter notebook to paste it here? I cannot figure out a way to do it.

In the old sage notebook format you can get a text version of your code input output by clicking a 'text' button that is to the right of the 'worksheet' button. I find that very convenient when posting questions here.

But since Sage seems to be moving to the Jupyter notebook format from the old notebook format, I figured I better get used to the Jupyter notebook.

I'm running Sage in Virtualbox in Windows.

Thank you.

2016-12-29 20:22:46 +0200 answered a question Sage 7.3 jupyter notebook not showing on VM

Right Ctrl F7 works for me.

2016-12-29 20:15:36 +0200 asked a question Any way to solve this differential equation?
sage: x(t)=function('x')(t)
sage: x
t |--> x(t)
sage: g(v,c)=1/sqrt(1-v^2/c^2)
sage: g
(v, c) |--> 1/sqrt(-v^2/c^2 + 1)
sage: var('a')
sage: ode = g(diff(x,t))*diff(x,t) == a*t
sage: ode
t |--> diff(x(t), t)/sqrt(-diff(x(t), t)^2/c^2 + 1) == a*t
sage: desolve(ode,x)
Traceback (most recent call last):
ValueError: Unable to determine independent variable, please specify.
sage: desolve(ode,[x,t])
Traceback (most recent call last):
NotImplementedError: Maxima was unable to solve this ODE. Consider to set option contrib_ode to True.
sage: desolve(ode,[x,t],contrib_ode=True)
Traceback (most recent call last):
NotImplementedError: Maxima was unable to solve this ODE.

I can solve it by hand.

Mathematica can solve it. But I would very much prefer to learn to use Sage because it's open source.

It looks like it is Maxima that cannot solve it. But is it possible to make Sage invoke any other open source program than Maxima? Or use some trick in defining the problem that would allow Maxima to solve it?

Thank you.

2016-12-29 04:14:59 +0200 commented answer How to open jupyter in virtualbox from shared folder?

Thank you. This helped me.

2016-12-28 20:39:07 +0200 commented answer Variable overrites function defined previously

Thanks for clarifying.

But I wasn't TRYING to make a function and variable with the same name. My point is that a beginning user who is unfamiliar with Sage could easily overwrite the function he previously defined with a variable. If this possible cause for error was covered, this is one subtlety that one does not have keep in mind while learning Sage.

2016-12-28 00:00:46 +0200 received badge  Editor (source)
2016-12-27 23:58:06 +0200 asked a question Variable overrites function defined previously

I have u(t) which is an function of t, and g(u) which is a function of u. I want to find the derivative of g(u)*u(t) w.r.t. t.

sage: u(t) = function('u')(t)
sage: h(u) = function('h')(u)
sage: u
sage: h
u |--> h(u)

This seems to happen because the function u is overwritten when I use u to define the function h. I can get around it this way.

sage: u(t) = function('u')(t)
sage: h(x) = function('h')(x)
sage: u
t |--> u(t)
sage: h
x |--> h(x)
sage: diff(h(u)*u(t),t)
u(t)*D[0](h)(u(t))*D[0](u)(t) + h(u(t))*D[0](u)(t)

Can this be classified as a bug? If it is, would it be possible to fix it?

Thanks in advance.

2016-12-27 20:24:49 +0200 commented answer Why use symbolic functions?

Thanks. I noted also noted that I can declare the variables I need inside the parentheses on the left hand side. For example, I can define,

sage:  x(b,c,t) = sqrt(b^2 + c^2*t^2) - b

without declaring b,c and t to be variables beforehand. But it appears that sage defines these variables in the background while defining the function x(t). So, afterwards, I can input


and not get an error, because it appears to have been defined in the background. But inputting a hitherto unused value, such as y, will give an error. Also, if I did not put b and c within parentheses on the left hand side without declaring them beforehand, that would also be an error.

2016-12-25 01:05:00 +0200 received badge  Nice Question (source)
2016-12-24 20:44:49 +0200 asked a question Why use symbolic functions?

So, I can do the following by introducing x as a symbolic function.

sage: var('b,c,t')
(b, c, t)
sage: x(t) = sqrt(b^2 + c^2*t^2) - b
sage: x
t |--> -b + sqrt(c^2*t^2 + b^2)
sage: diff(x,t)
t |--> c^2*t/sqrt(c^2*t^2 + b^2)

I can introduce x as a variable with assigned symbolic values, and get the same result.

sage: var('b,c,t')
(b, c, t)
sage: x = sqrt(b^2 + c^2*t^2) - b
sage: x
-b + sqrt(c^2*t^2 + b^2)
sage: diff(x,t)
c^2*t/sqrt(c^2*t^2 + b^2)

So, since I can do the same thing using variables, why use symbolic functions at all? Can symbolic functions do things that variables can't do?

Thanks in advance.

2016-12-24 20:22:26 +0200 received badge  Notable Question (source)
2016-09-19 22:57:21 +0200 received badge  Good Question (source)
2016-07-26 15:00:27 +0200 received badge  Nice Question (source)
2015-04-28 00:41:23 +0200 received badge  Popular Question (source)
2015-03-27 04:10:24 +0200 marked best answer How to do latex typesetting in asksage

I've seen questions here with typeset expressions. But I can't find out how to do it. I searched for the strings "latex", "markdown", "mathjax", "typesetting" but can't find what I want.

Thanks in advance.

2014-12-10 23:19:36 +0200 received badge  Famous Question (source)
2014-06-29 03:14:54 +0200 marked best answer How can I clear an assignment to a variable?

If I assign a symbolic expression to a variable, how do I clear the assignment as if I didn't assign anything to it in the first place?

For example,

sage: var('a,b')
(a, b)
sage: x=a+b
sage: x
a + b
sage: var(x)
a + b
sage: x
a + b
sage: x=x
sage: x
a + b

Here, I assigned a+b to x. But I can't 'unassign' it.

In Mathematica this can be done with Clear[x].


2014-06-29 03:14:54 +0200 marked best answer Difference between var('x') and x=var('x')?

In some tutorials, when a variable is declared, it is done like,


In some others, it is done like,

x = var('x')

What is the difference between the two, if any?

Also, is it better to ask this kind of basic question in the Asksage forum or the sage-support mailing list?

Thanks for your patience.

2014-06-29 03:14:54 +0200 marked best answer bool gives another unexpected result

Here is the output

sage: var('c,u,v',domain=RR);assume(v>0,u>0,c>u,c>v);
(c, u, v)
sage: assumptions()
[v > 0, u > 0, c > u, c > v]
sage: bool(c^2 - u*v >= 0)
sage: bool(c^2 - u^2 >= 0)
sage: bool(c^2 - v^2 >= 0)

I don't see how c^2 - v*u can not be larger than or equal to zero. Why does this happen? Is there a workaround?

2014-06-29 03:14:54 +0200 marked best answer Why no help for print?

I wanted to find what the function print does, so I typed


and pressed tab.

I get "No object 'print' currently defined.

Why is that?

2014-06-29 03:14:46 +0200 marked best answer How to get more uniform output from full_simplify

I do this,

sage: var('x1,t1,x2,t2,u,c',domain=RR);assume(u>0);assume(c>0);assume(c>u);
(x1, t1, x2, t2, u, c)
sage: T1 = (t1-((u*x1)/(c^2)))/sqrt(1-((u^2)/(c^2)))
sage: T2 = (t2-((u*x2)/(c^2)))/sqrt(1-((u^2)/(c^2)))
sage: dT = T2-T1
sage: view(dT.full_simplify())

And I get,

$\newcommand{\Bold}[1]{\mathbf{#1}}-\frac{\sqrt{c - u} \sqrt{c + u} {\left(c^{2} t_{1} - c^{2} t_{2} - u x_{1} + u x_{2}\right)}}{c^{3} - c u^{2}}$

I put this expression in which is supposed to be the same,

sage: s = ((t2-t1)-((u/(c^2))*(x2-x1)))/sqrt(1-((u^2)/(c^2)))
sage: view(s.full_simplify())

And get this,

$\newcommand{\Bold}[1]{\mathbf{#1}}-\frac{c^{2} t_{1} - c^{2} t_{2} - u x_{1} + u x_{2}}{\sqrt{c - u} \sqrt{c + u} c}$

It is not immediately apparent to me that dT and s are the same. But they are both equal as can be seen by,

sage: (s-dT).full_simplify()

This is something minor, but is there something I can do to get a simplified expression which is more uniform every time I use full_simplify()?