คำถามติดแท็ก numeric-precision

7
อะไรทำให้เกิดข้อผิดพลาดในการปัดเศษทศนิยม
ฉันรู้ว่าเลขทศนิยมมีปัญหาความแม่นยำ ฉันมักจะเอาชนะพวกเขาโดยการเปลี่ยนไปใช้การแทนทศนิยมคงที่ของตัวเลขหรือเพียงแค่ละเลยข้อผิดพลาด อย่างไรก็ตามฉันไม่ทราบว่าอะไรคือสาเหตุของความไม่ถูกต้องนี้ เหตุใดจึงมีปัญหาการปัดเศษจำนวนมากด้วยตัวเลขลอย

2
ทำไมบางภาษาปัดเศษเป็นจำนวนเต็ม EVEN ที่ใกล้ที่สุด
ภาษาโปรแกรมเช่น Scheme (R5RS) และ Python ( ดูคำถามนี้ ) ไปทางเลขจำนวนเต็มคู่ที่ใกล้ที่สุดเมื่อค่าอยู่ระหว่างจำนวนเต็มโดยรอบ อะไรคือเหตุผลเบื้องหลังสิ่งนี้ มีแนวคิดทางคณิตศาสตร์ที่ทำให้การคำนวณต่อไปนี้ง่ายขึ้นด้วยเหตุผลหรือไม่ (R5RS อ้างอิงมาตรฐานจุดลอยตัว IEEE เป็นแหล่งที่มาของพฤติกรรมนี้)

9
เหตุใดจึงใช้ตัวเลขทศนิยมในวิทยาศาสตร์ / วิศวกรรม
ในขณะที่ตรวจสอบความถูกต้องของตัวเลขจำนวนจุดลอยตัวฉันเคยเห็นข้อความคล้าย ๆ " โฟลตและดับเบิลคือ ( ออกแบบมาสำหรับ / ใช้บ่อยใน ) วิศวกรรมและการคำนวณทางวิทยาศาสตร์ " จากความเข้าใจของฉันความแข็งแกร่งของการลอยตัวและการเพิ่มขึ้นเป็นสองเท่าคือจำนวนหน่วยความจำที่ใช้สำหรับความแม่นยำ (ดี แต่ไม่สมบูรณ์แบบ) ฉันรู้สึกว่าฉันเกือบจะได้รับความเข้าใจจากคำตอบนี้ "ตัวเลขจุดลอยตัวช่วยให้คุณจำลองปริมาณอย่างต่อเนื่อง" ฉันยังไม่มั่นใจว่าฉันเข้าใจ วิศวกรรมและวิทยาศาสตร์ทั้งสองดูเหมือนสนามที่คุณต้องการผลลัพธ์ที่แม่นยำจากการคำนวณของคุณซึ่งจากความเข้าใจของฉันจุดลอยตัวไม่ได้ให้ ฉันยังไม่แน่ใจว่าฉันทำตามสิ่งที่ "ปริมาณต่อเนื่อง" คืออะไรกันแน่ ใครบางคนสามารถขยายคำอธิบายนี้และอาจยกตัวอย่าง?

6
ทำไมคอมพิวเตอร์ไม่เก็บตัวเลขทศนิยมเป็นจำนวนเต็มตัวที่สอง
คอมพิวเตอร์มีปัญหาในการจัดเก็บตัวเลขเศษส่วนที่ตัวส่วนเป็นส่วนอื่นที่ไม่ใช่ 2 ^ x นี่เป็นเพราะตัวเลขตัวแรกหลังจากจุดทศนิยมมีค่า 1/2, 1/4 ที่สอง (หรือ 1 / (2 ^ 1) และ 1 / (2 ^ 2)) เป็นต้น เหตุใดจึงต้องจัดการกับข้อผิดพลาดในการปัดเศษทุกประเภทเมื่อคอมพิวเตอร์สามารถจัดเก็บส่วนทศนิยมของตัวเลขเป็นจำนวนเต็มอื่น (ซึ่งถูกต้องแล้ว) สิ่งเดียวที่ฉันคิดได้ก็คือจัดการกับทศนิยมซ้ำ (ในฐาน 10) แต่อาจมีวิธีแก้ปัญหาที่เป็นไปได้ (เช่นที่เรามีอยู่กับอนันต์)

5
วิธีแก้ปัญหาข้อผิดพลาดในการปัดเศษทศนิยม
ในการสร้างแอปพลิเคชั่นที่เกี่ยวข้องกับการคำนวณทางคณิตศาสตร์จำนวนมากฉันได้พบปัญหาว่าตัวเลขบางตัวทำให้เกิดข้อผิดพลาดในการปัดเศษ ในขณะที่ฉันเข้าใจว่าจุดลอยไม่แน่นอนปัญหาคือวิธีการที่ฉันจะจัดการกับตัวเลขที่แน่นอนที่จะทำให้แน่ใจว่าเมื่อคำนวณจะ preformed ที่พวกเขาลอยปัดเศษจุดไม่ก่อให้เกิดปัญหาใด ๆ ?

4
จะระบุการคำนวณจุดลอยตัวที่ไม่เสถียรได้อย่างไร?
ในตัวเลขมันเป็นสิ่งสำคัญมากที่จะสามารถระบุรูปแบบที่ไม่เสถียรและเพื่อปรับปรุงเสถียรภาพของพวกเขา จะระบุการคำนวณจุดลอยตัวที่ไม่เสถียรได้อย่างไร? ฉันกำลังทำงานกับการจำลองที่ซับซ้อนมากซึ่งมีรูปแบบตัวเลขจำนวนมากทำงานร่วมกันและฉันกำลังมองหาวิธีการระบุส่วนที่อ่อนแอของมัน ฉันกำลังทำงานกับแบบจำลองทางกายภาพที่เกี่ยวข้องกับสมการเชิงอนุพันธ์ มุมมองตานกของกระบวนการโดยรวมคือ: (Preliminary ขั้นตอน) รวบรวมข้อสังเกตทางกายภาพP กำหนดพารามิเตอร์เริ่มต้นของการจำลอง สิ่งนี้ใช้อัลกอริธึมการปรับให้เหมาะสมซึ่งเราเดินเข้าไปในพื้นที่พารามิเตอร์และค้นหาพารามิเตอร์Cเพื่อให้ฟังก์ชั่นข้อผิดพลาดบางอย่างE (F (C), P)ถูกย่อให้เล็กสุดโดยFคือจำนวนพารามิเตอร์ที่ได้รับ เสียบCในเอ็นจิ้นการจำลอง นี่คือโครงร่างออยเลอร์ของ EDP ดังนั้นในแต่ละขั้นตอนเราคำนวณเงื่อนไขที่ขับเคลื่อนไดนามิก (แต่ละอันเป็นฟังก์ชันที่ซับซ้อนอาจมีความไม่แน่นอน) และฟีดออยเลอร์ด้วยเงื่อนไขไดนามิกเหล่านี้เพื่อคำนวณถัดไป สถานะ. สิ่งนี้จะดำเนินต่อไปสำหรับจุดพันเวลา ในตอนท้ายของการจำลองเราคำนวณฟังก์ชั่นProof (S)ของสถานะSสุดท้ายและเปรียบเทียบกับปริมาณที่ต้องการ (P) ซึ่งอนุมานได้จากปริมาณที่สังเกตได้ นี่ไม่ใช่หลักฐานที่เป็นทางการของผลการตรวจสอบความน่าเชื่อถือมากขึ้น นอกจากนี้ฉันยังเห็นหอคอยแห่งการดำเนินงานที่ซับซ้อน (การคำนวณคำศัพท์ไดนามิกภายในโครงการออยเลอร์ภายในหลักฐาน ) และต้องการรับรู้“ ส่วนที่ไม่ดี” และแก้ไขได้ ฉันคาดการณ์ว่าการใช้งานการใช้งานซอฟต์แวร์ของจำนวนจุดลอยตัวที่มีความแม่นยำลดลงจะขยายความไม่แน่นอนของรูปแบบตัวเลขดังนั้นการเปรียบเทียบระหว่างการใช้งานที่แตกต่างกัน นี่เป็นเทคนิคทั่วไปในการตรวจสอบคำถามนี้หรือไม่? เป็นไปได้ไหมที่จะใช้เครื่องเสมือนอย่าง Bochs เพื่อให้ได้สิ่งนี้โดยไม่ต้องเปลี่ยนโปรแกรม? ในการจัดการกับคำถามความมั่นคงอย่างเหมาะสมบางครั้งก็เป็นที่ยอมรับได้ในการกำหนดเป้าหมายอินพุตทั่วไปของกระบวนการเชิงตัวเลขเพื่อให้สามารถปรับได้ดีกับอินพุตนั้นและอาจไม่ค่อยดีกับอินพุตที่ถูกต้อง แต่ไม่น่าเป็นไปได้ ได้รับตัวอย่างของปัจจัยการผลิตโดยทั่วไปก็เป็นไปได้ที่จะสอดแนมผลกลางบางส่วนและเตรียมความพร้อมรายละเอียดทางสถิติสำหรับพวกเขา นี่เป็นเทคนิคทั่วไปในการศึกษาปัญหาด้านความมั่นคงหรือไม่ เครื่องเสมือนมีประโยชน์สำหรับสิ่งนี้หรือไม่?

