برنامه : محاسبه ی 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); } |