2020-07-16 14:05:28 +0200 commented question Built-in tools for fast extraction of tuples of a given grade with respect to grading on [1, 2, ..., n] @mwageringel Thanks a lot :-) 2020-07-12 19:37:33 +0200 asked a question Built-in tools for fast extraction of tuples of a given grade with respect to grading on [1, 2, ..., n] Hi, Note that I have just posted the same question on Stack Overflow. I am in the process of coding 2 mathematical combinatorial operations that I want to iterate (as) many times (as possible), so speed is obviously crucial. Here is an example of what I want to do as fast and efficiently as possible for any positive integer n and any grading (see example below). Remark: This is a self-motivated question coming from mathematical experimentations with Sage. Many thanks in advance for your help. Example: Let us take n = 6, and the set S = {1, 2, ..., n} = {1, 2, 3, 4, 5, 6}. There are binomial(6, 2) = 15 couples  [(1, 2), (1, 3), (1, 4), (1, 5), (1, 6), (2, 3), (2, 4), (2, 5), (2, 6), (3, 4), (3, 5), (3, 6), (4, 5), (4, 6), (5, 6)]  in increasing order that we can extract from S. The built-in tool I was advised to use in order to obtain the above list is the following:  from itertools import combinations n = 6 iterable = list(range(1, n+1)) r = 2 print(list(combinations(iterable, r)))from itertools  Question 0: Is there anything faster in Python? Now let me choose a grading on the set S in the form of a function from S to {1, 2, 3} grading: 1, 2, 3 --> 1 and 4, 5 --> 2 and 6 --> 3 I have decided to store this function as a dictionary as follows:  grading = {1: 1, 2:1, 3: 1, 4: 2, 5: 2, 6: 3}  With respect to this grading, we can compute the grade of elements, couples, or tuples constructed from S. Examples: - grade(2) = 1 - grade(5) = 2 - grade((2, 5)) = grade(2) + grade(5) = 1 + 2 = 3 - grade((2, 3, 5)) = 1 + 1 + 2 = 5 1 - First Construction: I want all the couples with grade equal to g0 = 4. Here is an obvious way to do it, which is built naively on the previous lines of code:  g0 = 4 gradedList = [] for couple in list(combinations(iterable, 2)): grade = grading[couple[0]] + grading[couple[1]] if grade == g0: gradedList.append(couple) print(gradedList)  This yields  [(1, 6), (2, 6), (3, 6), (4, 5)]  as desired. Question 1: Is there a built-in way to obtain gradedList and/or what is the fastest way to do this with Python? 2 - Second Construction: Now I want to extract all the increasing 3-tuples (i, j, k) with grade equal to 4, and which starts with i = 1. In other terms, I want the following list:  [(1, 2, 4), (1, 2, 5), (1, 3, 4), (1, 3, 5)]  Of course, this can be obtained as follows:  newIterable = list(range(2, n+1)) secondGradedList = [] for couple in list(combinations(newIterable, 2)): grade = grading[1] + grading[couple[0]] + grading[couple[1]] if grade == g0: secondGradedList.append((1,) + couple) print(secondGradedList)  Question 2: Is there a built-in way to obtain secondGradedList and/or what is the fastest way to do this with Python? Thanks, Julien 2020-07-03 14:32:53 +0200 asked a question Right choice for a dictionary of matrices with non constant coefficients. Hi, K is any field. I need to store matrices in a dictionary. Some of them have constant coefficients in K (let M1 be such a matrix), and some have non constant coefficients, say these coeffcients are functions from t to K (let M2 be such a matrix). I need to get M2 from the dictionary, and then be able to manipulate it as if it was a function of t. (T) In particular, I need to be able to manipulate the matrices obtained from M2 by setting t to be equal to some specific values. Since my functions are polynomials for now, I have tried doing something like this:  var('t') sample = {} sample[('M1')] = matrix(QQ, 2, [7, 5, 2, 4]) sample[('M2')] = matrix(QQ['t'], 2, [t^2, 2, 3, 1 - t])  But then I don't know how to proceed to perform the task (T). And I have the feeling that there are much better options. What should I do? Thanks. 2020-05-27 22:26:56 +0200 commented question Matrix of the composition with the quotient map @tmonteil An alternative would be to know how to obtain the coordinates of every $\theta(u)$ in the basis of Q, knowing the coordinates of $\phi(u)$ in the canonical basis of $\mathbb{C}^4$. 2020-05-27 21:03:57 +0200 commented question Matrix of the composition with the quotient map I have a basis of U and I am able to compute $\phi(u)$ for every $u$ in this basis. So I build the matrix M myself: this is now my input. I am looking for the shortest path to get the matrix N. 2020-05-27 15:54:24 +0200 asked a question Hypermatrices? Hi all, I want to store and manipulate arrays of $n\times n\times n$ numbers $$x_{ijk}\quad\text{where}\quad 0\leq i, j, k\leq n-1$$ with Sage. Here is what I have been doing so far: import numpy as np n = 7 X = np.zeros((n, n, n)) X[2][4][1] = 17 etc... Remark: So $X$ is a so called 3-hypermatrix. Question: Are NumPy arrays my best option when handling hypermatrices with Sage? Precision: I will need to manipulate lists of such hypermatrices, and even hypermatrices whose elements will be hypermatrices, e.g. $$X_{ijk}^{(abcd)}$$ and loop over such lists, e.g. for a ..., for b ..., for c ..., do ... with the 3-hypermatrix $X^{(abcd)}$. 2020-05-27 15:01:38 +0200 asked a question Matrix of the composition with the quotient map Hi all, In this question, I learned how to obtain a basis for a quotient vector space. Here is a summary of the code: A = matrix(CC, 4, 3, [1, 2, 3, 5, 10, 15, 0, 0, 0, -2, -4, -6]) B = matrix(CC, 5, 4, [0, 2, 7, 5, 0, 0, 0, 0, 0, -2, -7, -5, 0, 4, 14, 10, 0, 6, 21, 15]) W = A.transpose().image() V = B.right_kernel() Q = V / W So Q is the quotient vector space $\mathrm{Ker}B/\mathrm{Im}A$ and the command matrix([Q.lift(b) for b in Q.basis()]) returns a matrix whose rows are vectors of $\mathbb{C}^4$ which constitute a set of representatives for a basis of Q. Now I have a linear map $$\phi:U\longrightarrow\mathbb{C}^4$$ such that $\mathrm{Im}\phi\subseteq V$, and its composition with the quotient map $V\longrightarrow Q=V/W$, namely $$\theta:U\longrightarrow Q.$$ I have fixed a basis of $U$ (which has dimension 3) and I have the matrix of $\phi$, say $M$, with respect to that basis at the origin, and the canonical basis of $\mathbb{C}^4$ at the end. So $M$ is $4\times 3$. Question: What is the command that will give me the $2\times 3$ matrix $N$ of $\theta$ with the same basis of $U$ at the origin, and the basis of $Q$ mentioned above at the end? Thanks for your help. 2020-05-25 21:25:50 +0200 commented answer Basis for such a quotient vector space Great, thanks a lot. 2020-05-25 19:26:58 +0200 asked a question Basis for such a quotient vector space Hi all, Here is my code: A = matrix(QQ, 4, 3, [1, 2, 3, 5, 10, 15, 0, 0, 0, -2, -4, -6]) B = matrix(QQ, 5, 4, [0, 2, 7, 5, 0, 0, 0, 0, 0, -2, -7, -5, 0, 4, 14, 10, 0, 6, 21, 15]) W = A.transpose().image() V = B.right_kernel() V/W This way W is the range of the linear map $$A:\mathbb{Q}^3\longrightarrow\mathbb{Q}^4,$$ V is the nullspace of $$B:\mathbb{Q}^4\longrightarrow\mathbb{Q}^5,$$ Since BA=0, W is a subspace of V. and the command V/W returns in particular the dimension of the quotient vector space V/W which is equal to 2. What I want is a basis of V/W, i.e. 2 vectors of $\mathbb{Q}^4$ which are in V, in the form of a 2x4 matrix the same way V.basis_matrix() returns a basis for V. How can I do this? Thanks! 2019-12-25 18:38:45 +0200 received badge ● Editor (source) 2019-12-25 18:05:00 +0200 asked a question error message: :2: DeprecationWarning: invalid escape sequence \( Hi, I have a few interacts which were working nicely until this morning. But now I get this error message: :2: DeprecationWarning: invalid escape sequence \( Here is an example: https://tinyurl.com/r5ocq9f Can you tell me what is wrong, and what I should do to fix it? Thanks! Julien 2019-09-06 18:14:08 +0200 received badge ● Famous Question (source) 2018-12-30 20:02:09 +0200 received badge ● Notable Question (source) 2018-09-09 01:15:47 +0200 received badge ● Popular Question (source) 2018-03-26 19:53:47 +0200 asked a question Using accented letters in interact selectors I would like to use accented letters when displaying the options of my input under the selector method. To be more precise, 'I'd like to have ellipsoïde and à deux nappes, for instance. Thanks. Here is the interact. And here is the code: var('x,y,z') quadrics = {'Ellipsoide':x^2+y^2+z^2-1,'Paraboloide elliptique':x^2+y^2-z,'Paraboloide hyperbolique':x^2-y^2-z, 'Hyperboloide une nappe':x^2+y^2-z^2-1,'Hyperboloide deux nappes':x^2-y^2-z^2-1, 'Cone':x^2+y^2-z^2} @interact def quads(q = selector(quadrics.keys(), label='Quadrique'), a = input_box(default=1, label="$a$"), b = input_box(default=1, label="$b$"), c = input_box(default=1, label="$c$"), r = input_box(default=3, label="$r$")): f = quadrics[q].subs({x:x/a}, {y:y/b}, {z:z/c}) if a*b*c==0 or q=='Cone': pretty_print(latex(f)+'=0 '+'(dégénérée)') else: pretty_print(latex(f)+'=0') p = implicit_plot3d(f,(x,-r,r),(y,-r,r),(z,-r,r), plot_points = 75, mesh=1, opacity=.7) show(p)  2018-01-29 15:11:21 +0200 received badge ● Nice Question (source) 2018-01-28 23:20:47 +0200 asked a question plots of complex numbers Say I want to plot the 6 solutions of the following complex equation. What is the best practice? EDIT by @tmonteil: to lower dependency between Sage services in the long term, here is the code provided in the sagecell: var('z') solutions = solve (z^6==-8, z) for i in range(0,6): show(solutions[i])  2018-01-27 19:50:50 +0200 received badge ● Supporter (source) 2018-01-25 23:31:39 +0200 asked a question pretty_print in interact labels I have written the following interact. How cant I get the labels right? For instance, I'd rather have $N_0$ rather than N0. Can I achieve this with pretty_print? 2018-01-19 21:11:30 +0200 commented answer @interact : Fix the default rendering Thanks kcrisman! 2018-01-19 21:11:04 +0200 received badge ● Scholar (source) 2018-01-18 16:45:46 +0200 asked a question @interact : Fix the default rendering I have created the following interact. It plots the partial sums of a series up to N, et prints out the last one. The default rendering yields a DeprecationWarning and does not show the partial sum value. When you update the data, the rendering is fine. How can I fix this? 2015-11-07 02:14:25 +0200 received badge ● Famous Question (source) 2015-06-20 01:28:21 +0200 received badge ● Notable Question (source) 2015-06-20 01:28:21 +0200 received badge ● Popular Question (source) 2014-08-11 17:05:38 +0200 received badge ● Student (source) 2014-08-08 17:42:03 +0200 asked a question How to reset variables? I am using the Sage-6.2 app on an iMac (Mavericks). I have solved a couple of linear systems in my running worksheet for which the solution set requires a parameter. I am now at 'r7'. How do I reset this back to 'r1'? Also, is there something equivalent to Maple's 'restart'?