Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Алгоритмы > Поменять ноль и не ноль местами |
Автор: _Y_ 27.9.2014, 13:52 |
Еще одна странная задача. Решить ее надо не прибегая к операторам сравнения, а написав выражение в виде традиционной функции. Имеется действительное число X равное или не равное нулю. Надо написать формулу F(X) избегающую операторов сравнения, рузультатом которой было бы: Если X не равен нулю F(X)=0 Если X равен нулю F(X) = любое действительное число. Спасибо |
Автор: Dremuk 27.9.2014, 22:06 |
по-моему таких функций нет Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Pomenyat-nol-i-ne-nol-mestami-id5426974bae2015261f8b4567#findElement_E7045_54270ac9ae20158a652d0af5_0 |
Автор: Game-lot 30.9.2014, 07:45 | ||
На php:
Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Pomenyat-nol-i-ne-nol-mestami-id5426974bae2015261f8b4567#findElement_E7045_542a354eae2015ee1a8b481d_0 |
Автор: _Y_ 30.9.2014, 21:51 |
Game-lot, спасибо за Ваш труд, но задача не в том, чтобы написать программу, а в том, чтобы выразить алгебраически. |
Автор: maxim1000 1.10.2014, 10:56 |
вопрос в том, что можно использовать результирующа функция не является непрерывной, поэтому её не получится составить из непрерывных функций |
Автор: baldina 1.10.2014, 11:21 |
_Y_, речь о действительных числах или их компьютерном представлении? |
Автор: baldina 1.10.2014, 12:20 |
y=|x| это традиционная? а если можно abs, то и sgn можно? тогда f(x) = 1-sgn(|x|) |
Автор: ksili 2.10.2014, 08:12 | ||
![]() |
Автор: baldina 2.10.2014, 08:59 | ||
посмотрите на определение https://ru.wikipedia.org/wiki/%D0%A4%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F_%D0%A5%D0%B5%D0%B2%D0%B8%D1%81%D0%B0%D0%B9%D0%B4%D0%B0. она, как и ваша, разрывная, но её определение имхо понятно всем |
Автор: Akina 2.10.2014, 11:33 |
ksili, конструкция try ... catch содержит неявный if. Добавлено через 2 минуты и 8 секунд Не пойдёт. Иначе решение - тупо определить по аналогии "функцию baldina", которая имеет значение 1 при нулевом аргументе, и 0 - при ненулевом. Её аналитические приближения несложно получить модификацией приближений для функции Хевисайда. |
Автор: baldina 2.10.2014, 12:58 | ||
вряд ли приближеные выражения проще для понимания. так же как и неявные определения Добавлено через 47 секунд потому что
кстати, _Y_, а какова цель изложения этим людям? Добавлено через 4 минуты и 51 секунду а здесь разве нет "спрятанных операторов сравнения"? если взять "правильное" определение, то и sgn подойдет в формулировке x/x c учетом того, что любой число, деленное на 0 есть 0, невзирая на знаменатель |
Автор: tzirechnoy 3.10.2014, 11:23 |
exp(x)-1 |
Автор: Akina 3.10.2014, 11:28 |
Угу... только надо наоборот. Кстати... формально можно применить f(x) = 1/x - 1/x Для всех ненулевых иксов получится ноль, а для нуля - неопределённость, которая ничему не равна, в том числе не равна нулю. |
Автор: tzirechnoy 3.10.2014, 11:34 |
Плохо заканчивается неделя, да. Сука, как можно так ментально деградировать. |
Автор: ksnk 3.10.2014, 13:52 | ||||
Очевидно, что получить функцию со скачками, определенную на всей координатной оси можно комбинируя такие-же функции со "скачками". тангенс, к примеру, просто так не применить, он не для всех значений определен. А какие вообще есть разрывные функции, которые определены везде? Остаток от деления - пойдет? Записывается, вроде как x%y (1/x-1/x) - это какой-от математический самообман ![]() Добавлено @ 14:04 Если остаток от деления можно использовать - то получится что-то вроде такого y=1-((-x)%1)+(x%1) ; // остаток от деления на 1 - дробная часть. на отрезке от -1 до 1 получится 0, кроме значения 0. там будет 1 остается только "размазать" все действительные значения на интервал -1...1 так чтобы в 0 был 0. Например 2*arctg()/pi итого y=1-((-2*arctg(x)/pi)%1)+(2*arctg(x)/pi)%1 P.S. формула, которую можно проверить в http://www.aiportal.ru/services/graph.html
Она получилась страшновата ![]() Для функции округления - более "простая" конструкция
|
Автор: Akina 3.10.2014, 14:09 |
Почему? формально все условия выполнены. Вероятно, y = 0/x? Ну да, хотя это решение и более спорное, ибо при нулевом иксе придётся выбирать между вариантами "ноль" и "неопределённость", т.е. ответ неоднозначен. Добавлено через 1 минуту и 28 секунд При условии, что эта операция, изначально определённая только на множестве целых, расширяется и на множество действительных чисел. Что не совсем корректно. |
Автор: ksnk 3.10.2014, 14:16 | ||
Формально - можно и написать, однако значение функции в "неопределенных" точках, обычно вычисляют с помощью пределов. А таким методом разрывное значение не получить, разве что предел окажется неопределен. А это не наш случай... В этом случае "предельное" значение в 0-е будет 0... |
Автор: Akina 3.10.2014, 14:41 |
Не припоминаю, чтобы в задаче требовалось ВЫЧИСЛИТЬ. Требовалось составить представление такой функции в виде элементарных функций, уровня "для колхозников". |
Автор: ksnk 3.10.2014, 15:12 | ||
Кстати,
можно построить график на http://www.aiportal.ru/services/graph.html |