السلام عليكم و رحمة الله و بركاته
فكرت كثيرا عن كيفية تضمين الدوال المثليه مثل sin , cos and tan و ايضا دالة الجذر التربيعى و الأسس داخل الـ c++
بالنسبه للدوال المثلثيه و خصوصا الداله sine
بحثت على الإنترنت فوجدت من يقول انه بإستخدام الــ lookup table او بإستخدام for-loop
و من الأكواد التى وجدتها للداله sin التالى
double mysin1(double x)
{
double numerator = x;
double denominator = 1.0;
double sign = 1.0;
double sin = 0;
// terms below define the number of terms you want
int terms=10;
for ( int i = 1; i <= terms; i++ )
{
sin += numerator / denominator * sign;
numerator *= x * x;
denominator *= i*2 * (i*2+1);
sign *= -1;
}
return sin;
}
عندما جربته لم يعطى نتائج سليمه مع كل الزاويا، لذا حاولت تضمينه بشكل اخر و هو كتابة داله للداله cos و من خلالها استدعاء الدالة sin بكود اخر و هو التالى
ملحوظه : (لمن لا يعرف) الدوال المثلثيه يمكن تضمينها كالتالى
sin (theta) = (PI / 2) - theta
cos(theta) = (PI / 2) - theta
const double PI = 3.14159265358979323846;
double mycos1(double x)
{
double numerator = 1.0;
double denominator = 1.0;
double sign = 1.0;
double cos = 0;
// terms below define the number of terms you want
int terms = 10;
for ( int i = 1; i <= terms; i++ )
{
cos += numerator / denominator * sign;
sign *= -1;
numerator *= x * x;
denominator *= (i*2-1) * i*2;
}
return cos;
}
double mysin2(double x)
{
return mycos1((PI/2) - x);
}
بالنسبه للداله mysin2 اعطت نتائج سليمه اما الداله mycos فليست كل نتائجها سليمه، لذا قمت بتضمينها مره اخرى بإستخدام المعاداله الذكوره بالأعلى كالتالى
double mycos2(double x)
{
return mysin1((PI/2) - x);
}
هذه المره اعطت نتائج سليمه، ما ادهشنى هو ان كل من الدالتين mysin1 و mycos1 ليست كل نتائجهم سليمه فى حين ان الدالتين mysin2 و mycos2 يعطوا نتائج سليمه.
طبعا لا اعتقد ان الدالتين sinf و cosf الموجودين فى math.h تم تضمينهم على مرحلتين لذا فسؤالى الأول هو : ما هو الكود المستخدم للدالتين sin , cos?
سؤالى الثانى متعلق بدالة الأس و الجذر التربيعى
اما بالنسبه لدالة الأس فهى سهله
double Power(int pwr,double number)
{
double sum=1;
for(int i=1; i<=pwr; i++)
sum *= number;
}
اما بالنسبه لدالة الجذر التربيعى فقد وجدت بعض الطرق اليدويه للحصول على الجذر التربيعى و لكنى لم استطع تطبيق اى منها. لذا فسؤالى الثانى هو: ما هو الكود المستخدم لدالة الجذر التربيعى؟
و الله ولى التوفيق