4
จัดการกับตัวเลขจำนวนมากในภาษาที่ไม่สามารถ?
ฉันพยายามที่จะคิดเกี่ยวกับวิธีที่ฉันจะไปเกี่ยวกับการคำนวณในจำนวนมาก (เพื่อ infinitum - intergers ไม่ลอย) หากโครงสร้างภาษาไม่สามารถจัดการตัวเลขที่มีขนาดใหญ่กว่าค่าที่แน่นอน ฉันแน่ใจว่าฉันไม่ใช่คนแรกและคนสุดท้ายที่ถามคำถามนี้ แต่คำค้นหาที่ฉันใช้ไม่ได้ให้อัลกอริทึมแก่ฉันในการรับมือกับสถานการณ์เหล่านั้น คำแนะนำส่วนใหญ่จะเสนอการเปลี่ยนแปลงภาษาหรือการเปลี่ยนแปลงตัวแปรหรือพูดคุยเกี่ยวกับสิ่งที่ดูเหมือนจะไม่เกี่ยวข้องกับการค้นหาของฉัน ดังนั้นฉันต้องการไกด์เล็กน้อย ฉันจะร่างอัลกอริทึมแบบนี้: กำหนดความยาวสูงสุดของตัวแปรจำนวนเต็มสำหรับภาษา หากตัวเลขมีความยาวมากกว่าครึ่งของความยาวสูงสุดของตัวแปรที่แยกออกเป็นอาเรย์ (ให้ห้องเล่นเล็ก ๆ ) ลำดับ Array [0] = ตัวเลขที่อยู่ทางด้านขวา [n-max] = ตัวเลขที่อยู่ทางด้านซ้ายสุด อดีต Num: 29392023 Array [0]: 23, Array [1]: 20, array [2]: 39, array [3]: 29 เมื่อฉันสร้างความยาวครึ่งหนึ่งของตัวแปรเป็นจุดปิดมาร์คฉันก็สามารถคำนวณหาหนึ่งในสิบส่วนหนึ่งร้อย ฯลฯ วางผ่านเครื่องหมายครึ่งทางเพื่อที่ว่าถ้าความยาวสูงสุดของตัวแปรเท่ากับ 10 หลักจาก 0 ถึง 9999999999 ฉันรู้ว่า โดยครึ่งหนึ่งนั้นถึงห้าหลักทำให้ฉันมีห้องเล่น …

1
ความแม่นยำโดยนัยของฟังก์ชันเลขทศนิยม
ในขณะที่ตรวจสอบการใช้งานฟังก์ชั่นของโปรแกรมเมอร์อื่นเพื่อคำนวณ CDF การแจกแจงแบบปกติฉันได้แนะนำให้แทนที่การใช้งานทั้งหมดด้วยฟังก์ชันในตัวของ Python หรือใช้ SciPy ซึ่งเป็นห้องสมุดวิทยาศาสตร์ทั่วไป โปรแกรมเมอร์อีกชี้ให้เห็นว่าค่าmath.erfc()มิได้scipy.stats.norm.cdf()ให้การค้ำประกันความแม่นยำใด ๆ ในเอกสารของพวกเขา ดังนั้นฉันจึงควรระมัดระวังเกี่ยวกับการเปลี่ยนอัลกอริทึมการประมาณ (ซึ่งนำมาจากแหล่งที่ได้รับการเคารพและมีขอบเขตข้อผิดพลาดที่เป็นเอกสาร ) ความจริงแล้วความคิดที่จะสงสัยความถูกต้องและแม่นยำของฟังก์ชั่นในตัวหรือห้องสมุดไม่เคยข้ามความคิดของฉัน หลังจากที่ทุกคนฉันได้รับการเรียกฟังก์ชั่นเหมือนsin()และsqrt()สำหรับปีโดยไม่ต้องคิดมาก - เหตุผลที่ควรmath.erf()หรือscipy.stats.norm.cdf()จะแตกต่างกันหรือไม่? แต่ตอนนี้ฉันกังวล คำถามของฉันคือ: โดยทั่วไปหากเอกสารไม่มีการกล่าวถึงเป็นพิเศษแสดงว่าฟังก์ชั่นเหล่านี้มีความถูกต้องสมบูรณ์ในตำแหน่งทศนิยมสุดท้ายภายในความแม่นยำที่นำเสนอโดยทศนิยมความแม่นยำสองเท่าของ IEEE หรือไม่? นั่นเป็นเรื่องจริงสำหรับ Python math.erf()หรือ SciPy scipy.stats.norm.cdf()หรือไม่? คุณจะบอกได้อย่างไร นี้หน้าคนสำหรับsin()กล่าวว่า ... ฟังก์ชั่นเหล่านี้อาจสูญเสียความแม่นยำเมื่อข้อโต้แย้งของพวกเขาอยู่ใกล้กับหลาย pi หรืออยู่ห่างจาก 0.0 ทำไมคำเตือนควรมีอยู่เมื่อฟังก์ชันไซน์เป็นคาบและสมมาตร ดูเหมือนว่าจะมีภาระที่ผู้เรียกเข้ารับการป้อนข้อมูลเป็นมาตรฐานเพื่อให้ได้ความแม่นยำสูงสุด ในทางตรงกันข้ามเอกสารของ Mozilla สำหรับMath.sin()บอกว่าไม่มีอะไรเกี่ยวกับความถูกต้องหรือความแม่นยำ นั่นหมายความว่ามันถูกต้องสมบูรณ์หรือเป็น "ความรู้ทั่วไป" ที่Math.sin()จะแม่นยำในบางสถานการณ์ใน JavaScript เช่นที่อื่นหรือไม่
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.