2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


В этом разделе нельзя создавать новые темы.



Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 Заменить функцию более простой
Сообщение16.09.2013, 23:19 


23/10/07
240
Есть периодическая функция $f(n)=\sin (\pi n/2)$, где $n=0,1,2,..$ которая принимает значения: $0,1,0,-1$.
Вопрос: какой другой функцией $g(n)$ можно заменить эту целую функцию, чтобы выполнялось $g(n)=f(n)$ и определение $g(n)$ не содержала бы ни тригонометрических функций, ни числа $\pi$ и было бы как можно проще?
Пример подобной замены: $\sin (\pi/2+\pi n) = (-1)^n$ для последовательности: $1,-1,1,-1,...$ .

 Профиль  
                  
 
 Re: Заменить функцию более простой
Сообщение16.09.2013, 23:30 
Заслуженный участник
Аватара пользователя


18/05/06
13326
с Территории
Я понял, чего Вы на самом деле хотите, и сделать это можно. Но сначала всё-таки скажите по-человечески. Ведь нет таких слов "функция содержит пи". Любая функция его содержит: я к ней прибавлю $\pi$ и вычту $\pi$, ничего не изменится, а буковка $\pi$ будет. И никакая функция его не содержит: я позаменяю везде буковку $\pi$, например, на $\sqrt{6\sum\limits_1^\infty{1\over n^2}}$ (это то же самое), и нет её.
С понятием "содержит тригонометрические функции" примерно та же фигня.
С понятием "проще".....

 Профиль  
                  
 
 Re: Заменить функцию более простой
Сообщение17.09.2013, 00:49 


05/09/12
2582
В порядке занудства добавлю, что слово "функция" в стартовом посте используется некорректно. Если все значения одной функции на области определения совпадают со значениями другой функции там же, то это одна и та же функция, и другой ее заменить нельзя. Подробнее об этом.
ЗЫ а выразить эту функцию более простой (в определенном смысле, например, требующей меньше операций при вычислении на компьютере) формулой весьма просто.

 Профиль  
                  
 
 Re: Заменить функцию более простой
Сообщение17.09.2013, 02:54 
Аватара пользователя


11/09/13
30
Местное я...
Может проще так? :mrgreen:
$
f(n) = 
\begin{cases}
1,&\text{для } n = 1+4a;\\
0,&\text{для } n = 2a;\\
-1,&\text{для } n = 3+4a;
\end{cases}
\text{где a}\in\mathbb{Z}
$

 Профиль  
                  
 
 Re: Заменить функцию более простой
Сообщение17.09.2013, 09:28 


26/08/11
1886
$g(n)=\dfrac{i^{n-1}+(-i)^{n-1}}{2}$

:facepalm:

 Профиль  
                  
 
 Re: Заменить функцию более простой
Сообщение17.09.2013, 12:43 


05/09/12
2582
Используется синтаксис C
signed char rez = (n&&1)&&((n&&2)<<6);

 Профиль  
                  
 
 Re: Заменить функцию более простой
Сообщение17.09.2013, 14:22 
Заслуженный участник
Аватара пользователя


19/12/10
1546
_Ivana в сообщении #764637 писал(а):
Используется синтаксис C
signed char rez = (n&&1)&&((n&&2)<<6);
:shock:

Может Вы имели ввиду
Используется синтаксис C
signed char rez = (n&1)&((n&2)<<6);

Но этот код тоже работает не верно. Правильнее было бы
Используется синтаксис C
int rez = (n&1)*((n&2)?-1:1);


-- 17 сен 2013, 15:25 --

$f(n)=[n\bmod4=1]-[n\bmod4=3]$

-- 17 сен 2013, 15:31 --

$f(n)=(n\mod2)\cdot(2-(n\bmod4))$

 Профиль  
                  
 
 Re: Заменить функцию более простой
Сообщение17.09.2013, 15:11 


05/09/12
2582
whitefox, да, именно это я и имел в виду, опечатался. А насчет неверно - вопрос философский :-) Смотря какие границы применимости иметь в виду. Например, я подразумевал неотрицательные $n$ и допускал в качестве результата ноль с установленным битом знака - для умножения вполне пойдет. А ваш пример мне не нравится тем, что использует условие и умножение (что само по себе не крамольно, просто условие на разных платформах по разному реализуется и аппаратное умножение не везде есть). Чтобы избежать в качестве результата нуля со знаком, можно было бы написать так
Используется синтаксис C
signed char rez = (n&1)&((((n&2)>>1)&(n&1))<<7);
, но это сложнее, и с учетом приведенных выхе ограничений и аргументов, я предложил тот компромиссный вариант.

 Профиль  
                  
 
 Re: Заменить функцию более простой
Сообщение17.09.2013, 16:31 
Заслуженный участник
Аватара пользователя


19/12/10
1546
_Ivana
Дело не в границах применимости.
Условие неотрицательности $n$ задано ТС.
А восьмибитовый код 0x80, всё же, чаще трактуется как
Используется синтаксис C
(signed char)-128
а не как
Используется синтаксис C
(signed char)-0
Но дело не в этом.

Вычислим Ваш код для $n=0,1,2,3$.
Пусть $x=n\&1, y=n\&2, z=y\ll6, rez=x\&z$.
Будем записывать числа в двоичной системе и для простоты ограничимся только младшими 8 битами.

$n=00000000$
$x=00000000\;\&\;00000001=00000000$
$y=00000000\;\&\;00000010=00000000$
$z=00000000\ll6=00000000$
$rez=00000000\;\&\;00000000=00000000$

$n=00000001$
$x=00000001\;\&\;00000001=00000001$
$y=00000001\;\&\;00000010=00000000$
$z=00000000\ll6=00000000$
$rez=00000001\;\&\;00000000=00000000$

