ווטסאפ - לינוקס, BSD, קוד פתוח ותוכנה חופשית בעברית. Whatsup - Linux, BSD, open source and free software in Hebrew

 
 
  כניסת חברים · רישום · שכחתי סיסמה  
tux the penguin
תגובה לנושא
צפיה בנושא הבא Printable version התחבר כדי לבדוק הודעות פרטיות צפיה בנושא הקודם
MeTHאורח · ·
 

הודעה פורסם: 11/03/2019 - 14:26
נושא ההודעה: מספרים אי רציונליים

מספר רציונלי הוא מספר, אשר ניתן להצגה כמנה של מספרים שלמים, הנקראים מונה ומכנה. ויקיפדיה.
שורש 2 אינו רציונלי ושווה ל-1.41421356237

גם אותו אפשר להציג בתור 1.41421356237*2 לחלק ל-2.

2.82842712475
_____________
2

אז למה הוא לא נחשב רציונלי?
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 11/03/2019 - 14:51
נושא ההודעה:

2.82 הוא לא שלם
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 11/03/2019 - 14:58
נושא ההודעה:

וגם 1.41421356237 הוא לא השורש של 2
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 11/03/2019 - 15:00
נושא ההודעה:

Anonymous :
וגם 1.41421356237 הוא לא השורש של 2


חלק מהנושא של מספר אי רציונאלי שלא ניתן לייצג אותו בתור שבר עשרוני סופי.
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 11/03/2019 - 15:14
נושא ההודעה:

צפה כאן:
https://www.youtube.com/watch?v=tLOHJ4cOs_g&index=14&list=PLW3u28VuDAHJoSyPMyJN5WFz-S8zmcYES
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 11/03/2019 - 15:22
נושא ההודעה:

וזה אפילו חשוב יותר:
https://www.youtube.com/watch?v=EThe6pyZuoI
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 12/03/2019 - 09:26
נושא ההודעה: Re: מספרים אי רציונליים

MeTH :
מספר רציונלי הוא מספר, אשר ניתן להצגה כמנה של מספרים שלמים, הנקראים מונה ומכנה. ויקיפדיה.
שורש 2 אינו רציונלי ושווה ל-1.41421356237

גם אותו אפשר להציג בתור 1.41421356237*2 לחלק ל-2.

2.82842712475
_____________
2

אז למה הוא לא נחשב רציונלי?


2.82 הוא לא מספר שלם.
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 12/03/2019 - 09:53
נושא ההודעה:

Anonymous :
וגם 1.41421356237 הוא לא השורש של 2

תבדוק במחשבון
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 12/03/2019 - 09:57
נושא ההודעה:

ציטוט:

מספר רציונלי הוא מספר, אשר ניתן להצגה כמנה של מספרים שלמים,


לא הצגת כמנה של שני מספרים שלמים לכן לא רציונאלי. אפשר להוכיח כי לא ניתן להציג את שורש 2 כמנה של שני מספרים שלמים.
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 12/03/2019 - 10:36
נושא ההודעה:

Anonymous :
Anonymous :
וגם 1.41421356237 הוא לא השורש של 2

תבדוק במחשבון

בדקתי, זה קרוב אבל זה לא 2, אולי המחשבון שלך מעגל את התוצאה.

אם אפשר היה לייצג את שורש 2 בעזרת מספר סופי של ספרות אחרי הנקודה אז בהכרח הוא גם היה מספר רציונלי.
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 12/03/2019 - 10:41
נושא ההודעה:

https://www.wolframalpha.com/input/?i=1.41421356237%5E2
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 12/03/2019 - 19:07
נושא ההודעה:

מספר אי רציונלי לא ניתן להצגה כמספר עשרוני סופי. זאת אומרת שיש לו מספר אינסופי של ספרות אחרי הנקודה העשרונית והן לא מחזוריות בשום אופן שהוא.
למספר רציונלי לעומת זאת יש הצגה אחת ויחידה בהצגה עשרונית. או שההצגה סופית, לדוגמא 3.0, או שההצגה אינסופית אבל היא מחזורית, לדוגמא: 0.999999999999999999=1 כאשר ה9 נמשך עד לאינסוף.
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
עמיתאורח · ·
 

הודעה פורסם: 13/03/2019 - 08:50
נושא ההודעה:

Anonymous :
למספר רציונלי לעומת זאת יש הצגה אחת ויחידה בהצגה עשרונית. או שההצגה סופית, לדוגמא 3.0, או שההצגה אינסופית אבל היא מחזורית, לדוגמא: 0.999999999999999999=1 כאשר ה9 נמשך עד לאינסוף.

