ASKSAGE: Sage Q&A Forum - RSS feedhttps://ask.sagemath.org/questions/Q&A Forum for SageenCopyright Sage, 2010. Some rights reserved under creative commons license.Wed, 25 Jan 2023 00:02:46 +0100turn the simplex type into symbol typehttps://ask.sagemath.org/question/66072/turn-the-simplex-type-into-symbol-type/ I have a list of elements of type simplex. I need them as symbols. I wrote the following:
import sympy as sym
S = SimplicialComplex([[0,1], [1,2], [0,2]])
Chain = S._n_cells_sorted(1)
print(type(Chain[0]))
Chain2 = []
for i in Chain:
Chain2.append(str(i))
print(Chain2[0], type(Chain2[0]))
Chain3 = [sym.symbols(v) for v in Chain2]
print(Chain3[0],type(Chain3[0]))
The program prints:
(0, 1) <class 'sage.topology.simplicial_complex.Simplex'>
(0, 1) <class 'str'>
((0, 1)) <class 'tuple'>
I want to turn the type elements of the initial list `Chain` into symbols but this program turns them into tuples.
I would appreciate any help!InezWed, 25 Jan 2023 00:02:46 +0100https://ask.sagemath.org/question/66072/How do you pickle a symbol with a quotient in the subscript?https://ask.sagemath.org/question/63145/how-do-you-pickle-a-symbol-with-a-quotient-in-the-subscript/The latex_name attribute doesn't seem to pickle:
sage: logr = SR.symbol('logr', domain='complex', latex_name=r'L_{x/x_0}')
....: latex(logr)
L_{x/x_0}
sage: import pickle
....: path_name = '/home/mark/'
....: pickle_file_name = path_name + 'node.p'
....: pickle_write = open(pickle_file_name, 'wb')
....: pickle.dump(logr, pickle_write)
....: pickle_write.close()
[exit and restart Sage]
sage: import pickle
....: path_name = '/home/mark/'
....: pickle_file_name = path_name + 'node.p'
....: pickle_read = open(pickle_file_name, 'rb')
....: some_expr = pickle.load(pickle_read)
....: pickle_read.close()
....: latex(some_expr)
\mathit{logr}
Reading the pickle in the same session does produce the correct results, however.
So I tried this:
sage: x = SR.symbol('x')
....: x_0 = SR.symbol('x_0')
....: logr = SR.symbol('L_x/x_0')
....: logr_ex = logr == log(x/x_0)
....: latex(logr_ex)
....: latex(logr_ex.solve(x)[0])
L_{\mathit{x/x}_{0}} = \log\left(\frac{x}{x_{0}}\right)
x = x_{0} e^{\frac{L_{x}}{x_{0}}}
The above attempt at using a symbol with a fraction in the subscript works (see first latex() result) until after an operation like solve(), which scrambles the symbol (second latex() result).
Variations of logr = SR.symbol('L_{x/x}_0') with braces also work until an operation such as logr_ex.solve(x) with the code above, which crashes Maxima with the traceback excerpts:
---------------------------------------------------------------------------
RuntimeError Traceback (most recent call last)
/usr/lib/python3/dist-packages/sage/interfaces/interface.py in __init__(self, parent, value, is_name, name)
731 try:
--> 732 self._name = parent._create(value, name=name)
733 except (TypeError, RuntimeError, ValueError) as x:
...
RuntimeError: ECL says: THROW: The catch MACSYMA-QUIT is undefined.
During handling of the above exception, another exception occurred:---------------------------------------------------------------------------
RuntimeError Traceback (most recent call last)
/usr/lib/python3/dist-packages/sage/interfaces/interface.py in __init__(self, parent, value, is_name, name)
731 try:
--> 732 self._name = parent._create(value, name=name)
733 except (TypeError, RuntimeError, ValueError) as x:
...
/usr/lib/python3/dist-packages/sage/interfaces/interface.py in __init__(self, parent, value, is_name, name)
732 self._name = parent._create(value, name=name)
733 except (TypeError, RuntimeError, ValueError) as x:
--> 734 raise TypeError(x)
735
736 def _latex_(self):
TypeError: ECL says: THROW: The catch MACSYMA-QUIT is undefined.
Looks like a bug, but maybe I've overlooked the correct way to define such symbols.
latex function and operations with fraction subscriptsMarkkWed, 06 Jul 2022 06:50:52 +0200https://ask.sagemath.org/question/63145/