$n=00000010$
$x=00000000\;\&\;00000001=00000000$
$y=00000010\;\&\;00000010=00000010$
$z=00000010\ll6=10000000$
$rez=00000000\;\&\;10000000=00000000$

$n=00000011$
$x=00000011\;\&\;00000001=00000001$
$y=00000011\;\&\;00000010=00000010$
$z=00000010\ll6=10000000$
$rez=00000001\;\&\;10000000=00000000$

Во всех четырёх случаях получается результат 0.

А приведённый мной код, это всего лишь попытка исправить Ваш.
И он мне не нравится по тем же причинам, что и Вам.

 Профиль  
                  
 
 Re: Заменить функцию более простой
Сообщение17.09.2013, 16:51 


05/09/12
2582
Действительно, получается глупость :-) Просто опять я наспех написал не то,ч то имею в виду - конечно последним действием надо не "&" а "|", то есть делать логическое ИЛИ двух аргументов (или складывать их). Но если Вы поняли мою опечатку с двойными "&&", то я надеялся что и этот момент тоже поймете, несмотря на мою ошибку. То есть, в вашей нотации, надо rez = x|z$$, и $z$ надо вычислить поаккуратнее, как в моем последнем коде. С учетом всего перечисленного про ошибки, знаковый ноль, нежелательность условий и умножения получается так
Используется синтаксис C
signed char rez = (n&1)|((((n&2)>>1)&(n&1))<<7);

 Профиль  
                  
 
 Re: Заменить функцию более простой
Сообщение17.09.2013, 17:18 
Заслуженный участник
Аватара пользователя


19/12/10
1546
_Ivana
Если Вам так уж необходимо кодировать отрицательные числа в прямом коде вместо более распространённого дополнительного, то исправленная версия Вашего первоначального кода тоже верна:
Используется синтаксис C
signed char rez = (n&1)|((n&2)<<6);

P.S. Предложенный мной вариант верен безотносительно каких-либо предположений о кодировке отрицательных чисел. И в этом смысле более универсален. К тому же, не всегда байт состоит из 8 бит.

 Профиль  
                  
 
 Re: Заменить функцию более простой
Сообщение17.09.2013, 17:38 


05/09/12
2582
Все верно, я хотел "руками" построить $-1$ и забыл про дополнительный код :oops: И конечно ваш вариант более универсален: там компилятор сам разберется и с кодировкой отрицательных чисел, и с условием, и с умножением (если его нет аппаратного), и с big-endian, и с разрядностью типа, и засунет результат целиком в регистр. Просто у меня была мысль - как задешево получить отрицательное число: либо умножением (что не хотелось), либо вычитанием (что вполне можно реализовать, можно чуть подумать попозже, после работы), либо "руками" - но получилось немного коряво и в прямом коде (можно подумать насчет руками в дополнительном :-) )

ЗЫ вообще этот макрос я написал в продолжение шуточных ответов ТС, навскидку и не думая. Получилось просто (как и хотел ТС), и даже элегантно (разумеется, после исправления опечаток) и при условии прямого кода отрицательных чисел - но с другой стороны, ТС не оговаривал формат своей $-1$ :-) Но позже я, повторюсь, подумаю насчет дополнительного кода "руками" и вычитанием.

 Профиль  
                  
 
 Re: Заменить функцию более простой
Сообщение17.09.2013, 20:56 


26/08/11
1886
А если для компютера, то лучшее конечно

$\dfrac{(-1)^{\frac{n(n-1)}{2}}+(-1)^{\frac{n(n+1)}{2}}}{2}$

 Профиль  
                  
 
 Re: Заменить функцию более простой
Сообщение17.09.2013, 23:31 


23/10/07
240
ИСН в сообщении #764534 писал(а):
нет таких слов "функция содержит пи"
С этим я согласен, однако Вы хотите приписать мне высказывание, которое я не писал.
Я писал
naiv1 в сообщении #764532 писал(а):
определение $g(n)$ не содержала бы ни тригонометрических функций, ни числа $\pi$
Определение функции может быть задано формулой,в которой содержится выражение, а выражение уже может содержать (или не содержать) то, что я просил.

_Ivana в сообщении #764552 писал(а):
Если все значения одной функции на области определения совпадают со значениями другой функции там же, то это одна и та же функция, и другой ее заменить нельзя.
С этим согласен.
_Ivana в сообщении #764552 писал(а):
выразить эту функцию более простой (в определенном смысле, например, требующей меньше операций при вычислении на компьютере) формулой весьма просто.
Например? Чем короче формула,тем лучше.

К сожалению, формулы, предложенные участниками, достаточно громоздкие.

Попробую переформулировать вопрос, который я задавал в начальном сообщении и откажусь от использования числа $\pi$ и тригонометрических функций вообще.

Дана периодическая числовая последовательность $0,1,0,-1,0,1,0,-1,...$ с периодом $0,1,0,-1$.
Указать наиболее простую формулу для общего члена последовательности, который представлял бы эту последовательность.
Критерий простоты:интуитивный, например, минимум символов, которые формула содержит.

 Профиль  
                  
 
 Re: Заменить функцию более простой
Сообщение17.09.2013, 23:46 


05/09/12
2582
Непонятно чего вы хотите. Наиболее простых формул общего члена вам написали гораздо более, чем достаточно. Вспоминается вот эта история. Хорошо, рисую вам ящик, где сидит барашек - ваша функция обозначается, например, Щ(n) - даже Латекс не хочет ее отображать, такая она уникальная, (по аналогии с символом Кронекера), вас это устроит?

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 28 ]  На страницу 1, 2  След.

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group