عضو شوید



:: فراموشی رمز عبور؟

عضویت سریع

نام کاربری :
رمز عبور :
موبایل :
ایمیل :
نام اصلی :
تاریخ : دوشنبه 19 خرداد 1393
بازدید : 4259
نویسنده : hadi71

برنامه : محاسبه ی log و Ln اعداد.  

الگوریتم:

برای محاسبه لگاریتم و تابع نمایی از تعریف ریاضی زیر استفاده می کنیم

 

و درنهایت

 

برای محاسبه ی این دنباله به تابع محاسبه توان که قبلا نوشتیم نیاز داریم.

.با نوشتن کد زیر در تابع Ln کار محاسبه ی دنباله رو انجام میدیم

 

2*( (1 / temp )* (power(t,2*n+1)) )    که  temp =(2*n+1) ,t =(z-1)/(z+1)

دستور بالا تک جمله های دنباله ی بالا را به ترتیب از n=0 تا .... محاسبه و آنها را در متغیر result جمع می کند.

به این ترتیب Ln عدد محاسبه می شود و در نهایت در تابع Log با استفاده از فرمول ، لگاریتم را محاسبه می کنیم.

 

* حاصل جملات دنباله ی فوق به ازی n های بزرگتر ، کوچکتر می شود لذا با توجه به  شرط حلقه ی While ،زمانی از حلقه ی While خارج می شیم که اختلاف جمله ی فعلی از جمله ی قبلی به حداقل که رسیده باشه.در اینجه یک ضربدر ده به توان منفی 11.(هرچه این مقدار کوچکتر باشد حاصل دقیق تر هست.)

 

برنامه ی محاسبه لگاریتم و تابع نمایی به زبان ++c

double power(double x, int p);//x^p

double ln(double z)
{
   double t =(z-1)/(z+1);
   double result=0,oldResult=1;
   int n=0;
   double temp=0;
   while((oldResult < result?result - oldResult:oldResult -   result) > 0.00000000001)
   {
           oldResult = result;

           temp =(2*n+1);
           result =result + 2*( (1 / temp )* (power(t,2*n+1)) );

           n=n+1;
   }
return result;

}

 


double log(double x,double a)
{
       return ln(x)/ln(a);
}

 

  برنامه ی محاسبه لگاریتم و تابع نمایی به زبان #c
double power(double x, int p);//x^p

double ln(double z)
{
   double t = (z - 1) / (z + 1);
   double result = 0, oldResult = 1;
   int n = 0;
   double temp = 0;

   while ((oldResult < result ? result - oldResult : oldResult - result) > 0.000000000000001)
   {
             oldResult = result;
             temp = (2 * n + 1);

             result = result + 2 * ((1 / temp) * (power(t, 2 * n + 1)));

             n = n + 1;
   }
return result;

}

 

double log(double x, double a)
{
     return ln(x) / ln(a);
}


مطالب مرتبط با این پست :

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


من هادی مومنی دانشجوی کارشناسی نرم افزار کامپیوتر و به زبان برنامه نویسی و طراحی صفحات وب تسلط دارم خوشحال میشم کمکتون کنم لطفا نظراتتون در مورد بهتر شدن این وبلاگ بگید.

RSS

Powered By
loxblog.Com

ورود کاربران

خوش آمدید! لطفا وارد حساب خود شوید

رمز عبور را فراموش کرده‌اید؟
حساب کاربری ندارید؟

فراموشی رمز عبور

نام کاربری یا ایمیل خود را وارد کنید

یا

ثبت نام کاربران

در چند ثانیه حساب کاربری خود را بسازید

قبلا ثبت نام کرده‌اید؟

نظرات کاربران

دیدگاه خود را با ما در میان بگذارید