Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [C++] Ряд синусов


Автор: STRIKER221 30.12.2006, 15:31
Найти номер первого элемента, меньшего 10 в -4 степени. В последовательности sin1, sin sin1, sin sin sin1 и т.д. …

Автор: Pete 30.12.2006, 19:39
Код

#include <stdio.h>
#include <math.h>

#define EPSILON 0.0001

int main( void )
{
  int n = 1;
  float x = sin( 1 );
  
  while (x >= EPSILON) {
    x = sin( x );
    n++;
  }
  
  printf( "%d\n", n );
  
  return 0;
}

Работает ОЧЕНЬ медленно. Придется ждать несколько минут, если оставить брутфорс. Может, есть какая-то мат хитрость...  smile 

Автор: Artemios 1.1.2007, 12:56
Цитата(STRIKER221 @  30.12.2006,  15:31 Найти цитируемый пост)
Найти номер первого элемента, меньшего 10 в -4 степени. В последовательности sin1, sin sin1, sin sin sin1 и т.д. … 

Чтож за "математик" такую задачу дал???
Он бы еще сказал, для 10^(-6) smile -- ответ бы вообще неделю ждали, да и для n не хватило бы ни int, ни long, пришлось бы длинной арифметикой пользоваться...
Дело в том, что функция y=sin(x) в окрестности нуля приближается функцией y=x, и чем ближе к нулю, тем лучше приближается smile
То есть, функция x-sin(x) будет убывать ну ОЧЕНЬ медленно, например для упомянутого eps=1e-4 имеем:
n=299999986
x=9.9999999966370398e-05
x-sin(x)=1.6666666148319048e-13

Автор: Romikgy 1.1.2007, 14:19
Цитата(Pete @  30.12.2006,  18:39 Найти цитируемый пост)
x = sin( x );

а почему именно так?
Цитата(STRIKER221 @  30.12.2006,  14:31 Найти цитируемый пост)
В последовательности sin1, sin sin1, sin sin sin1 и т.д. …

я лично этой последовательности не понял smile

Автор: Pete 1.1.2007, 17:51
Код

   x            sin(x)
                
1  sin(1)       sin(sin(1))
2  sin(sin(1))  sin(sin(sin(1)))

           .....

Автор: Romikgy 1.1.2007, 18:16
Pete, это ты так понял , а автор что скажет?

Автор: Pete 1.1.2007, 19:04
1. Первый вопрос был адресован мне, я и ответил  smile 
2. А как ее еще можно интерпретировать?  smile 

Автор: Romikgy 1.1.2007, 19:11
Цитата(Pete @  1.1.2007,  18:04 Найти цитируемый пост)
1. Первый вопрос был адресован мне, я и ответил

оки smile твою точку мнения я понял smile
ждем автора

PS имхо не целесообразно перебирать поочереди

Автор: Pete 1.1.2007, 19:30
Цитата(Pete @  30.12.2006,  20:39 Найти цитируемый пост)
Работает ОЧЕНЬ медленно. Придется ждать несколько минут, если оставить брутфорс. Может, есть какая-то мат хитрость...  smile

Автор: Romikgy 1.1.2007, 19:38
так же не понятен этот термин
Цитата(STRIKER221 @  30.12.2006,  14:31 Найти цитируемый пост)
номер первого элемента

smile ну 
Цитата(Romikgy @  1.1.2007,  18:11 Найти цитируемый пост)
ждем автора


Автор: STRIKER221 2.1.2007, 01:03
Спасибо всем за участие в решении задачи. С Новым годом!!!!! Счастья, удачи и творческих успехов....  smile 

Автор: Romikgy 2.1.2007, 01:10
хмм так я не понял , ответ подошел или нет?

Автор: Pete 2.1.2007, 18:41
Цитата(Romikgy @  1.1.2007,  20:38 Найти цитируемый пост)
так же не понятен этот термин
Цитата(STRIKER221 @  30.12.2006,  14:31
номер первого элемента

F_1 = sin(1),
F_n = sin(F_{n - 1}), n > 1.
Нужно найти минимальный номер n, при котором F_n < 0.0001.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)