סתרת את עצמך בעניין יחידות ההצגה של מספר רציונלי :-) מספר רציונלי ניתן להציג או כמספר עשרוני סופי (למשל 0.25, 42) או כמספר עשרוני אינסופי אבל מחזורי. למשל, שליש נכתב כ
קוד:
 0.3333...

כשאר הכוונה היא שהספרה 3 חוזרת על עצמה אינסוף פעמים, או, למשל 123 חלקי 999 ייכתב כ
קוד:
0.123123123...

כאשר הרצף 123 יחזור אינסוף פעמים.
אבל למספרים מסויימים יש שתי הצגות - למשל 1, כמו בדוגמה שנתת. 1 בייצוג עשרוני הוא 1, אבל גם
קוד:
0.99999....

כך של-1 יש שתי הצגות עשרוניות (ונתעלם מכל ההצגות של 1.0, 1.00, או כל מספר של אפסים). כמובן שזה נכון לאינסוף מספרים אחרים - כל השלמים למעשה. 2 הוא 2, אבל גם
קוד:
1.9999...
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 13/03/2019 - 09:52
נושא ההודעה:

עמית אתה צודק. הניסוח שלי היה בעייתי אבל התכוונתי להגיד מה שאתה כתבת. פעם ראשונה שנתקלתי במושג הזה (מספרים רציונליים) לקח לי קצת זמן לעכל את זה. זכרתי שזה מה שעזר לי.
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
צפריראורח · ·
 

הודעה פורסם: 13/03/2019 - 09:53
נושא ההודעה:

Anonymous :
Anonymous :
וגם 1.41421356237 הוא לא השורש של 2

תבדוק במחשבון

כדי קצת לחזור לנושא: בדקתי:
קוד:

$ python
Python 2.7.16rc1 (default, Feb 18 2019, 11:05:09)
[GCC 8.2.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 1.41421356237 ** 2
1.9999999999912461
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 15/03/2019 - 18:16
נושא ההודעה:

הטענה נכונה, כלומר המספר הנתון אינו שורש 2, אך הבדיקה שלך לא נכונה, כי התוכנה בה אתה משתמש מחזירה תוצאה לא נכונה.

הריבוע של 1.41421356237 אינו 1.9999999999912461 קל לראות את זה, אם מכפילים גםאת הריבוע של 1.41421356237 וגם את 1.9999999999912461 ב-10 בחזקת 22. בשני המקרים מקבלים מספר שלם, אך בראשון הוא שקול ל-9 מודולו 10, ובשני הוא שקול ל-0 מודולו 10.

קוד:

15:00:23:~$ bc
bc 1.07.1
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006, 2008, 2012-2017 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
scale=50
1.41421356237 * 1.41421356237
1.9999999999912458800169
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
עמיתאורח · ·
 

הודעה פורסם: 16/03/2019 - 17:41
נושא ההודעה:

ציטוט:
הטענה נכונה, כלומר המספר הנתון אינו שורש 2, אך הבדיקה שלך לא נכונה, כי התוכנה בה אתה משתמש מחזירה תוצאה לא נכונה.

כמו שכבר נאמר כאן, שורש 2 הוא מספר אי-רציונלי ולכן לא ניתן להציג אותו כמספר עשרוני בעל מספר סופי של ספרות. אין טעם ואין משמעות לכל הבדיקות שמנסות לראות אם מספר עשרוני (סופי) מסויים הוא-הוא השורש של 2 על ידי העלאתו בריבוע - זה לא יכול להוכיח דבר. גם אם נראה שמקבלים תוצאה שהיא 2, זה רק בגלל המגבלות של ייצוג מספרים בתכנה.

כבר היוונים לפני 2000 שנה ידעו להוכיח ששורש 2 הוא אי-רציונלי, ועדיף לנסות ללמוד את ההוכחה במקום להוכיח טענות באופן נסיוני :-).

ציטוט:
הריבוע של 1.41421356237 אינו 1.9999999999912461 קל לראות את זה, אם מכפילים גםאת הריבוע של 1.41421356237 וגם את 1.9999999999912461 ב-10 בחזקת 22. בשני המקרים מקבלים מספר שלם, אך בראשון הוא שקול ל-9 מודולו 10, ובשני הוא שקול ל-0 מודולו 10.

לא צריך להסתבך. אפשר מייד לראות שאם מעלים בריבוע את המספר הזה (1.41421356237) הספרה הימנית ביותר של התוצאה תהיה 9 (כי 7*7=49).
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 16/03/2019 - 19:24
נושא ההודעה:

עמית :

לא צריך להסתבך. אפשר מייד לראות שאם מעלים בריבוע את המספר הזה (1.41421356237) הספרה הימנית ביותר של התוצאה תהיה 9 (כי 7*7=49).

דווקא כן, הרי
לפי
https://www.wolframalpha.com/input/?i=1.41421356237%5E2
התוצאה היא
1.9999999999912458800169
ששונה מהתוצאה
1.9999999999912461
ביותר משגיאת עיגול (ככל הנראה עקב כך שפייתון משתמש ב-floating point שיכול לייצג מספר סופי של ערכים).

זה לא קורה למשל במקרה של
קוד:
>>> 1.11111111111111111**2
1.234567901234568

הוא מתעגל נכון ביחס ל-1.2345679012345678987654320987654321
אבל כמובן 1 בריבוע הוא 1 ולא 8

מצד שני, ברור שהנקודה הזו לא רלוונטית לדיון Smile
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 16/03/2019 - 21:10
נושא ההודעה:

ההוכחה בסוף אבל כל הקליפ מענין.

https://www.youtube.com/watch?v=5sKah3pJnHI
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
עמיתאורח · ·
 

הודעה פורסם: 17/03/2019 - 09:18
נושא ההודעה:

ציטוט:
דווקא כן, הרי לפי
https://www.wolframalpha.com/input/?i=1.41421356237%5E2
התוצאה היא
1.9999999999912458800169
ששונה מהתוצאה
1.9999999999912461
ביותר משגיאת עיגול (ככל הנראה עקב כך שפייתון משתמש ב-floating point שיכול לייצג מספר סופי של ערכים).

האמת שלא כל כך הבנתי את הטענה שלך, אבל כמה מילים לגבי פייתון. מספר floating point בפייתון מיוצג על ידי 64 ביט (או יותר במדוייק, לגודל של double של C במערכת). זה אומר שבייצוג דצימלי יש כ-15 עד 17 ספרות, ובכל מקרה הספרה האחרונה שנחשבת לנכונה היא ה-15.

כמו כן, מאחר והייצוג הפנימי של מספרי floating point הוא בינארי, כשמגדירים מספר עשרוני, למשל
קוד:
x = 0.1

הערך האמתי של x יהיה שונה כי לא ניתן לייצג את 0.1 בצורה בינארית, ולכן הייצוג הפנימי יהיה קרוב מאד ל-0.1 אבל לא בדיוק [המחשה בהמשך].

הפיתרון לחישוב מדוייקים אבסולוטית בפייתון הוא להשתמש במודול decimal שמאפשר לייצג בצורה מדוייקת ומושלמת כל מספר עשרוני בכל רמה של precision (ברירת המחדל של המודול היא 28, אבל ניתן לשנות). הנה, למשל, דוגמת קוד לחישובים שערכת:
קוד:
In [1]: import decimal
In [2]: decimal.getcontext().prec = 100
In [3]: d = decimal.Decimal('1.41421356237')
In [4]: d * d
Out[4]: Decimal('1.9999999999912458800169')

הדיוק של ברירת המחדל (28 ספרות דצימליות) מספיק, אבל הראיתי איך לשנות אותו לצורך הדגמה.

לגבי הערך האמתי של floating point שמוגדר כ-0.1:
קוד:

In [12]: x = 0.1 # floating point
In [13]: decimal.Decimal(x)
Out[13]: Decimal('0.1000000000000000055511151231257827021181583404541015625')


הערך שמראה ה-Decimal משקף את הערך האמתי של x במערכת (לפחות את התרגום של הערך הבינארי של x לייצוג דצימלי).
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
צפריראורח · ·
 

הודעה פורסם: 17/03/2019 - 12:12
נושא ההודעה:

הבהרה: מישהו אמר לו לבדוק במחשבון. בדקתי במחשבון.
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
הצגת הודעות מלפני:     
מעבר אל:  
כל הזמנים הם GMT + 2 שעות
תגובה לנושא
צפיה בנושא הבא Printable version התחבר כדי לבדוק הודעות פרטיות צפיה בנושא הקודם
PNphpBB2 © 2003-2004 

תוכן הדיון

  1. אורח [MeTH]
  2. אורח
  3. אורח
  4. אורח
  5. אורח
  6. אורח
  7. אורח
  8. אורח
  9. אורח
  10. אורח
  11. אורח
  12. אורח
  13. אורח [עמית]
  14. אורח
  15. אורח [צפריר]
  16. אורח
  17. אורח [עמית]
  18. אורח
  19. אורח
  20. אורח [עמית]
  21. אורח [צפריר]