עבור לתוכן

צריך עזרה בבניית אלגוריתם

Featured Replies

פורסם

אהלן

נראה לי שרובכם מכירים את התוכנה SUPER PI היא מחשבת ספרות אחרי הנקודה.... יעני אם אתה אומר לך 1M אז היא תחשב מיליון ספרות אחרי הנקודה

עכשיו אני חשבתי על תוכנה דומה רק שבמקום PI זה יהיה e

e הוא קבוע שהוא בערך 2.74 אבל הוא אירציולי כמו PI

e=lim(1+1/n)^n

אני די בטוח בקשר לנווסחא כאילו המורה הפרטית שלי אמרה לי אותה

איך אני עושה אלגוריתם שיחשב לי מיליון ספרות אחרי הנקודה למספר e?

פורסם

דבר 1

הנוסחא היא

e= lim

n->inf

השאר נכון.

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

(אגב יש עוד דרך לחשב אותו בעזרת טורים סימגא(1/k!) שK הולך מ0 לinf

פורסם
  • מחבר

יעני חישוב של מיליון ספרות אחרי הנקודה יהיה מהיר מדי כדי שזה יהיה בנצ'מרק טוב למעבד?

חח כן שכחתי לציין ש-n שואף לאינסוף

פורסם

/*

* exp1.c

* This program approximates the natural base (e).

*/

#include <stdio.h>

int main ()

{

  int      n_iters;        /* Number of approximations to perform. */

  int      n;              /* Current iteration index. */

  double   base;

  double   curr_app;       /* The current approximation. */

  int      i;

  /* Read the number of approximation iterations to perform. */

  printf ("Please enter the number of iterations: ");

  scanf ("%d", &n_iters);

  /* Perform the approximation iterations. */

  for (n = 1; n <= n_iters; n++)

  {

    /* Compute the cuurent approximation:

     *

     *                n

     *   e ~ (1 + 1/n)

     */

    base = 1 + 1 / (double)n;     /* We must cast, to get a result different

     than 1 (1 + 1.0 / n will also work). */

    /* Raise the base to the n'th power. */

    curr_app = 1;

    for (i = 0; i < n; i++)

      curr_app *= base;

    /* Print the current approximation.*/

    printf ("Iteration no. %d, e ~ %g\n", n, curr_app);

  }

  return (0);

}

איך עושים יישור לימין ?

פורסם
  • מחבר

/*
* exp1.c
* This program approximates the natural base (e).
*/

#include <stdio.h>

int main ()
{
int n_iters; /* Number of approximations to perform. */
int n; /* Current iteration index. */
double base;
double curr_app; /* The current approximation. */
int i;

/* Read the number of approximation iterations to perform. */
printf ("Please enter the number of iterations: ");
scanf ("%d", &n_iters);

/* Perform the approximation iterations. */
for (n = 1; n <= n_iters; n++)
{
/* Compute the cuurent approximation:
*
* n
* e ~ (1 + 1/n)
*/
base = 1 + 1 / (double)n; /* We must cast, to get a result different
than 1 (1 + 1.0 / n will also work). */

/* Raise the base to the n'th power. */
curr_app = 1;
for (i = 0; i < n; i++)
curr_app *= base;

/* Print the current approximation.*/
printf ("Iteration no. %d, e ~ %g\n", n, curr_app);
}

return (0);
}

איך עושים יישור לימין ?

תסמן את הקוד ואז איפה שהמיילים יש כוכבית

פורסם

הממממ, לא הבנתי שורה אחת מכול הקוד אבל לא משנה

(יש לך לחצן למעלה שעושה ישור לימין)

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

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

בהצלחה :s05:

פורסם
  • מחבר

מכניסים את זה לסטרינג.....

גמני לא הבנתי כלום מהקוד....

פורסם

תגידו אתם עושים צחוק או מה ? אתה מכניס מספר איטרציות והתוכנית מקרבת את הערך של e .

פורסם

זה לא כל כך פשוט....

הוא רוצה לחשב ערך של E עד מיליון מיספרים אחרי הנקודה.....המחשב לא מחשב עד מיליון....אף אחד לא יקרב שום דבר בשבילך...

פורסם
  • מחבר

בטח שהמחב יכול עד מיליון ספרות הוא יכול גם עד 32M ספרות

בסופר PI לדוגמא..

פורסם

הוא עושה את זה טיפה אחרת

הוא אף פעם לא מכניס את כל המספר למשתנה אחד (שכפי שנאמר אין משתנה כל כך גדול) , הוא פשוט מפרק את המספר ורק מדפיס כל פעם את הסיפרה שהוא מצא

פורסם
  • מחבר

האמת הוא גם לא מדפיס את המספר.. רק את הזמן

כלומר הוא יכול לזרוק ספרות שהוא כבר ספר...

פורסם

SUPERPI מוציא קובץ עם התוצאה

פורסם

לעשות תוכנית שמחשבת את E לא יתהייה כל כך אפקטיבית(חוץ מתוכנת בנצמרק) מכיוון שאתה יכול פשוט להציב N מספיק גדול כדי להגיע לקירוב מספק. אני ממליץ לכם לקרוא קצת על טורי טיילור ומקלורן(ועל מבחן לייבניץ) כדי לדעת יותר על קירובים. משתמשים בזה בעיקר באינטגרלים מסויימים, שאתה לא יודע למצוא את הפונ הקדומה שלהם ולחסר, אבל בקלות אתה יכול למצוא קירובים לE(יותר נכון E בחזקת אחד). מבחן לייבניץ במקרה הנ"ל יתן לך פיתרון. כל פעם אתה מבקש ממנו דיוק עד הספרה הNית(0.5*10-n(, והוא נותן לך בערך את המספר עד אותה ספרה(כמובן שיכולים להיות גם כמה ספרות אחרי שלא קשורות לכלום, אתה פשוט לוקח את הספרה שביקשת).

פורסם

גם לPI יש טור דומה, הרעיון הוא שצריך המון איטרציות פלואטינג פוינט כדי לחשב כל כך הרבה מספרים אחרי הנקודה ולכן הוא משמש כבנץ' מארק טוב

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים