Opened 6 years ago
Closed 6 months ago
#18010 closed enhancement (duplicate)
This introduces function to compute multiple zeta values and finding relations between them
Reported by: | akhi | Owned by: | |
---|---|---|---|
Priority: | major | Milestone: | sage-duplicate/invalid/wontfix |
Component: | number theory | Keywords: | multiple zeta values, sage days 64, SD75 |
Cc: | was, tscrim, mkoeppe | Merged in: | |
Authors: | Reviewers: | Travis Scrimshaw | |
Report Upstream: | N/A | Work issues: | |
Branch: | public/ticket-multizeta (Commits, GitHub, GitLab) | Commit: | 45f85b3ffdb448a12eb53d4e85a7130ce5c61fe7 |
Dependencies: | Stopgaps: |
Description (last modified by )
Here it is introducing to three functions that compute multiple zeta values,
The first one multizeta it computing multiple zeta values using Double Tails, this is fastest algorithm to compute one MZV
The second allmultizetaprint is returning the first n multiple zeta values using intial, Middle and final words, this algorith is very efficient to compute a plenty of MZV together
The third one mzeta that compute multiple zeta values using polylogarithm
References: Double tails of multiple zeta values, P. Akhilesh, Journal of Number Theory, Volume 170, January 2017, Pages 228–249
http://www.sciencedirect.com/science/article/pii/S0022314X16301718
Multiple zeta values Computing using Double Tails:
Example::
sage: multizeta([2],170,100) 1.6449340668482264364724151666460251892189499012067984377355582293700074704032008738336289006197587? sage: multizeta([2,3],170,100) 0.7115661975505724320969738060864026120925612044383392364922224964576860857450582651154252344636008? sage: multizeta([2,1],170,100) 1.2020569031595942853997381615114499907649862923404988817922715553418382057863130901864558736093353? sage:
Computing The first 'n' multiple zeta values using a fast algorithm using Initial, Middle and Final words Example::
sage: allmultizetaprint(10,170,100) multizeta( [2] )= 1.644934066848226436472415166646025189218949901206798437735558229370007470403200873833628900619758706? multizeta( [3] )= 1.202056903159594285399738161511449990764986292340498881792271555341838205786313090186455873609335258? multizeta( [2, 1] )= 1.202056903159594285399738161511449990764986292340498881792271555341838205786313090186455873609335258? multizeta( [4] )= 1.082323233711138191516003696541167902774750951918726907682976215444120616186968846556909635941699917? multizeta( [3, 1] )= 0.270580808427784547879000924135291975693687737979681726920744053861030154046742211639227408985424980? multizeta( [2, 2] )= 0.811742425283353643637002772405875927081063213939045180762232161583090462140226634917682226956274938? multizeta( [2, 1, 1] )= 1.082323233711138191516003696541167902774750951918726907682976215444120616186968846556909635941699918? multizeta( [5] )= 1.036927755143369926331365486457034168057080919501912811974192677903803589786281484560043106557133337? multizeta( [4, 1] )= 0.0965511599894437344656455314289427640320103723436914152525630787528921454259587614177018405925170654?
Computing Multiple Zeta values using Polylogarithm algorithm Example::
sage: mzeta([2,1]) 1.2020569031595942853997381615114499907649862923404988817922715553418382057863130901864558736093352581461991577952607194184919959986 732832137763968372079001614539417829493600667191915755222424942439615639096641032911590957809655146512799184051057152559880154371097 811020398275325667876035223369849416618110570147157786394997375237852779370309560257018531827900030765471075630488433208697115737423 8079344503160762531771453544441183117818224971852635709182448998796203508335756172022603393785870328131267807990054177348691152537065 6237057440966221712902627320732361492242913040528555372341033077577798064242024304882815210009146026538220696271552020822743350010152 9480119869011762595167636699817183557523488070371955574234729408359520886166620257285375581307928258648728217370556619689895266201877 68106292008177923381358768284264124324314802821736745067206935076268953043459393750329663637757506247332399234828831077339052768020075 7984356793711505090050273660471140085335034364672248565315181177661811? sage: mzeta([2,1],100) 1.20205690315959428539973816151144999076498629234049888179227155534183820578631309018645587360933526?
This program allows you to find the linear relationship between the multiple zeta values Example ::
sage: Rmultizeta([[2,1],[3]]) [1, -1] sage: Rmultizeta([[2,1],[3]],100,100,1000) [1, -1] sage:
Change History (19)
comment:1 Changed 6 years ago by
- Branch set to u/akhi/mzeta
comment:2 Changed 6 years ago by
- Commit set to c40c4f19230485f7b02aef06f13f402b890bc66d
- Description modified (diff)
comment:3 Changed 6 years ago by
- Description modified (diff)
comment:4 Changed 6 years ago by
- Summary changed from This introducing function compute multiple zeta values and finding relations between them to This introduces function to compute multiple zeta values and finding relations between them
comment:5 Changed 5 years ago by
- Commit changed from c40c4f19230485f7b02aef06f13f402b890bc66d to 43f19c7c1eaed13ff371773fdcb0377a5975383d
comment:6 Changed 5 years ago by
- Description modified (diff)
- Milestone changed from sage-6.6 to sage-7.4
- Status changed from new to needs_review
comment:7 Changed 5 years ago by
- Keywords SD75 added
comment:8 Changed 5 years ago by
- Status changed from needs_review to needs_work
Please fix the syntax to fit with Sage standards:
- You should have a look at the developer manual for documentation strings
http://doc.sagemath.org/html/en/developer/coding_basics.html#documentation-strings
For example you need to write
EXAMPLES
instead ofExamples
. There should be line breaks before and afterEXAMPLES
, etc.
- For Python syntax, have a look at
For example there should be spaces before and after each assignment.
- Revise the description of the function. You can have a look at the developer manual again and look at other files in the Sage sources.
As an example
def allmultizeta(N,n,D): r''' the program computing first N-1 multiple zeta values: Example:: sage: allmultizeta(10,170,100)
Should be changed to
def allmultizeta(N, n, D): r""" Return the first N-1 multiple zeta values. EXAMPLES:: sage: allmultizeta(10, 170, 100)
Minor detail: in the "Authors" field of the ticket you need to put your full name.
comment:9 Changed 5 years ago by
BTW, how does your code compares with the zetamult
function available in PARI/GP
? zetamult([2, 1]) %1 = 1.2020569031595942853997381615114499908
comment:10 Changed 5 years ago by
Indeed, in the source code of PARI/GP (file basemath/zetamult.c
) one can read
ALGORITHM DUE TO P. AKHILESH. DO NOT REPRODUCE UNTIL PUBLISHED
You might want to coordinate with K. Belabas and/or B. Allombert on the PARI/GP mailing lists: http://pari.math.u-bordeaux.fr/lists-index.html
comment:11 Changed 23 months ago by
- Branch changed from u/akhi/mzeta to public/ticket-multizeta
- Commit changed from 43f19c7c1eaed13ff371773fdcb0377a5975383d to 958a570c3a26bb3975ebad973257dbb8a271d7c9
comment:12 Changed 23 months ago by
- Status changed from needs_work to needs_info
comment:13 Changed 15 months ago by
- Commit changed from 958a570c3a26bb3975ebad973257dbb8a271d7c9 to 45f85b3ffdb448a12eb53d4e85a7130ce5c61fe7
comment:14 Changed 8 months ago by
- Milestone changed from sage-7.4 to sage-duplicate/invalid/wontfix
- Status changed from needs_info to needs_review
Given that pari has multizetas, and that we have an interface to them, this ticket may be closed as invalid.
Vincent, do you agree ?
comment:16 follow-up: ↓ 17 Changed 6 months ago by
Before we close it as a duplicate, it would be good to do some comparison timings IMO as Vincent suggested in comment:12. Or does the PARI version use the same algorithm?
comment:17 in reply to: ↑ 16 Changed 6 months ago by
Replying to tscrim:
Before we close it as a duplicate, it would be good to do some comparison timings IMO as Vincent suggested in comment:12. Or does the PARI version use the same algorithm?
PARI indeed implements Akilesh algorithms. In the last master branch there is also some alternatives that are faster for some specific signatures. The only disadvantage I see with PARI is that the result is a floating point number and not a ball/interval with guarantees on the result. However, the implementation is very careful to provide an accurate floating point number.
comment:18 Changed 6 months ago by
- Reviewers set to Travis Scrimshaw
- Status changed from needs_review to positive_review
Then I would say we should close this as a duplicate.
comment:19 Changed 6 months ago by
- Resolution set to duplicate
- Status changed from positive_review to closed
thanx, closing now
Branch pushed to git repo; I updated commit sha1. New commits:
Merge branch 'master' into mzeta
included more functions in multiple zeta values and implimented in interval arithmetic