roed314 / OMS

Converting Rob Pollack's overconvergent modular symbols .sage code to .py and putting it in Sage
4 stars 4 forks source link

Loss of precision in solving difference equation #45

Open rharron opened 11 years ago

rharron commented 11 years ago

So, first: here I've forced the use of the Dist_vector class. Given that:

sage: D = Distributions(0,3,10,ZpCA(3,10)) sage: v = [0,1] + [0]_5 sage: mu = D(v) sage: mu (O(3^7), 1 + O(3^6), O(3^5), O(3^4), O(3^3), O(3^2), O(3)) sage: nu = mu.solve_diff_eqn(); nu 3^-1 * (3 + O(3^7), 3 + 3^2 + 3^3 + 3^4 + 3^5 + O(3^6), 2 + 3 + 3^2 + 3^3 + O(3^4), O(3^4), 2 + 2_3 + O(3^3), O(3), 2 + O(3))

Notice that in the solution nu, the precision is 7,6,4,4,3,1,1, instead of the desired 7,6,5,4,3,2,1.

rharron commented 11 years ago

In fact, this seems to be what theoretically should happen right? For instance, the 0th moment of nu is the 1st moment of mu. So, really solving the difference equation drops the precision by 1. Maybe one can just forcefully extend the precision... will that work?

rharron commented 11 years ago

Well, I guess the only time one uses this solving is in lifting and forming random modular symbols. In the former case, I can understand that one might lose precision. For the latter case, it just means that if you ask for a random modular symbol, the code should randomly create values whose precision is 1 more (or maybe 2 more for families?) than the precision of the modular symbol you asked for.

rharron commented 11 years ago

Previous comment notwithstanding, the current code remains "buggy" in that the output from solve_diff_eqn should be a distribution with one less precision than self. (right?)