Главная
Блог разработчиков phpBB
 
+ 17 предустановленных модов
+ SEO-оптимизация форума
+ авторизация через соц. сети
+ защита от спама

Самый настоящий логарифм

Anna | 24.06.2014 | нет комментариев

Вдохновившись постом про вычисление pi, решил вычислить сходственным образом число e. По пути получилась функция естественного логарифма.

image

Собственно,

#include <iostream>

#define I r=
#define l ;
#define o
#define x if(1 (d*2)*(1/(__*2))<=k)d  ;
#define e p =d;d=1;
#define h _  ;
#define s __  ;

double ln(double k){double p=0,n,y,r,d,_=0,__=0;
I 3.30 l o o o o o o
I 3.25 l o o o o o o
I 3.20 l o o o o o o
I 3.15 l o o o o o o
I 3.10 l o o o o o o
I 3.05 l o o o o o o
I 3.00 l o o o o o o
I 2.95 l o o o o o o
I 2.90 l o o o o o o
I 2.85 l o o o o o o
I 2.80 l o o o o o o
I 2.75 l o o o o o o o
I 2.70 l o o o o o o o
I 2.65 l o o o o o o o
I 2.60 l o o o o o o o 
I 2.55 l o o o o o o o
I 2.50 l o o o o o o o
I 2.45 l o o o o o o o
I 2.40 l o o o o o o o o
I 2.35 l o o o o o o o o 
I 2.30 l o o o o o o o o
I 2.25 l o o o o o o o o
I 2.20 l o o o o o o o o
I 2.15 l o o o o o o o o
I 2.10 l o o o o o o o o
I 2.05 l o o o o o o o o
I 2.00 l o o o o o o o o
I 1.95 l o o o o o o o o o
I 1.90 l o o o o o o o o o
I 1.85 l o o o o o o o o o
I 1.80 l o o o o o o o o o
I 1.75 l o o o o o o o o o
I 1.70 l o o o o o o o o o 
I 1.65 l o o o o o o o o o
I 1.60 l o o o o o o o o o
I 1.55 l o o o o o o o o o o
I 1.50 l o o o o o o o o o o
I 1.45 l o o o o o o o o o o
I 1.40 l o o o o o o o o o o
I 1.35 l o o o o o o o o o o o
I 1.30 l o o o o o o o o o o o
I 1.25 l o o o o o o o o o o o
I 1.20 l o o o o o o o o o o o o
I 1.15 l o o o o o o o o o o o o
I 1.10 l o o o o o o o o o o o o
I 1.05 l o o s s s s s s s s s s o
I 1.00 l o o h h h h h h h h h h  o
I 0.95 l o o h h h h h h h h h h e o
I 0.90 l o o h h h h h h h h h h e  o
I 0.85 l o o h h h h h h h h h h e x o
I 0.80 l o o h h h h h h h h h h e x x o
I 0.75 l o o h h h h h h h h h h e x x x o
I 0.70 l o o h h h h h h h h h h e x x x x o
I 0.65 l o o h h h h h h h h h h e x x x x x o
I 0.60 l o o h h h h h h h h h h e x x x x x x o
I 0.55 l o o h h h h h h h h h h e x x x x x x x x o
I 0.50 l o o h h h h h h h h h h e x x x x x x x x x x o
I 0.45 l o o h h h h h h h h h h e x x x x x x x x x x x x x x o
I 0.40 l o o h h h h h h h h h h e x x x x x x x x x x x x x x x x x o
I 0.35 l o o h h h h h h h h h h e x x x x x x x x x x x x x x x x x x x x x x o
I 0.30 l o o h h h h h h h h h h e x x x x x x x x x x x x x x x x x x x x x x x x x x x o
I 0.25 l o o h h h h h h h h h h e x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
I 0.20 l o o h h h h h h h h h h e x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
I 0.15 l o o h h h h h h h h h h e x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
I 0.10 l o o h h h h h h h h h h e x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x e return p/_;
//          0                    1                    2                    3                    4                    5
}

Правило примитивен — настоящий логарифм от a есть площадь под графиком 1/x от единицы до a.

image

Соответственно, чем вернее нарисован график, тем вернее будут вычисления. Немножко о построении графика. Символами s обозначается единичный отрезок, h — квадрат единичной площади, e — функция f(x)=1, x — площадь под графиком 1/x на отрезке (1, inf).
Имея функцию естественного логарифма и зная, что ln(e)=1 обнаружить сейчас e перебором не составляет труда.

for(double i = 0; i <= 3; i  = 0.01)
	if (ln(i) > 0.98)
	{
		std::cout << i << std::endl;
		break;
	}

Некоторые итоги:

Выражение Значение Правдивое значение
ln(2) 0.721053 0.69315
ln(2.7) 1 0.99325
ln(3) 1.09474 1.09861
ln(4) 1.35263 1.38629
ln(5) 1.54211 1.60943
e 2.7 2.718281828

Ссылка на полный код.

 

Источник: programmingmaster.ru

 

Оставить комментарий
Форум phpBB, русская поддержка форума phpBB
Рейтинг@Mail.ru 2008 - 2017 © BB3x.ru - русская поддержка форума phpBB