2010-12-31 11 views
33

में मैं बेतरतीब ढंग से Mathematica 7 में एक पाप [x] समारोह साजिश रची और इस यह क्या पता चलता है:अजीब पाप [x] ग्राफ मेथेमेटिका

http://i.stack.imgur.com/hizGw.png

नोट दिखाई दोष लगभग x = -100

यहाँ, दोष भाग का एक ज़ूम है स्पष्ट रूप से दिखा रहा है कि किसी कारण से मेथेमेटिका वहाँ अंक के बीच एक बहुत कम संकल्प का उपयोग करता है:

mesh

किसी को पता है कि ऐसा क्यों होता है और क्यों केवल x = -100 पर?

नोट: वैसे भी Wolfram Alpha में होता है।

+0

यह मेरे लिए सरल अलियासिंग जैसा दिखता है। क्या आप वास्तव में विश्वास करते हैं कि गणित के पास कुछ ऐसा मौलिक होगा जैसा कि यह मौलिक है? –

+0

नहीं, यही कारण है कि मैं बहुत हैरान था। अगर यह अलियासिंग था, तो अंतराल बड़ा होने पर यह और अधिक दिखाई देने की प्रवृत्ति नहीं होगी? यदि मैं xmin, xmax को -60 पीआई/60 पीआई में बदलता हूं, उदाहरण के लिए, यह दूर चला जाता है। – houbysoft

+1

@ हुबिसॉफ्ट में मेरे पास गणित नहीं है, वास्तव में इसके बारे में कुछ नहीं पता है, लेकिन मेरा सुझाव है कि आप प्लॉटपॉइंट्स विकल्प –

उत्तर

60

लघु जवाब: डिफ़ॉल्ट की साजिश रचने सटीकता कि समारोह के लिए पर्याप्त नहीं है, तो यह वृद्धि इस प्रकार

Plot[Sin[x], {x, -42 Pi, 42 Pi}, PlotPoints -> 100] 

लांग जवाब: द्वारा अंक की एक परिमित सेट पर समारोह का मूल्यांकन, और जोड़ने उन बिंदुओं से Plot काम करता है सीधी रेखाएं। आप निम्न आदेश

Plot[Sin[x], {x, -42 Pi, 42 Pi}, Mesh -> All, PlotStyle -> None, 
MeshStyle -> Black] 

plot का उपयोग कर Plot द्वारा प्रयोग किया जाता अंक देख सकते हैं

आप देख सकते हैं कि आपके कार्य के लिए, अंक जहां समारोह का मूल्यांकन किया गया था "पीक याद किया" और शुरू की एक बड़ी सन्निकटन त्रुटि। अंक के स्थान चुनने के लिए उपयोग किए जाने वाले एल्गोरिदम बहुत सरल होते हैं और यह स्थिति तब हो सकती है जब प्लॉटरेंज/प्लॉटपॉइंट्स की तुलना में दो चोटियों को अधिक बारीकी से रखा जाता है।

Plot 50 समान दूरी वाले अंकों के साथ शुरू होता है और फिर MaxRecursion चरणों में अतिरिक्त अंक डालता है। यदि आप MaxRecursion की विभिन्न सेटिंग्स के लिए क्षेत्र को प्लॉट करते हैं तो आप देख सकते हैं कि यह "छेद" कैसा दिखाई देता है।

plot1 = Plot[Sin[x], {x, -42 Pi, 42 Pi}, PlotPoints -> 100, 
    PlotStyle -> LightGray]; 
Table[plot2 = 
    Plot[Sin[x], {x, -42 Pi, 42 Pi}, Mesh -> All, MeshStyle -> Thick, 
    PlotStyle -> Red, MaxRecursion -> k]; 
    Show[plot1, plot2, PlotRange -> {{-110, -90}, {-1, 1}}, 
    PlotLabel -> ("MaxRecursion " <> ToString[k])], {k, 0, 
    5}] // GraphicsColumn 

plot

स्टेन वैगन के मेथेमेटिका पुस्तक के अनुसार, Plot लगातार दो अंक के बीच एक अतिरिक्त अंक आधे रास्ते में जोड़ दिया जाए, तो दो नए रेखा खंडों के बीच के कोण अधिक से अधिक 5 डिग्री होगा फैसला करता है । इस मामले में, साजिश प्रारंभिक बिंदु स्थिति के साथ दुर्भाग्यपूर्ण हो गई और उपविभाग उस मानदंड को पूरा नहीं करता है। आप देख सकते हैं कि छेद के केंद्र में एक एकल मूल्यांकन बिंदु डालने से लगभग समान दिखने वाली साजिश पैदा होगी।

तरह जब Refinement विकल्प का उपयोग करके उप-विभाजित करने का फैसला करने के लिए इस्तेमाल कोण को बढ़ाने के लिए (मैं इसे किताब से मिला, लेकिन यह प्रतीत नहीं होता उत्पाद में प्रलेखित किया जाना)

plot1 = Plot[Sin[x], {x, -42 Pi, 42 Pi}, PlotPoints -> 100, 
    PlotStyle -> LightGray]; 
Show[plot1, 
Plot[Sin[x], {x, -42 Pi, 42 Pi}, Mesh -> All, MeshStyle -> Thick, 
    PlotStyle -> Red, MaxRecursion -> 3, 
    Method -> {Refinement -> {ControlValue -> 4 \[Degree]}}], 
PlotRange -> {{-110, -90}, {-1, 1}}] 

यहाँ आप कर सकते हैं देखें कि इसे डिफ़ॉल्ट से 1 डिग्री से बढ़ाकर 5 छेद को ठीक करता है।

plot

+0

आह, आपके उत्तर का अद्यतन हिस्सा वही है जो मैं खोज रहा हूं (मुझे बाकी को पता था, जिसने ग्राफिंग कैलकुलेटर को लागू किया था, जिसने इसे स्वयं किया था, लेकिन मैंने मैक्स रेकर्सियन के समान तंत्र शामिल नहीं किया है, जो बताता है अस्पष्टता)। – houbysoft

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