2023-02-01 14:45:51 +0200 | received badge | ● Popular Question
(source)
|
2023-02-01 14:45:51 +0200 | received badge | ● Notable Question
(source)
|
2022-09-14 22:11:42 +0200 | received badge | ● Nice Question
(source)
|
2022-09-14 22:11:38 +0200 | marked best answer | AttributeError: 'int' object has no attribute 'inverse_mod' Hi i'm a beginner with Sage, and i have some trouble with types.
It looks like the cause of my pain is trying to use numpy together with Sagemath, is it possible to use Sagemath without numpy? Here is a small example of an error that i encounter, when trying to do simple modular calculations in GF(7). I use the following code: import numpy as np
a=[2,4,6,1,3,5]
b=[1,1,1,1,1,1]
p=7
n=len(a)
L=1
c=np.zeros(n,'int')
Li_ai=np.zeros(n)
for i in range(n):
L=(x-a[i])*L
for i in range(n):
Li=L/(x-a[i])
t=(Li(x=a[i])%p)
Li_ai[i]=t
Li_ai=Li_ai.astype('int')
tmp=Li_ai.prod()%p
Li_ai=vector(Li_ai)
for i in range(n):
c[i]=tmp * (Li_ai[i]) * b[i].inverse_mod(p) %p
c=vector(c)
c
y=np.int(tmp)
y.inverse_mod(p)
and I get the following error: Traceback (most recent call last)
...
AttributeError: 'int' object has no attribute 'inverse_mod'
|
2022-05-18 12:43:08 +0200 | received badge | ● Famous Question
(source)
|
2021-04-30 06:24:19 +0200 | received badge | ● Famous Question
(source)
|
2021-03-14 12:13:49 +0200 | received badge | ● Notable Question
(source)
|
2021-01-19 01:08:14 +0200 | received badge | ● Famous Question
(source)
|
2020-08-24 23:01:56 +0200 | marked best answer | Factoring a polynomial over a finite Field Hello I'm following a 101 algebra course, and for example, I would like to factor a polynomial on a finite field like F_9
(F_9 == ZZ/9ZZ is a field because 9 is a power of a prime number, 3) R = PolynomialRing(GF(9),'x')
x = R.gen()
f = x^4+x^2-1
f in R
f.factor()
i get an error message Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "_sage_input_68.py", line 10, in <module>
exec compile(u'open("___code___.py","w").write("# -*- coding: utf-8 -*-\\n" + _support_.preparse_worksheet_cell(base64.b64decode("UiA9IFBvbHlub21pYWxSaW5nKEdGKDkpLCd4JykKeCA9IFIuZ2VuKCkKZiA9IHheNCt4XjItMQpmIGluIFI="),globals())+"\\n"); execfile(os.path.abspath("___code___.py"))
File "", line 1, in <module>
File "/tmp/tmpYgKq_W/___code___.py", line 3, in <module>
R = PolynomialRing(GF(_sage_const_9 ),'x')
File "factory.pyx", line 364, in sage.structure.factory.UniqueFactory.__call__ (build/cythonized/sage/structure/factory.c:1244)
File "/home/sage/sage-6.3/local/lib/python2.7/site-packages/sage/rings/finite_rings/constructor.py", line 414, in create_key_and_extra_args
raise ValueError("parameter 'conway' is required if no name given")
ValueError: parameter 'conway' is required if no name given
i'm running sage 6.3 notebook on windows through Oracle VM winbox.
I'm a totally new user, and i've looked at the tutorial and the forum but
couldn't find any example or reason why this would not work.
thank you for your help. |
2020-08-24 23:01:53 +0200 | received badge | ● Nice Question
(source)
|
2020-06-26 05:00:00 +0200 | asked a question | SageMath: defining class of functions on Elliptic Curves In SageMath, I would like to manipulate rational functions on elliptic curves
(defined on finite fields).
For example, for $P = (x,y)$ on some curve $E$ $$f = x+y-12$$
$$g = \frac{x+y-3}{(x-3)^2} $$ etc. Is there a natural class? I am looking to make a toy example with pairings, so I need
to define stuff like $$P \rightarrow f_P$$ where
$$f_P:Q \rightarrow f_P(Q)$$ is a function I can't see how to do that, and I'm able to make computations if I define def f (P,Q):
....
but I can only compute the values taken by the function $f_P$,
I cannot "see" the function $f_P$. Basically I'm trying as an
exercise to re-write the following Magma code to SageMath: http://www.craigcostello.com.au/pairi... EDIT My question hasn't attracted much interest so let me give a more concrete example. Define the following: # Code related to the example in Costello
q = 47
F = GF(q)
R.<x> = F[]
F4.<u> = F.extension(x^4 - 4*x^2 + 5)
a = 21
b = 15
E = EllipticCurve(F4, [a, b])
r = 17
k = 4
(q^4 - 1) % r # r = 17 divides q^4 - 1 = 47^4 - 1
P = E([45, 23])
P.order()
h = E.cardinality() / r^2
O = E(0)
Q = E([5*u^3 + 37*u + 13, 7*u^3 + 45*u^2 + 10*u + 7])
def fADD_(P, Q, x, y):
lamda = (Q[1] - P[1]) / (Q[0] - P[0])
c = P[1] - lamda * P[0]
l = (y - (lamda * x + c))
v = (x - (lamda^2 - P[0] - P[1]))
return l / v
I would have hoped for fADD_(P, Q, x, y) to return a rational function in x , y . Instead it raises the following error: ---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
/Applications/SageMath-9.1.app/Contents/Resources/sage/local/lib/python3.7/site-packages/sage/structure/coerce.pyx
in sage.structure.coerce.CoercionModel.bin_op
(build/cythonized/sage/structure/coerce.c:9946)() 1195 try:
-> 1196 action = self._action_maps.get(xp, yp, op) 1197 except KeyError:
/Applications/SageMath-9.1.app/Contents/Resources/sage/local/lib/python3.7/site-packages/sage/structure/coerce_dict.pyx
in sage.structure.coerce_dict.TripleDict.get
(build/cythonized/sage/structure/coerce_dict.c:7917)() 1327
if not valid(cursor.key_id1):
-> 1328 raise KeyError((k1, k2, k3)) 1329 value = <object>cursor.value
KeyError: (Finite Field in u of size 47^4, Symbolic Ring, <built-in
function mul>)
During handling of the above exception, another exception occurred:
TypeError Traceback (most recent call
last) <ipython-input-54-7441affd269c> in <module>()
----> 1 fADD_(P,Q,x,y)
<ipython-input-48-20f93738e654> in fADD_(P, Q, x, y)
2 lamb_da=(Q[Integer(1)]-P[Integer(1)])/(Q[Integer(0)]-P[Integer(0)])
3 c =P[Integer(1)]-lamb_da*P[Integer(0)]
----> 4 l =(y-(lamb_da*x+c))
5 v =(x-(lamb_da**Integer(2)-P[Integer(0)]-P[Integer(1)]))
6 return (l/v)
/Applications/SageMath-9.1.app/Contents/Resources/sage/local/lib/python3.7/site-packages/sage/structure/element.pyx
in sage.structure.element.Element.__mul__
(build/cythonized/sage/structure/element.c:12034)() 1515
return (<Element>left)._mul_(right) 1516 if
BOTH_ARE_ELEMENT(cl):
-> 1517 return coercion_model.bin_op(left, right, mul) 1518 1519 cdef long value
/Applications/SageMath-9.1.app/Contents/Resources/sage/local/lib/python3.7/site-packages/sage/structure/coerce.pyx
in sage.structure.coerce.CoercionModel.bin_op
(build/cythonized/sage/structure/coerce.c:9996)() 1196
action = self._action_maps.get(xp, yp, op) 1197 except
KeyError:
-> 1198 action = self.get_action(xp, yp, op, x, y) 1199 if action is not None: 1200 if
(<Action>action)._is_left:
/Applications/SageMath-9.1.app/Contents/Resources/sage/local/lib/python3.7/site-packages/sage/structure/coerce.pyx
in sage.structure.coerce.CoercionModel.get_action
(build/cythonized/sage/structure/coerce.c:16783)() 1725
except KeyError: 1726 pass
-> 1727 action = self.discover_action(R, S, op, r, s) 1728 action = self.verify_action(action, R, S, op) 1729
self._action_maps.set(R, S, op, action)
/Applications/SageMath-9.1.app/Contents/Resources/sage/local/lib/python3.7/site-packages/sage/structure/coerce.pyx
in sage.structure.coerce.CoercionModel.discover_action
(build/cythonized/sage/structure/coerce.c:18201)() 1856 """
1857 if isinstance(R, Parent):
-> 1858 action = (<Parent>R).get_action(S, op, True, r, s) 1859 if action is not None: 1860 return
action
/Applications/SageMath-9.1.app/Contents/Resources/sage/local/lib/python3.7/site-packages/sage/structure/parent.pyx
in sage.structure.parent.Parent.get_action
(build/cythonized/sage/structure/parent.c:19901)() 2475
action = self._get_action_(S, op, self_on_left) 2476 if
action is None:
-> 2477 action = self.discover_action(S, op, self_on_left, self_el, S_el) 2478 2479 if action is not None:
/Applications/SageMath-9.1.app/Contents/Resources/sage/local/lib/python3.7/site-packages/sage/structure/parent.pyx
in sage.structure.parent.Parent.discover_action
(build/cythonized/sage/structure/parent.c:20878)() 2554
# detect actions defined by _rmul_, _lmul_, _act_on_, and _acted_upon_ methods 2555 from .coerce_actions import
detect_element_action
-> 2556 action = detect_element_action(self, S, self_on_left, self_el, S_el) 2557 if action is not
None: 2558 return action
/Applications/SageMath-9.1.app/Contents/Resources/sage/local/lib/python3.7/site-packages/sage/structure/coerce_actions.pyx
in sage.structure.coerce_actions.detect_element_action
(build/cythonized/sage/structure/coerce_actions.c:5026)()
215 if isinstance(x, ModuleElement) and isinstance(y, Element):
216 try:
--> 217 return (RightModuleAction if X_on_left else LeftModuleAction)(Y, X, y, x)
218 except CoercionException as msg:
219 _record_exception()
/Applications/SageMath-9.1.app/Contents/Resources/sage/local/lib/python3.7/site-packages/sage/structure/coerce_actions.pyx
in sage.structure.coerce_actions.ModuleAction.__init__
(build/cythonized/sage/structure/coerce_actions.c:6778)()
361 if not isinstance(g, Element) or not isinstance(a, ModuleElement):
362 raise CoercionException("not an Element acting on a ModuleElement")
--> 363 res = self.act(g, a)
364 if parent(res) is not the_set:
365 # In particular we will raise an error if res is None
/Applications/SageMath-9.1.app/Contents/Resources/sage/local/lib/python3.7/site-packages/sage/categories/action.pyx
in sage.categories.action.Action.act
(build/cythonized/sage/categories/action.c:4115)()
213 5*x
214 """
--> 215 return self._act_convert(g, x)
216
217 def __invert__(self):
/Applications/SageMath-9.1.app/Contents/Resources/sage/local/lib/python3.7/site-packages/sage/categories/action.pyx
in sage.categories.action.Action._act_convert
(build/cythonized/sage/categories/action.c:3759)()
169 if parent(x) is not U:
170 x = U(x)
--> 171 return self._act_(g, x)
172
173 cpdef _act_(self, g, x):
/Applications/SageMath-9.1.app/Contents/Resources/sage/local/lib/python3.7/site-packages/sage/structure/coerce_actions.pyx
in sage.structure.coerce_actions.RightModuleAction._act_
(build/cythonized/sage/structure/coerce_actions.c:8600)()
629 g = <Element?>self.connecting._call_(g)
630 if self.extended_base is not None:
--> 631 a = <ModuleElement?>self.extended_base(a)
632 return (<ModuleElement>a)._lmul_(<Element>g) # a * g
633
/Applications/SageMath-9.1.app/Contents/Resources/sage/local/lib/python3.7/site-packages/sage/structure/parent.pyx
in sage.structure.parent.Parent.__call__
(build/cythonized/sage/structure/parent.c:9218)()
898 if mor is not None:
899 if no_extra_args:
--> 900 return mor._call_(x)
901 else:
902 return mor._call_with_args(x, args, kwds)
/Applications/SageMath-9.1.app/Contents/Resources/sage/local/lib/python3.7/site-packages/sage/structure/coerce_maps.pyx
in sage.structure.coerce_maps.DefaultConvertMap_unique._call_
(build/cythonized/sage/structure/coerce_maps.c:4556)()
159 print(type(C), C)
160 print(type(C._element_constructor), C._element_constructor)
--> 161 raise
162
163 cpdef Element _call_with_args(self, x, args=(), kwds={}):
/Applications/SageMath-9.1.app/Contents/Resources/sage/local/lib/python3.7/site-packages/sage/structure/coerce_maps.pyx
in sage.structure.coerce_maps.DefaultConvertMap_unique._call_
(build/cythonized/sage/structure/coerce_maps.c:4448)()
154 cdef Parent C = self._codomain
155 try:
--> 156 return C._element_constructor(x)
157 except Exception:
158 if print_warnings:
/Applications/SageMath-9.1.app/Contents/Resources/sage/local/lib/python3.7/site-packages/sage/symbolic/ring.pyx
in sage.symbolic.ring.SymbolicRing._element_constructor_
(build/cythonized/sage/symbolic/ring.cpp:6648)()
377 elif isinstance(x, (RingElement, Matrix)):
378 if x.parent().characteristic():
--> 379 raise TypeError('positive characteristic not allowed in symbolic computations')
380 exp = x
381 elif isinstance(x, Factorization):
TypeError: positive characteristic not allowed in symbolic
computations
|
2020-06-05 03:55:14 +0200 | received badge | ● Notable Question
(source)
|
2020-05-26 10:58:23 +0200 | received badge | ● Notable Question
(source)
|
2020-04-28 18:40:58 +0200 | received badge | ● Famous Question
(source)
|
2020-04-22 08:09:18 +0200 | received badge | ● Notable Question
(source)
|
2020-02-07 09:26:41 +0200 | received badge | ● Popular Question
(source)
|
2020-01-14 19:04:27 +0200 | received badge | ● Notable Question
(source)
|
2019-12-17 00:17:31 +0200 | received badge | ● Popular Question
(source)
|
2019-08-29 14:45:25 +0200 | received badge | ● Famous Question
(source)
|
2019-08-12 04:40:59 +0200 | received badge | ● Notable Question
(source)
|
2019-06-26 20:37:21 +0200 | received badge | ● Famous Question
(source)
|
2019-04-14 18:47:21 +0200 | received badge | ● Popular Question
(source)
|
2019-04-03 20:30:43 +0200 | received badge | ● Popular Question
(source)
|
2019-01-08 08:43:56 +0200 | received badge | ● Famous Question
(source)
|
2018-08-29 12:59:47 +0200 | received badge | ● Popular Question
(source)
|
2018-05-19 01:36:34 +0200 | received badge | ● Notable Question
(source)
|
2018-04-04 12:18:14 +0200 | received badge | ● Popular Question
(source)
|
2018-04-04 12:18:14 +0200 | received badge | ● Notable Question
(source)
|
2018-02-27 19:49:14 +0200 | received badge | ● Notable Question
(source)
|
2018-02-27 19:49:14 +0200 | received badge | ● Popular Question
(source)
|
2018-02-16 10:55:53 +0200 | received badge | ● Popular Question
(source)
|
2018-02-12 18:11:09 +0200 | received badge | ● Notable Question
(source)
|
2017-08-02 17:25:06 +0200 | marked best answer | using GAP: Group Theory I'm trying this code base on the book "Adventures in Group Theory" from D.Joyner MS=MatrixSpace(GF(2),3,3)
A=MS([0,1,0,1,0,0,0,0,1])
B=MS([1,0,0,0,0,1,0,1,0])
G=MatrixGroup([A,B]) G1=SymmetricGroup(3)
imG=G._gap_().IsomorphismPermGroup().Image(G._gap_())
imG
Sym( [ 2 .. 4 ] ) gens=imG.GeneratorsOfGroup()
gens
[ (3,4), (2,3) ] G2=PermutationGroup([(3,4),(2,3)])
G2.is_isomorphic(G1)
True However, there seems to be a signature problem the following commands don't work:
(the first one was from the book, I tried myself the second one) G2=PermutationGroup(gens)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "_sage_input_92.py", line 10, in <module>
exec compile(u'open("___code___.py","w").write("# -- coding: utf-8 --\n" + _support_.preparse_worksheet_cell(base64.b64decode("RzI9UGVybXV0YXRpb25Hcm91cChnZW5zKQ=="),globals())+"\n"); execfile(os.path.abspath("___code___.py"))
File "", line 1, in <module> File "/private/var/folders/gm/z065gk616xg6g0xgn4c7_bvc0000gn/T/tmpHRYMWK/___code___.py", line 2, in <module>
exec compile(u'G2=PermutationGroup(gens)
File "", line 1, in <module> File "/Applications/SageMath/local/lib/python2.7/site-packages/sage/groups/perm_gps/permgroup.py", line 343, in PermutationGroup
raise TypeError("gens must be a tuple, list, or GapElement")
TypeError: gens must be a tuple, list, or GapElement G2=PermutationGroup(list(gens))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "_sage_input_79.py", line 10, in <module>
exec compile(u'open("___code___.py","w").write("# -- coding: utf-8 --\n" + _support_.preparse_worksheet_cell(base64.b64decode("RzI9UGVybXV0YXRpb25Hcm91cChsaXN0KGdlbnMpKQ=="),globals())+"\n"); execfile(os.path.abspath("___code___.py"))
File "", line 1, in <module> File "/private/var/folders/gm/z065gk616xg6g0xgn4c7_bvc0000gn/T/tmpOxJAnr/___code___.py", line 2, in <module>
exec compile(u'G2=PermutationGroup(list(gens))
File "", line 1, in <module> File "/Applications/SageMath/local/lib/python2.7/site-packages/sage/groups/perm_gps/permgroup.py", line 345, in PermutationGroup
canonicalize=canonicalize, category=category)
File "/Applications/SageMath/local/lib/python2.7/site-packages/sage/groups/perm_gps/permgroup.py", line 419, in __init__
for cycle in x:
TypeError: 'sage.libs.gap.element.GapElement_Permutation' object is not iterable I cannot make much of the documentation. Thanks. |
2017-07-20 07:54:49 +0200 | received badge | ● Famous Question
(source)
|
2017-03-08 09:32:07 +0200 | commented answer | n-torsion subgroups on Elliptic Curves defined on some field thank you very much, i need some time to digest it all, because i'm a beginner/amateur in this topic.
i don't really understand what f and g are. |
2017-02-17 16:02:43 +0200 | received badge | ● Enthusiast
|
2017-02-10 09:52:38 +0200 | commented answer | Elliptic Curves defined over Z/nZ rings for general n i think they should be well understood to some extent. there are the basis of some powerful popular methods for integer factorization or proving that a large number is prime for example. |
2017-02-10 02:12:10 +0200 | commented question | Elliptic Curves defined over Z/nZ rings for general n do you see a way around that ? |
2017-02-09 16:25:57 +0200 | asked a question | Elliptic Curves defined over Z/nZ rings for general n An Elliptic curve is the union of its affine part Eaff(Z/nZ)={ [x,y,1] in P2(Z/nZ) such that y2 =x3+ax+b }
and the point at infinity O = [0,1,0] P2(Z/nZ) is the projective plane: T = { (x,y,z) in (Z/nZ)^3 such that gcd(x,y,z,n) = 1} P2(Z/nZ) = (T / ~) where ~ is the equivalence relation defined by
(x,y,z) ~ (x0,y0,z0) iff there is an INVERSIBLE element u in Z/nZ ⇤ such that (x,y,z) = u(x0,y0,z0). I found those doc pages http://fe.math.kobe-u.ac.jp/icms2010-... http://doc.sagemath.org/html/en/refer... I think to define an Elliptic Curve here with q=10
E1 = EllipticCurve(Zmod(q),[0,1])
E1
Elliptic Curve defined by y^2 = x^3 +
1 over Ring of integers modulo 10 but E1.points()
is not working. is there a method to get all the points of this Elliptic Curve ? its cardinality etc ???? |
2017-02-08 16:38:37 +0200 | received badge | ● Associate Editor
(source)
|
2017-02-08 15:26:56 +0200 | asked a question | n-torsion subgroups on Elliptic Curves defined on some field if E an elliptic is defined on K, then E[n] is a subgroup of an Elliptic curve defined on an algebraic closure of K, its the set of points P of this curve whose order is dividing n G = E.torsion_subgroup()
gives the torsion subgroup in E(K), but is there a method giving the E[n] ? For example, for the Elliptic Curve y^2=x^3-2 defined on Q if we denote by alpha the cubic root of 2 and J a complex cubic root of unity, and O the point at infinity E[2] = {O,(alpha,0), (alpha * J,0),(alpha * J^2,0)} I tried the following E = EllipticCurve(CC,[0,-2]) O = E(0) O.division_points(2) and got [pretty close but not the right result, and not in an algebraic form anyway] [(0.000000000000000 : 1.00000000000000 : 0.000000000000000),
(1.25992104989487 : 0.000000000000000 : 1.00000000000000)]
thanks |