2012-01-19 11 views
12

जे 6 ब्रायन कॉन द्वारा चित्र 6 में "द रिमेंन हाइपोथिसिस" पेपर में प्राइम नंबर प्रमेय में त्रुटि अवधि के फूरियर ट्रांसफॉर्म का एक साजिश है। नीचे चित्र में बाईं ओर साजिश देखें:गणित में फूरियर ट्रांसफॉर्म के साथ रिमैन जेता शून्य स्पेक्ट्रम कितना साजिश है?

Plots from Conrey's paper on the Riemann hypothesis

एक ब्लॉग पोस्ट Primes out of Thin Air बुलाया क्रिस राजा द्वारा लिखित में एक Matlab कार्यक्रम है कि स्पेक्ट्रम भूखंडों है। पोस्ट की शुरुआत में दाईं ओर साजिश देखें।

scale = 10^6; 
start = 1; 
fin = 50; 
its = 490; 
xres = 600; 
y = N[Accumulate[Table[MangoldtLambda[i], {i, 1, scale}]], 10]; 
x = scale; 
a = 1; 
myspan = 800; 
xres = 4000; 
xx = N[Range[a, myspan, (myspan - a)/(xres - 1)]]; 
stpval = 10^4; 
F = Range[1, xres]*0; 

For[t = 1, t <= xres, t++, 
For[yy=0, yy<=Log[x], yy+=1/stpval, 
F[[t]] = 
F[[t]] + 
Sin[t*myspan/xres*yy]*(y[[Floor[Exp[yy]]]] - Exp[yy])/Exp[yy/2]; 
] 
] 
F = F/Log[x]; 
ListLinePlot[F] 

बहरहाल, यह है के रूप में मैं यह फूरियर साइन बदलने की मैट्रिक्स तैयार करने को समझते हैं और इसलिए यह बहुत गणना करने के लिए महंगा है: मेथेमेटिका में एक अनुवाद संभव है:

मेथेमेटिका। मैं इसे चलाने की अनुशंसा नहीं करता क्योंकि यह पहले से ही मेरे कंप्यूटर को दुर्घटनाग्रस्त कर देता है।

क्या रैमैन जेता जेरोस के काल्पनिक भाग के बराबर एक्स-वैल्यू पर स्पाइक्स के साथ स्पेक्ट्रम प्लॉट करने के लिए फास्ट फूरियर ट्रांसफॉर्म का उपयोग करने वाले गणित में कोई तरीका है?

मैंने बिना सफलता के FourierDST और Fourier आदेशों का प्रयास किया है। समस्या यह है कि कोड में परिवर्तनीय yy दोनों Sin[t*myspan/xres*yy] और (y[[Floor[Exp[yy]]]] - Exp[yy])/Exp[yy/2] दोनों में शामिल है।

संपादित करें:

For[yy = 0, yy/stpval <= Log[x], yy++,

संपादित करें: 2012/01/22, हीके की टिप्पणी से, बदल दिया है: निम्नलिखित में

For[yy = 0, yy <= Log[x], 1/stpval++,

: 2012/01/20, मैं लाइन बदल

For[yy = 0, yy/stpval <= Log[x], yy++,

में:

For[yy=0, yy<=Log[x], yy+=1/stpval,

+1

पैदा करता है का उपयोग कर, क्योंकि अपने भीतर 'For' पाश' yy = 0' पर अटक गया है तुम एक अनंत लूप मिल फिर से लिख दिया। आपको 'फॉर' लूप के तीसरे तर्क में 'चरणबद्ध' की बजाय 'yy' बढ़ाने की आवश्यकता है। – kglr

+0

सुधार के लिए धन्यवाद! समस्या अभी भी बनी हुई है। इस बार प्रोग्राम मेरे डेस्कटॉप कंप्यूटर को ठंडा किए बिना चलाता है लेकिन यह आउटपुट के साथ समाप्त होता है: कोई और मेमोरी उपलब्ध नहीं है। गणित कर्नेल बंद हो गया है। अन्य एप्लिकेशन छोड़ने का प्रयास करें और फिर पुनः प्रयास करें। –

+1

@ मैट्स: बस इतना ही पता है, यह [बुरा फॉर्म] है (http://meta.stackexchange.com/q/64068/156389) [समान प्रश्न] (http://math.stackexchange.com/q/100597/954) दो साइटों पर पोस्ट किया गया। आपको इसे मॉडरेटर के ध्यान के लिए फ़्लैग किया जाना चाहिए था और माइग्रेट करने के लिए कहा जाना चाहिए था, या यहां पर दोबारा पोस्ट करने से पहले सिर्फ प्रश्न हटा दिया था। – Simon

उत्तर

11

इस बारे में क्या? मैं साइन थोड़ा बदलना पहचान Exp[a Log[x]]==x^a

Clear[f] 
scale = 1000000; 
f = ConstantArray[0, scale]; 
f[[1]] = [email protected][1]; 
Monitor[Do[f[[i]] = [email protected][i] + f[[i - 1]], {i, 2, scale}], i] 

xres = .002; 
xlist = Exp[Range[0, Log[scale], xres]]; 
tmax = 60; 
tres = .015; 
Monitor[errList = Table[(xlist^(-1/2 + I t).(f[[Floor[xlist]]] - xlist)), 
    {t, Range[0, 60, tres]}];, t] 

ListLinePlot[Im[errList]/Length[xlist], DataRange -> {0, 60}, 
    PlotRange -> {-.09, .02}, Frame -> True, Axes -> False] 

जो

Mathematica graphics

+0

बढ़िया! यह मेरी शिक्षा में एक अंतर भरता है। केवल एक विवरण, परिवर्तनीय 'span' का मान 20000 या उससे अधिक होना चाहिए, पंक्ति 'span = 20000;'' xlist' से पहले शामिल है। बहुत धन्यवाद। –

+0

@ मैट्स 'स्पैन' और 'स्केल' समान हैं। मैंने अपनी नोटबुक में 'span' का उपयोग किया था, लेकिन कोड को कॉपी-पेस्ट करते समय 'स्कैन' के साथ' span' की सभी घटनाओं को प्रतिस्थापित करना भूल गया था। मैं इसे सुसंगत बनाने के लिए इसे सही कर दूंगा। – Heike

+1

मैं इसे स्वयं नहीं कर सका। –

संबंधित मुद्दे