سلام دوستان
راهنمایی برای یک الگوریتم ساده می خواستم/. کسی می تواند در مورد الگوریتم محاسبه سینوس کمکی به من بکند ؟
سلام دوستان
راهنمایی برای یک الگوریتم ساده می خواستم/. کسی می تواند در مورد الگوریتم محاسبه سینوس کمکی به من بکند ؟
سری تیلورش رو پیدا کن راحترین راه برای محاسبه اونه
با استفاده از این سری میتونی سینوس رو پیدا کنی
.........7!/sin(x)=x-x^3/3!+x^5/5!-x^7
اگه زاوییه رو به صورت درجه بگیری باید
x=3.14*d/180
fact(n)
{
if n<=1 return 1
else
return n*fact(n-1)
}
sin(x)
{
sum1=0
sum2=0
for (i=1;i<=10000;i+=4)
sum1+=pow(x,i)/fact(i)
for (i=3;i<=10000;i+=4)
sum2+=pow(x,i)/fact(i)
return (sum1-sum2)
}
این سری همچین روشه خوبی برایه محاسبه نیست، کسی مقایسه کرده تا چند ترم باید جمع کنه که مثلاً تا ۴ رقم اعشار درست باشه؟
C:\masm32\fpulib\FpuSin.asm
CPU های اینتل Op-Code لازم برای محاسبه سینوس رو دارن،
میتونی به سورس یونیت دلفی که سینوس رو محاسبه میکنه مراجعه کنی.
افشین جان مورد سوال الگوریتمه!!!راهنمایی برای یک الگوریتم ساده می خواستم
سلام من هم یکم روش فکر کردم اما به نظرم سورس cpu زیاد فکر نکنم عملی باشه!
CPU(1 نرم افزار نیست که سورس داشته باشه؛سورس cpu زیاد فکر نکنم عملی باشه!
2) در بسیاری از موارد، پیاده سازی سخت افزاری سریعتر و گاها کم هزینه تر از پیاده سازی نرم افزاری به جواب میرسه
http://www.dspguru.com/info/faqs/cordic.htm
از این روش بهتر پیدا کردید لطفاً اطلاع بدید.
این لینک را قبلاً هم فرستاده بودم، دقیقاً همین سوال را یکی پرسیده بود ولی فکر کنم یکی پاکش کرده.
fact(n)
{
if n<=1 return 1
else
return n*fact(n-1)
}
sin(x)
{
sum1=0
sum2=0
for (i=1;i<=10000;i+=4)
sum1+=pow(x,i)/fact(i)
for (i=3;i<=10000;i+=4)
sum2+=pow(x,i)/fact(i)
return (sum1-sum2)
}