20-03-2005, 02:51
|
|
|
חבר מתאריך: 01.08.02
הודעות: 8,959
|
|
הצעה
בהתחשב שמדובר על רמה תיכונית במתמטיקה, אני מציע שתנסה את הפתרון הבא:
1. מצא את החזקה של 2 הגדולה ביותר שריבוע שלה קטן מהמספר שאתה מחפש (רמז, זה די קל). נסמנה A.
2. הכפל אותה בשתיים, נסמן מספר זה ב B.
3. בחר את נק האמצע בין A ל- B, נסמנה X
4. העלה את X בריבוע.
5. בדוק אם הריבוע של X גדול מהמספר שאתה מחפש.
5.1 אם כן - קבע: X=>B
5.2 אם לא - קבע: X=>A
5.3 אם יש שיוויון (ייתכן ותנאי השיוויון שלך יצטרך לכלול סטייה מסויימת, עד כדי הדיוק של סוג המשתנה בו אתה משתמש, תלוי גם אם מדובר ב floating point או fixed point). סיים - החזר X.
6. חזור ל- 3.
קח בחשבון שיש אלגוריתמים יותר טובים למציאות שורש, אבל לא ביותר מדי. האלגוריתם שהצעתי טוב לכל סוג משתנה בעל דיוק סופי שתבחר ומתכנס אליו בקצב אקספוננציאלי (שזה נחשב מהיר מבחינת ניתוח יעילות). ניתן, על ידי קביעת מספר חזרות קבוע להעריך את גודל השגיאה כקטן מגודל נתון ועל ידי כך לאפשר לאלגוריתם לרוץ בזמן נתון (כמובן תוך הקרבה של דיוק).
_____________________________________
--
גל דיסקין (gal diskin)
עצות והמלצות:
נערך לאחרונה ע"י גל דיסקין בתאריך 20-03-2005 בשעה 02:59.
סיבה: שגיאת כתיב
|