
27-11-2006, 23:54
|
 |
|
|
חבר מתאריך: 15.08.06
הודעות: 465
|
|
פיתוח טיילור לsinx:
קוד:
sigma from n=0 to infinite of ((-1)^n * x^(2n+1)) / (2n+1)!
כלומר, פשוט תעברי מלולאה החל מn=0 עד מספר accuracuy, ככל שתגדילי את accuracy, הדיוק יהיה גדול יותר -
ובכל פעם תוסיפי למשתנה resolt את
((-1)^n * x^(2n+1)) / (2n+1)!
כך:
קוד PHP:
#include <iostream> double pow(float a, int b){ double result=1; for (int i=0; i<b; i++) result *= a; return result; }
double atzeret(int a){ double result = 1; for (int i=2; i<=a; i++) result=result*i; return result; }
int sign(int a){ if (a%2) return -1; else return 1; }
double sin(double x, int accuracy){ double result=0; for (int i=0; i<=accuracy;i++) { result += (sign(i)*pow(x,2*i+1))/atzeret(2*i+1); } return result; }
int main(){ int i; cout << sin(3.0,20); cin >> i; }
אותו דבר בדיוק לגבי קוסינוס, רק כמובן פיתוח טיילור שלו שונה -
cosx = sigma n=0 to infinite of ..((-1)^n * x^(2n)) / (2n)!
אז תשני את זה בתכנית, וזהו...
אם את רוצה שאני אכתוב לא רק איך להשתמש בזה למקרה שלך, אלא גם את הוכחת נוסחאת טיילור, והפיתוחים עצמם של הפונקציות הטריגונומטריות (מה שאני בספק שאת צריכה) תגידי, ואני אמצא שימוש לשם שינוי (כעזרה) באינפי שחשבתי שלעולם לא אשתמש בו חוץ מבבדיחות מתמטיקה
_____________________________________
Any sufficiently advanced bug is indistinguishable from a feature
|