محاسبه‌ی سینوس ایکس

بسم الله الرحمن الرحیم

امروز یکی از دوستام براش سوال پیش اومده بود که چجوری \sin x رو کامپیوتر میتونه حساب بکنه، برای همین تصمیم گرفتم توی این بلاگ توضیحی بدم از یکی از روش‌های محاسبه‌ی سینوس/کسینوس و …

سری مکلورن

طبق این سری، می‌تونیم هر تابع رو به شکل یک بینهایت جمله‌ای به شکل زیر بنویسیم:

f(x) = \sum_{i = 0}^{\infty} { {f^{(k)}(0) \over k!} \times x^k} = f(0) + {f'(0) \over 1!} x + {f''(0) \over 2!} x^2 + {f'''(0) \over 3!} x^3 + ...

خوب، حالا اگه بیایم اینو برای سینوس بنویسیم به این می‌رسیم:

sin(x) = {x^1 \over 1!} - {x^3 \over 3!} + {x^5 \over 5!} - {x^7 \over 7!} + ...

که این چیز خوبی برای کد کردن هست :-” یعنی اگه مثلا ۱۰ تا جمله‌ی اول این رو باهم جمع بزنیم، با تقریب خوبی تونستیم مقدار سینوس رو حساب کنیم.

و کدش تقریبا میشه چنین چیزی:

// In the name of GOD
#include <iostream>
#include <iomanip>

using namespace std;

long double sin(long double x) {
	long double res = 0;
	long double pw = x;
	long double fac = 1;
	long double sgn = 1;
	for(int i = 0; i < 50; i++) {
		res += sgn*pw/fac;
		sgn *= -1;
		pw *= x*x;
		fac *= 2.0*i+2.0;
		fac *= 2.0*i+3.0;
	}
	return res;
}

int main(){
	long double x;
	cin>>x;
	cout<<setprecision(5)<<fixed;
	cout<<sin(x);
}

اطلاعات بیشتر:http://blogs.ubc.ca/infiniteseriesmodule/units/unit-3-power-series/taylor-series/maclaurin-expansion-of-sinx/

(13)(0)

1 دیدگاه برای “محاسبه‌ی سینوس ایکس”

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *