355/113 и число пи
От: RS Земля ICQ: 148844272
Дата: 13.02.03 10:55
Оценка:
Известно, что дробь 355/113 представляет число пи с абсолютной погрешностью менее 1E-6.
Интересует вот что: как представить иррациональное число x дробью m/n с абсолютной погрешностью не выше e, при этом должен соблюдаться min(m+n).
Ведь все-таки 355/113 и 3141592/1000000 — оба представляют пи с погрушностью менее 1E-6, а разница заметна.
Можно ли обойтись без полного перебора m (или n)?
Re: 355/113 и число пи
От: Аноним  
Дата: 13.02.03 11:04
Оценка:
Здравствуйте, RS, Вы писали:

RS>Известно, что дробь 355/113 представляет число пи с абсолютной погрешностью менее 1E-6.

RS>Интересует вот что: как представить иррациональное число x дробью m/n с абсолютной погрешностью не выше e, при этом должен соблюдаться min(m+n).
RS>Ведь все-таки 355/113 и 3141592/1000000 — оба представляют пи с погрушностью менее 1E-6, а разница заметна.
RS>Можно ли обойтись без полного перебора m (или n)?


void ratio(double d,double e,int& n, int& m)
{
  for(int sum=2;;sum++)
  for(int n=1;n<sum;n++)
  {
    m=sum-n;
    if(fabs(d-1.0*n/m)<e)
      return; 
  }
}
Re[2]: 355/113 и число пи
От: Pushkin Россия www.linkbit.com
Дата: 13.02.03 11:07
Оценка:
Здравствуйте, Аноним, Вы писали:

Блин, сама ты Аноним. Это был я
Re[2]: 355/113 и число пи
От: RS Земля ICQ: 148844272
Дата: 13.02.03 11:08
Оценка:
Здравствуйте, Аноним, Вы писали:

А>

А>
А>void ratio(double d,double e,int& n, int& m)
А>{
А>  for(int sum=2;;sum++)
А>  for(int n=1;n<sum;n++)
А>  {
А>    m=sum-n;
А>    if(fabs(d-1.0*n/m)<e)
А>      return; 
А>  }
А>}
А>


А>

Благодарю, я бы и сам... Все таки, можно ли без последовательного перебора?
Хотя бы для частных случаев x (меня интересует само пи, а также логарифм 3 по основанию 2)
Re[3]: Ай да Pushkin, ай да с.с.
От: RS Земля ICQ: 148844272
Дата: 13.02.03 11:11
Оценка:
:)
Re[3]: 355/113 и число пи
От: Linuxoid  
Дата: 13.02.03 12:10
Оценка:
Здравствуйте, RS, Вы писали:

RS>Здравствуйте, Аноним, Вы писали:


Когда-то в "Науке и Жизни" видел программку для калькулятора B3-34, — замена десятичной дроби обычной. Для Pi она выдавала при первой итерации 10/3, при второй — 22/7, при третьей — 355/113.. Номер не помню
Примерно за 1987-1989 года.
Re: 355/113 и число пи
От: DOOM Россия  
Дата: 13.02.03 12:55
Оценка: 3 (1)
Здравствуйте, RS, Вы писали:

RS>Известно, что дробь 355/113 представляет число пи с абсолютной погрешностью менее 1E-6.

RS>Интересует вот что: как представить иррациональное число x дробью m/n с абсолютной погрешностью не выше e, при этом должен соблюдаться min(m+n).
RS>Ведь все-таки 355/113 и 3141592/1000000 — оба представляют пи с погрушностью менее 1E-6, а разница заметна.
RS>Можно ли обойтись без полного перебора m (или n)?

Можно. Например, применив цепные дроби.
Re: И вообще
От: Pushkin Россия www.linkbit.com
Дата: 13.02.03 13:59
Оценка:
Здравствуйте, RS, Вы писали:

RS>Интересует вот что: как представить иррациональное число x дробью m/n с абсолютной погрешностью не выше e


И вообще мне всегда хотелось прогу, которая по введённому числу 0.886 могла бы сказать "похоже на sqrt(pi)/2". Наверное монстры всякие типа матлаба это легко делают, а вот маленькую, симпатичненькую никто не знает? Или может есть идеи,как написать?
Re[2]: И вообще
От: Кодт Россия  
Дата: 13.02.03 14:35
Оценка: 7 (1)
Здравствуйте, Pushkin, Вы писали:

P>Здравствуйте, RS, Вы писали:


RS>>Интересует вот что: как представить иррациональное число x дробью m/n с абсолютной погрешностью не выше e


P>И вообще мне всегда хотелось прогу, которая по введённому числу 0.886 могла бы сказать "похоже на sqrt(pi)/2". Наверное монстры всякие типа матлаба это легко делают, а вот маленькую, симпатичненькую никто не знает? Или может есть идеи,как написать?


Составить генератор формул, в арсенале которого — числа 1..10, e, П, ф, унарные операторы 1/x, sqrt, x^2, x^3, exp, ln, sin, cos и т.п., бинарные операторы +, -, *, /.
Очевидно, формулы не должны быть чрезмерно громоздкими.
Скажем, грамматика должна быть примерно такой:
EXPR = { UNOP }[0..2] ( ARG2 { BINOP ARG2 }[0..2] )
ARG2 = { UNOP }[0..2] ARG1
ARG1 = число из ассортимента

Перебирая формулы, вычисляем их значение и заполняем таблицу, с точностью до 3 десятичных разрядов.
Записываем в файл. Радуемся.
Перекуём баги на фичи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.