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.Tue, 01 Sep 2020 01:38:15 +0200Set-Intersection Iterationhttps://ask.sagemath.org/question/53246/set-intersection-iteration/Suppose I have two sets with integral elements $A$ = {$a_1, a_2, ... , a_n$} and $B$ = {$b_1, b_2, ... , b_m$}, the cardinalities of which are arbitrarily large, and $a_n > a_{n - 1} > a_{n - 2} > ... > a_1$ and $b_m > b_{m - 1} > b_{m - 2} > ... > b_1$ with $n$ ≠ $m$. Suppose, also, that the intersection of sets $A$ and $B$ is the singleton set {$c$}, and there exists an index $i$ such that $b_{i + 1} > a_n > b_i > b_{i - 1} > ... > b_1$ where $a_n = \sup(A)$.
I want to create a for-loop iteration (or whatever the best approach might be!) that finds the set intersection without generating all the elements of both sets and then determining the set {$c$}. (This is possible because the generating functions I've created yield explicit formulas I can use to calculate specific elements of both sets.)
I wrote some basic code in Sage to calculate elementary set intersection, but for even moderately large cardinalities, the halt time was incredibly long. I'm thinking the following approach might be faster, but I don't know how to write the program using for-/while-loops and if/else constructions (or even if I should do so):
(1) Check if $a_{n - 1}$ ≤ $b_i$. If $a_{n - 1} > b_i$, keep checking conterminous decreasing indices for elements of $A$ (i.e., $a_{n - 2}$, $a_{n - 3}$, etc.) until $a_j$ ≤ $b_i$ for some index $j < n - 1$. If $a_j = b_i$, break and print($a_j$). If not, go to step (2).
(2) When $a_j < b_i$, check conterminous decreasing indices for elements of $B$ (i.e., $b_{i - 1}$, $b_{i - 2}$, etc.) until $a_j$ ≥ $b_k$ for some index $k < i$. If $a_j = b_k$, break and print($b_k$). If not, go to step (3).
(3) Repeat the process in steps (1) and (2) until $a_r = b_s$ for some indices $r$ ≠ $s$; then, break and print($b_s$).
Thanks in advance.u220eTue, 01 Sep 2020 01:38:15 +0200https://ask.sagemath.org/question/53246/How to compute this exponential generating function?https://ask.sagemath.org/question/24713/how-to-compute-this-exponential-generating-function/Yesterday I struggled with the Narayana polynomials which can be computed with Sage (and the help of kcrisman) as
P = lambda n: hypergeometric([-n,-n+1],[2], 1/x).simplify_hypergeometric()
[expand(x^k*P(k)) for k in (0..7)]
Today I want to generate the coefficients of these polynomials by an exponential generating function.
With Maple I have no problems.
egf := 1 + int((sqrt(t)*exp((1+t)*x)*BesselI(1,2*sqrt(t)*x))/x,x);
s := n -> n!*coeff(series(egf,x,n+2),x,n);
seq(print(seq(coeff(s(n),t,j),j=0..n)),n=0..6);
This gives the requested triangle:
1
0, 1
0, 1, 1
0, 1, 3, 1
0, 1, 6, 6, 1
0, 1, 10, 20, 10, 1
0, 1, 15, 50, 50, 15, 1
With Sage I tried:
from sage.symbolic.integration.integral import indefinite_integral
t = var('t')
h = lambda x, t: sqrt(t)*exp((1+t)*x)*bessel_I(1,2*sqrt(t)*x)
egf = 1 + indefinite_integral(h(x,t),x)
taylor(egf, x, 0, 6)
This gives me a TypeError. Perhaps this is the wrong Ansatz.
Any help is appreciated.Peter LuschnyThu, 30 Oct 2014 19:50:23 +0100https://ask.sagemath.org/question/24713/generating serieshttps://ask.sagemath.org/question/7706/generating-series/Hi. I want to create a function which will pick out the coefficients of a generating series. In particular, I have a generating series $\sum_{k=0}^\infty a_kt^k$ defined by an infinite product $\prod_{k=1}^\infty P_k(t)$. How do I just pick out the coefficients a_k?
I'm using Sage 4.5.3 on Mac OS X 10.6.4.
Thanks for the help!!!!!!!!!ben122684Wed, 22 Sep 2010 16:32:42 +0200https://ask.sagemath.org/question/7706/