1 = 0,(9) ?

И все таки 1 = 0,(9) ?

Из книги «Что такое математика» Р. Курант ilib.mccme.ru/pdf/kurant.pdf
стр. 87 — 89:
«Мы скажем, более кратко, что точка P заключена в стягивающуюся последовательность десятичных интервалов. Например, если точка P есть 1/3, то все цифры a1, a2, a3, . . . равны 3, и P заключена в любом интервале In от 0,333 . . . 33 до 0,333 . . . 34, т. е. 1/3 больше чем 0,333 . . . 33 и меньше
чем 0,333 . . . 34, сколько бы ни взять цифр после запятой. Мы скажем в
этих обстоятельствах, что n-значная десятичная дробь 0,333 . . . 33 „стре-
мится к 1/3“, когда число цифр n неограниченно возрастает.»

Самое интересное на 99 стр в п.3 Пределы.

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn

Найкращі коментарі пропустити

Вещественные числа в определении по Кантору (наиболее распространённом из эквивалентных) — это фактор кольца фундаментальных последовательностей по идеалу бесконечно малых; иными словами, два вещественных числа, отличающихся на бесконечно малое значение, равны (по определению). Исходя из этого несложно проверить, что «1.0» и «0.(9)» — это просто разные формы записи одного и того же вещественного числа.

Само бесконечно малое значение, к слову, вещественным числом не является (вот поэтому); если вы хотите выполнять над ним какие-то операции, вам следует посмотреть на гипервещественные числа Лейбница (в формализации Робинсона). Настоятельно рекомендую обратиться к этой книге.

Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Допустим

x = 0.(9);
//тогда
10·x = 9.(9);
//отнимем части первого равенства от второго
9·x = 9; //хвосты сокращаются
//следовательно 
x = 1;

Такой же способ для перевода десятичной дроби в обычную:

x = 0.(12345)
100000 · x = 12345.(12345)
99999·x = 12345;
x = 12345/99999 = 4115/33333
Вот и все доказательство : /

не переживай 10 копеек тебе простят на кассе

А вам купить, или продать? Нет, серъёзно, даже в банковских системах ограничена точность, так стоит ли переживать? Или вы больше в теоретическом поиске?

Десятичное число 1/3 в тернарной будет 0.1.
В тернарной 0.1 * 10 = 1.
Где вы взяли 0.(9) не пойму.

Если в Javascript попросить вывести это, то он тоже высветит 1,0

найлегший спосіб:
1/3 = 0.(3)
помножимо обидві частинки на 3
1 = 0.(9)

Давайте лучше про банковское округление scontent.xx.fbcdn.net/...ae7d3be0e23be&oe=58B79165

Ну да, они сделали округление по умолчанию по стандарту IEEE754, и что? Как раз и должны были сделать, по крайней мере если не учитывать тему совместимости.

(Вот в C round() застряло округление вверх — это уже чистое legacy. rint, nearbyint вместо этого используют текущий режим. Я бы предпочёл варианты функций с явным заданием режима, тем более, что IEEE754-2008 их рекомендует открытым текстом. Вот в эту сторону надо пинать авторов Ruby, да и всех прочих.)

Лучше введите «гауссово округление» в гугл — там есть несколько интересных дискуссий, как и чем это грозит в бухгалтерии и как с этим бороться, включая странные среды типа Delphi или Excel.

ну если верить опросам, то больше половины программистов считают что математика им ни к чему. Отсюда и подобные топики на dou

Математика важлива, але там, де необхідні більш прикладні її випадки. При формошльопстві звичайному вона ні до чого. Зазвичай більше необхідна геометрія. Адекватному програмісту будь-які знання не будуть зайвими. Навіть кулінарні знадобляться одного разу :)

Ну не в банку ж їх тримати :)

почему в float, а если будет много денег, лучше сразу в double..

Сарказм )
Когда столкнулся с этой проблемой для себя, после прочитанного решил, что правильнее всего свой класс Money, где хранятся в int с точностью до тысячных, а отдаются как захочется.

Вдруг int переполнится как счетчик просмотров Gangam style и будете внезапно должны банку 2 с небольшим миллиарда. Думаю Превед уже взял на заметку ))

Держу деньги в BigInteger.

Я когда-то смотрел как они реализовали умножения — я такого наивного кода не видел со времён детского садика :) По-ходу при банальном увеличении числа придётся менять сервер на более высыкопроизводительный :)

Речь про Java или .NET?
Реализация в Java достаточно неплоха, а вот дотнетовцы явно делали BigInteger откровенно «на отгребись». Только плеватель на результат или полный кретин мог сделать IsPowerOfTwo(), не сделав BitLength().

А умножения — там же вроде плоское+Карацуба? В GMP написано, что это эффективно до ~6000 бит длины числа.

А как же кредитные карты и овердрафт?

Відкрию страшну тайну. Це все зберігається як unsigned. Бо це інший рахунок.

? Как тогда обрабатывается перекачка кредитной карты деньгами (overpayment) ?

Кредитна карта в АБС (автоматизована банківська система) це не один запис в базі даних, а приблизно з десяток. Всі операції ведуться із рахунками. Наприклад, на рахунку тіло кредита записано 100, на рахунку поточний платіж записано 10, на рахунку поточна заборгованість по тілу записано 2, то потім банально береться сума рахунків. 100+10+2 = 102 монетки боргів. Наприклад, ви вносите сумму 20 на рахунок поточний, з якого потім будуть списуватися гроші в певній послідовності: спочатку 2 з рахунка заборгованості, потім 10 з поточного платежу, а потім 8 з тіла. Там вся арифметика проста — перекладання циферок між рахунками. Тому мінусів може не бути, бо для однієї операції це мінус, а для іншої — плюс.

Понятно, спасибо за объяснения!

BigInteger обычно уже не делают unsigned, затраты на два разных типа выше, чем преимущество в экономию одного бита.

По-моему, как раз знания математики к этой ошибке отношения не имеют. Такую ошибку скорее допустит человек, который не знаком с тем, как работают числа с плавающей точкой — при этом в математике он может быть хоть профессором.

Как раз знание о том, как хранить деньги в компьютере, это чистейшая прикладная математика. «Чистый» математик подобные тонкости игнорирует, считая себя выше этого. (Я насмотрелся на таких.)

Вот тут проблемка. Средний математик до XX века в основном был занят именно тупыми расчётами, в лучшем случае пользуясь готовыми результатами из справочника типа знаменитых таблиц Брадиса. То есть он всё равно все эти грабли (кроме, может быть, ситуаций типа № 2 отсюда проходил на своей шкуре.
Потом появились арифмометры, механические калькуляторы, электронные и т.д. Сейчас большинство знает проблематику на уровне написать формулу в Matlab, остальное оно подсчитает, не забыть выставить точность в максимальную :)

Попахивает подменой понятий. Одно дело не знать всякие двойные интегралы по контуру и считать их ненужными. А совсем другое — не знать элементарный школьный материал.

это не школьный материал. Если вам в школе сказали что 0.(9) = 1, это еще не значит что это «школная программа».

Если вам в школе не говорили, что 0.(9) = 1, это ещё не значит, что это не школьная программа.

объясняется

? Поделитесь как это обосновывается.

Надо написать программу на каком-нить языке типа idris ( ru.wikipedia.org/...s_(язык_программирования ), Agda ( ru.wikipedia.org/wiki/Agda ) или ru.wikipedia.org/wiki/Coq , и тогда точно будет известно — равно или не равно. :D

Данный вопрос оч актуален в лесу, задав его встречному медведю вы получите гарантированное время на то что бы спетлять, пока он пытается найти ответ.

У вас скучная жизненная позиция.

нескучный некропостер.

Як і всі нормальні люди, в тисячних копійки. :D

Да как-то монстрообразно выглядит, хранить в int с точностью до тысячной и переводить при выводе, как написано выше, кажется проще..
А вот как более правильно, не знаю )

А округления складывать на отдельный счет? или куда их девать?

Я понимаю, хотел уточнить от знающий людей, какие обычно внутренние инструкции по остатку. Ведь в итоге все должно сойтись до копейки.

У меня в коде остатки от деления накапливались и влияли на следующее округление (в большую сторону округлять или в меньшую). Таким образом суммарный остаток не превышал половину копейки. Погрешность всегда в пределах половины цены деления шкалы.

То ли в Эрэфии, то ли в Беларуси, то ли хрен знает где, есть требование хранить деньги с точностью до десятой части копейки.

Хм, любой использовавший, например, Python3 shell вместо калькулятора и не задумавшийся о смысле ответа, может так попасть в «секретный интернет роботов». Так что проверка недостаточно надёжная.

Такого «любого» спробуй ще знайти. Це ж як людина має себе не любити, аби діставати калькулятор, щоби порахувати 0,1 + 0,2 (не кажучи вже про Python3 shell).

1. Я давно использую Python вместо любого калькулятора :) Ну иногда `bc -l’. Потому что просто удобно.
2. Где это сегодня прочёл — подслушанный разговор какой-то девушки про собеседование — «они мне предлагали в уме умножить на сто, без калькулятора, представляешь!»

Хотя вот сочетание пунктов 1 и 2, да, крайне маловероятно. Тут уже или одно, или другое.

на ДОУ уже своя математика
С сыром и зеркалками :)))))
Или на ДОУ уже своя математика, не стандартная.
 +1 год = +500 ))
Уже давно. ))
Для оного появилась возможность такой записи?

КЭП ?

Как я инструкцию к сигнализации только на 17-ом году прочитал (увидел в ней над выводом знак «-»), и понял что светодиоду меня все таки работает, просто сигнализация минус (землю) на него дает. Так и остальные, рассуждаем/спорим, когда вот — ru.wikipedia.org/wiki/0,(9

Вещественные числа в определении по Кантору (наиболее распространённом из эквивалентных) — это фактор кольца фундаментальных последовательностей по идеалу бесконечно малых; иными словами, два вещественных числа, отличающихся на бесконечно малое значение, равны (по определению). Исходя из этого несложно проверить, что «1.0» и «0.(9)» — это просто разные формы записи одного и того же вещественного числа.

Само бесконечно малое значение, к слову, вещественным числом не является (вот поэтому); если вы хотите выполнять над ним какие-то операции, вам следует посмотреть на гипервещественные числа Лейбница (в формализации Робинсона). Настоятельно рекомендую обратиться к этой книге.

Вопрос на засыпку : какая хрен разница? Полноте, господа. В мире полным полно философских проблем имеющих практическое применение

В данном конкретном случае это чисто теория, да. Но вообще надо быть готовым к тому, что числа с плавающей точкой это в ряде вопросов (особенно в сравнении на равенство) это Адъ і Мегиддонъ. «Пользуясь случаем, передаю привет» (tm) и приведу для всех парочку канонических граблей.

Пример 1.


#include <stdio.h>
typedef double F;

volatile F ix;
int main() {
  unsigned cnt = 0;
  for (ix = 0.0; ix <= 20.0; ix = ix + 0.1) {
    ++cnt;
  }
  printf("%u\n", cnt);
  return 0;
}

Ответ — 200 (от режима FPU/SSE не зависит, за счёт присвоения в volatile мы гарантированно округляем), вместо наивно ожидаемого 201; итерация с 20.0 не выполняется. Для корректного выполнения надо или перейти к итерации по целому и умножать на 0.1 для целевого применения, или заменить сравнение на <= 20.5.

Пример 2 — когда число не равно самому себе :)

Требует или x86 с FPU (обычно для 16- и 32-битных режимов), или M68k с его FPU (вряд ли доступно типичному читателю). Берём код:


#include <stdio.h>
#include <ieeefp.h>

volatile float a, b, f1;
int main() {
  a = 0.1f;
  b = 0.2f;
  f1 = a + b;
  printf("%d\n", f1 == (a + b));
  return 0;
}

Программа покажет 0, то есть 0.1 + 0.2 будет не равно 0.1 + 0.2.
Если же перейти на SSE, они совпадут. Или выставить в режиме FPU точность single, для FreeBSD это fpsetprec(FP_PS).
Причина: результат второго a+b хранится в регистре FPU с точностью большей, чем single (AKA float в C); типичное умолчание точности — double (Windows, FreeBSD), extended (Linux); при сравнении, f1 загружается, но его значение не совпадает с неурезанным результатом сложения.

С учётом того, что в самом вроде бы распространённом среди участников DOU языке Javascript есть только числовой тип с плавающей точкой, описанные грабли встречаются чуть менее чем всем. При этом, свежий вариант второго случая был на C# и являлся гейзенбагом, проявляясь только при определённых условиях компиляции.

Спасибо за интересные примеры.
На (1), помнится, один раз в студенчестве сам наткнулся, на лабах по численным методам. Тоже цикл не делал одну итерацию. И я долго не мог понять, почему ответ не сходится.
Зато с тех пор усвоил, что числа с плавающей точкой — это действительно

Адъ і Мегиддонъ

Надо не «просто» это понимать. Надо пройти эти грабли и затем постоянно помнить, что мы имеем дело не с идеальным числом, а его приближением с кучей ограничений и специфик, и то же самое с операциями над числами. И всё равно периодически натыкаешься на новую форму тех же грабель.

Нам оное объяснили в деталях.

Мне тоже. Но это потому, что я был на прикладной математике. А те, кто учился по более программистским специальностям, это или не получали совсем, или прохлопали, у них были всякие теории алгоритмов и т.д., но не особенности плавучки.

Я с этим столкнулся в LuckyNet, когда мы перешли на канал со спутника с жуткой прецессией и потребовалось корректировать положение приёмной тарелки автоматизированно. Откуда-то стащили программу поиска прецессий и стали её точить для нашего случая. И вот тут коллега вляпался с ходу в проблему последней итерации и пошёл спрашивать, шозадела, у всех вокруг. И дальше картина Айвазовского «Приплыли» — я могу произнести только что-то вроде «RTFM! Об этом в FMM открытым текстом в самом начале!» — а этот коллега тоже стоит потеряв челюсть, осознавая, что неожиданно вляпался в совершенно неведомую ему область, и не понимая, как измерить, насколько он чайник...

А вот хохму с промежуточными вычислениями в extended в x86 FPU и нам тогда не рассказывали, потому что курс ещё был заточен на плавучку образца S/360 — эти чудеса я узнал сильно позже, уже где-то в 2010, когда работал вокруг HPC. И тоже попал в такое же офигение в, казалось бы, давно изученном и понятном месте, как будто в стенном шкафу открылась дверь в неизвестный мир :)

Но ФПМ тогда программистов не готовил, программирование у нас шло, как изучение инструмента.

Именно. Это совпадало с тем, как учили меня. При этом на кибернетике были мат. поток с прикладной математикой и програм. поток с ориентацией больше вокруг всякой теории алгоритмов, я был на первой, но видел, что на второй. Постепенно программа обучения смещалась от прикладной математики к чисто компьютерным направлениям, как теории, так и связанной практике.

Ну и сейчас компы мощные, часто дешевле юзать тупые методы и не заморачиваться.

Или брать готовые пакеты, которых сейчас чуть более чем дофига, и коммерческих, и открытого кода.
Вон scipy тянет за собой несколько таких.

А вообще еще за год до моего выпуска советская военка выгребала полностью все 300 человек выпуска факультета и большинство именно делали то, чему их учили 5 лет.

Ну и я так полагаю, с приходом 91-92 они все пошли челноками товары возить.

Я как раз на этом переходе учился, поступал при СССР, выпускался уже при Кучме.

Программируя на джава и проблем не будет)

При цикле на том же double будут ровно те же проблемы. Учите матчасть.

Да, 1=0.(9) и это строгое равенство. Я думал это сейчас в школе проходят...
Простое доказательство: сколько будет 1/3 в десятичной форме? Так вот, 1 — это три раза по 1/3, сложи их в десятичной форме.

По-перше, порядок формул навколо першого знака рівності переплутали. По-друге, знак квадрата в третьому рядку загубили. По-третє, й найголовніше, з a^2 = b^2 не випливає a = b (адже існує можливість, що a = — b).

Привет, кэп :)

По комментам сразу видно у кого получилось войти в IT.

Я с детства «в IT» и недавно столкнулся с википедией и 1 = 0,(9) с чем сильно не согласен.

Решил более подробно описать почему 0,(9) не равно строго 1. При преобразовании периодической дроби в обыкновенную, используется формула суммы геометрической прогрессии. А эта формула может использоваться только для нахождения суммы последовательности. Вот эта формула: S = b * (q^n — 1) / (q — 1). В нашем случае n стремится к бесконечности, а q=0,1. И тут эта формула преобразуется в S = b * (0 — 1) / (q — 1). В математике нельзя просто так взять и беспричинно приравнять q^n к нулю. На самом деле тут берётся предел. Но поскольку на момент объяснения периодической дроби пределы не изучены, учитель говорит что то вроде «поверьте сейчас, а поймёте потом». И тут уже речь идёт о lim(b * (q^n — 1) / (q — 1))=b/(1-q) при n -> бесконечность.
И если дробь 0,(8) и в пределе равна 8/9, и строго равна 8/9, то дробь 0,(9) в пределе равна 1, но строго не равна 1. В пределах такое бывает. Например, lim(1/n) при n-> бесконечность в пределе равно 0, но 1/n не равно строго нулю.

Если в попытке доказать факт, мы вводим факт в аксиоматику, а потом на основе этой и других аксиом доказываем исходный факт, то это никакое не доказательство. Доказывается то, что не содержится в аксиомах. В данном же примере мы изначально ввели в аксиому, что 0,1 в степени бесконечность строго равно нулю. А потом это доказали, не говоря о том, что такая аксиома была введена. Вспомнить о том, что такая аксиома вводилась, можно лишь вспомнив как выводилась формула бесконечной убывающей геометрической прогрессии.

Источник

Хорошая попытка, но нет, пара сотен лет математики устоят и на этот раз.

0.(9) = lim(0.9*(1 — 0.1^n)/(1-0.1)) = 1, с этим вы согласны? Если да, то вспомним свойство транзитивности если 0.(9) = lim(0.9*(1 — 0.1^n)/(1-0.1)) и 0.(9) = lim(0.9*(1 — 0.1^n)/(1-0.1))=1, то 0.(9) = 1.

Теперь второй момент:

Например, lim(1/n) при n-> бесконечность в пределе равно 0, но 1/n не равно строго нулю.

1/n будет строго равна нулю, только если n будет строго равно бесконечности, и только если вы умеете оперировать бесконечностями без приделов.

И это прЕдел, ссори за ошибку.

0.(9) = 0.9+0.09+...+0.0000..9; Имеем бесконечную геометрическую прогрессию с q = 1/10; соответственно, ее сумма будет равна S = 0.9/(1-0.1) = 1

Предел суммы вашей числовой последовательности будет стремиться к 1, но никогда ее не достигнет.

А почему мы говорим про предел суммы? Я имею в виду сумму членов, без ее предела

Как только вы начинаете оперировать бесконечностями обычная арифметика перестает работать.
Сумма геометрической прогрессии 1/2 + 1/4 + 1/8 + ... равна 1 только в школе.
На самом деле 1 — это предел суммы сходящейся числовой последовательности:
lim Σ(1/2)^x == 1
x-> oo

Не уверен, что мы друг друга правильно понимаем. Только что проверил википедию и там говорится, что при радиусе сходимости, который по модулю меньше 1 мы можем применять теорему про сумму членов бесконечной геометрической прогрессии. Без никаких пределов.

И

lim (1/2)^x == 1
x-> oo
Простите, там не должно быть 0 пределом, а не единица?

Тогда надеюсь, что следующая цитата разрешит все споры:)
«Действительно, последовательность 0,9; 0,99; 0,999; и т. д., при стремлении количества девяток к бесконечности, будет стремиться к единице. Но когда девяток станет ровно бесконечное количество — а именно это выражает запись 0,(9), — тогда это число станет ровно единицей.»

Согласен с вами, но приятно было подискутировать :)

(9)
То есть нормальные люди записывают это как предел со стрелочкой с бесконечностью и знаком суммы? Тогда да. Равно 1. Вопросов нет.

Нет, запись 0.(9) означает, что после нуля идёт бесконечное количество 9, и в то же время, это число, такое же, как и 13,4

Но когда девяток станет ровно бесконечное количество — а именно это выражает запись 0,(9), — тогда это число станет ровно единицей
Ровно бесконечность?

Можно убрать слово «ровно»:)

Потому что бесконечная последовательность не может иметь сумму в арифметическом смысле. Понятием «сумма бесконечно убывающей геометрической прогрессии» обозначают именно предел

А если так:
1/3 * 3 = 1
1/3 = 0.(3)
0.(3) * 3 = 0.(9)

1.3 != 0.(3)

1/3 не выражается десятичным числом.
0.(3) лучше всего аппроксимирует 1/3, но неравно ему.

как математик, хоть и давно забросил это занятие
говорю что это не одно и тоже

весь мир на точностях построен а вы такое спрашиваете

херовый из вас математик (
на первом курсе анализа показывают обычно.

херовый из вас математик (
сейчас может быть, но из вас еще хуже.
на первом курсе анализа показывают обычно.

на первом курсе анализа показывают обычно что 0.(9) стремиться к 1 но некогда не будет равно 1
в теории пределов пишут 0.(9) предел который равен 1

но суть в том что они хотят сказать что разница настолько мала что во многих расчетах ей можно пренебречь. И действительно чтобы спроектировать двигатель автомобиля например не нужна большая точность. Еще в школе в книжке по алгебре писали абсолютных точностей нет и не нужны они поэтому большинство расчетов округляется, и есть такая штука как погрешность.

Прежде всего, на первом курсе анализа рассказывают, что стремиться к чему-то может последовательность, а число ни к чему стремиться не может. А 0.(9) — не последовательность, а число. Точнее, некая его формальная запись, потому что не существует соответствующей рациональной дроби, и эта запись естественным образом принимается равной 1.

ну и знаток

что стремиться к чему-то может последовательность, а число ни к чему стремиться не может
вот ru.wikipedia.org/wiki/0,(9

я не совсем правильно описал

«У этого равенства существует несколько доказательств, основанных на теории пределов.» — это цитата из статьи
«Утверждение 0.999... = 1 может быть интерпретировано как предел» — это цитата из статьи

Точнее, некая его формальная запись, потому что не существует соответствующей рациональной дроби, и эта запись естественным образом принимается равной 1.

кем принимается? домохозяйкой для составления бюджета.

ну и знаток

Спасибо, коллега. Я тоже отношусь к вам с уважением.

я не совсем правильно описал

При желании можно интерпретировать как последовательность, только это надо явно надо указать, равно как и какая именно конкретная последовательность имеется в виду. Наверное я не открою вам секрет, коллега, если скажу, что таких последовательностей для интерпретации 0.(9) может быть много. Даже бесконечно много.

кем принимается? домохозяйкой для составления бюджета

Всеми, кто хочет построить более-менее естественный изоморфизм между полем рациональных чисел и множеством бесконечных периодических и конечных десятичных дробей. Если вы понимаете,о чем я.

домохозяйкой для составления бюджета.
А кроме этого в самолетостроении и любых других космических ракетах и даже процессорах..
В реале -Механическая обработка или изготовление любых вещей или деталей -в реальном мире невозможна без определенной допустимой степени погрешности..

Это ты себя то человеком называешь великий математик.

Ты элементарно дурак. Поздравляю!

Странно, что такой способ записи никогда не встречался ранее. Имею ввиду скобочки. Это способ записи пределов какой-то особенный?

Ни в одном учебнике математики до сих пор не видел.

Значит, у меня другие учебники были. Вот какой-никакой, но пруф.

Будь там хоть бесконечность дявяток после точки, это все равно не будет равняться 1.

В шестом классе на алгебре будете проходить

А, я понял, это из области «Что лучше Java или C#?», но для математиков.

Если не заглядывать в книги, википедию и порассуждать логически...
С одной стороны разница 1 — 0.(9) меньше любого наперед заданного числа, так что похоже, что равны.

Но с другой стороны, есть, например, такой случай: если взять Y = 1/(1-X)
Y(1) == 1/0 == неопределёность
Y(0.(9)) ==1/0.(0)1 == плюс бесконечность

Если я нигде не накосячил, то это все-таки контрпример.

Неопределенность это не число) Как и бесконечность. А запись 0.(0)1 просто не имеет смысла.

Как и бесконечность.
В java бесконечность вполне себе число со всеми свойствами числа.

Вопрос я так понимаю не о Java. Тем более что там литерал 0.(9) наверное вызовет ошибку компиляции.

Я сомневаюсь, что в дискретной математике вообще есть понятие периода.

Сабж это не дискретная математика, а самый что ни на есть матан.

Я, конечно, понимаю, что ИТ стало прибежищем школьных учителей математики, только не надо лезть со своим уставом в наш монастырь. У нас тут дискретная математика по дефолту.

Посмотрел в профайл — вроде приличный человек, а троллите как школьник. Даже неловко за вас как-то.
Не нужно так расстраиваться. Невозможно все знать и не всем нужен матан, большинству даже не нужен. И стесняться здесь совершенно нечего.

Посмотрел в профайл — вроде приличный человек, а троллите как школьник. Даже неловко за вас как-то.
Как я могу быть приличным человеком, если я с утра минус бесконечность делил на ноль и наслаждался результатом?
Не нужно так расстраиваться. Невозможно все знать и не всем нужен матан, большинству даже не нужен. И стесняться здесь совершенно нечего.
Посмотрел и ваш профиль. Математик, т.е. я ткнул пальцем в небо и угадал с одной попытки, что впрочем неудивительно.

Вы можете сколько угодно доказывать, что 10+10=20, но в то же время оно ещё равно и 100.

Как я могу быть приличным человеком, если я с утра минус бесконечность делил на ноль и наслаждался результатом?

Ну, это мелочь, тем более что в каком-то определенном контексте такое может и имеет смысл. У по-настоящему неприличных людей прегрешения совсем другого рода.

Посмотрел и ваш профиль. Математик, т.е. я ткнул пальцем в небо и угадал с одной попытки, что впрочем неудивительно.

Вы написали не «математик», а «учитель математики», что не одно и то же. Но при этом как будто с каким-то осуждением. Вы считаете, что иметь математическое образование это плохо? Почему?

Вы можете сколько угодно доказывать, что 10+10=20, но в то же время оно ещё равно и 100.

И спорить не буду, потому что в двоичной системе это действительно так. Я не спорю исключительно из духа противоречия, а вы почему-то упорствуете в своих заблуждениях, что меня искренне огорчает.

Вы написали не «математик», а «учитель математики», что не одно и то же. Но при этом как будто с каким-то осуждением. Вы считаете, что иметь математическое образование это плохо? Почему?
У меня вышка была 1.5 года в универе, а дискретка, все разделы, 5 лет, причём по нескольку разделов одновременно каждый семестр. Поэтому, когда программер говорит:
Неопределенность это не число) Как и бесконечность.
Он почему-то взводит обычный матан в ранг последней инстанции и отказывает другой ветке математики в существовании, что скорее всего означает, что был только ознакомительный курс, либо его не было вообще, чем особенно грешат математические специальности.
а вы почему-то упорствуете в своих заблуждениях, что меня искренне огорчает.
Разве это я заблуждаюсь? %)

У нас дискретки был год и еще один семестр теории алгоритмов, так что, думаю, с основными концепциями я все-таки знаком. Разве дискретка оперирует где-нибудь записями вроде 1=0.(9)? Мне правда интересно.

Разве дискретка оперирует где-нибудь записями вроде 1=0.(9)?
Конечно. 0.(9) при определении n-digit system или задании допустимой ошибки будет аппроксимирована до конкретного числа.

Поэтому при задании погрешности 0.0000000000001 оба выражения логически верны:
1) 0.9999999999999 = 1.0
2) 10 * 0.9999999999999 != 10

чего в недескретной математике быть не может.

Э нет, подождите. Вы сейчас о представлении чисел с плавающей точкой в памяти говорите, со степенью и мантиссой? Так вы просто не сможете ввести 0.(9) — именно с девяткой в периоде, а не с большим количеством девяток — в память. Нет такого литерала, по крайней мере в неспециализированных языках. Ввести, допустим, 0.(3) можно, просто записав 1/3, и оно действительно будет аппроксимировано каким-то числом вроде 0.3333333333334, но именно 0.(9) — особый случай, просто нет такой дроби вида n/m. Именно потому, что 0.(9) это 1.

Вы сейчас о представлении чисел с плавающей точкой в памяти говорите, со степенью и мантиссой?
Нет.
Так вы просто не сможете ввести 0.(9) — именно с девяткой в периоде, а не с большим количеством девяток — в память.
Мы задали погрешность вычислений.
но именно 0.(9) — особый случай, просто нет такой дроби вида n/m. Именно потому, что 0.(9) это 1.
0.999...=9/10+9/10^2+9/10^3+...
Нет.

Тогда не понимаю, о какой именно арифметической системе вы говорите.

0.999...=9/10+9/10^2+9/10^3+...

Вы уверены, что в n-digit system (что бы вы под этим не подразумевали) существует 10^m, где m > n ?

Тогда не понимаю, о какой именно арифметической системе вы говорите.
Я же об этом как раз и говорю :(
Вы уверены, что в n-digit system (что бы вы под этим не подразумевали) существует 10^m, где m > n ?
Существует 10^(n+1), все остальное может существовать только в субнормальном виде и зависит от репрезентации числа.

10^(n+1) может существовать только, как результат округления к ближайшему числу, если округление принимается во внимание.

Я же об этом как раз и говорю :(

Это еще не значит, что правы именно вы. У этой вашей арифметики есть какое-то общепринятое название? А то про «n-digit system» не знает даже Google Scholar, а он достаточно осведомленный товарищ.

Существует 10^(n+1), все остальное может существовать только в субнормальном виде и зависит от репрезентации числа.
10^(n+1) может существовать только, как результат округления к ближайшему числу, если округление принимается во внимание.

То есть — не существует? И соответственно, не существует 0.(9). Прекрасно. То, что 0.99...99 (с любым конечным числом девяток) не равно 1, я знаю, спасибо, Кэп.

Это еще не значит, что правы именно вы. У этой вашей арифметики есть какое-то общепринятое название? А то про «n-digit system» не знает даже Google Scholar, а он достаточно осведомленный товарищ.
Замени слово system на number, хотя всегда в специфической англоязычной литературе говорят n-digit system, когда опиcывают модель.
www.google.ca/...rd=ssl#q="n-digit" number
Замени слово system на number

Кликнул по паре ссылок — там речь просто идет о числах, записываемых не более чем заданным количеством n цифр. Чтобы понять что это такое, не обязательно изучать дискретный анализ 5 лет, достаточно средней школы.
Собственно, это как раз таки не что иное как упрощенный случай упомянутой мной арифметики с плавающей точкой.
Но вернемся к исходному комментарию. Вы пишете:

Конечно. 0.(9) при определении n-digit system или задании допустимой ошибки будет аппроксимирована до конкретного числа.

то есть хотите сказать, что
1) У нас есть некое вещественное число 0.(9)
2) Вы хотите аппроксимировать его неким n-значным числом и оперируя уже этой аппроксимацией, доказать, что эта аппроксимация не равна 1 в n-значной арифметике.
А я вам говорю, что и среди чисел, определенных в рамках n-значной арифметики, наилучшей аппроксимацией для вещественного числа 0.(9) будет не 0.99..99 (с n девятками), а 1. Даже аппроксимировать ничего не надо, это просто равенство.

Собственно, это как раз таки не что иное как упрощенный случай упомянутой мной арифметики с плавающей точкой.
Почему вас циклит либо на абстракциях, либо на конкретных имплементациях? Забудьте про плавающую запятую вообще.
2) Вы хотите аппроксимировать его неким n-значным числом и оперируя уже этой аппроксимацией, доказать, что эта аппроксимация не равна 1 в n-значной арифметике.
dou.ua/...rums/topic/19279/#1028781
при определении n-digit system или задании допустимой ошибки

То есть там вводится операция изменения значения на основании формальной записи. Тогда в неравенстве виновата исключительно эта операция, которая так определена.

Поэтому при задании погрешности 0.0000000000001

А тут сам метод введения погрешности вызывает такие эффекты и для чисел, которые были изначально не равны.

Поэтому это всё не имеет отношения к вопросу ТС.

Рассказываю. Уже работает. IEEE754-2008, decimal типы — уже работают, есть туева хуча multi-precision библиотек, включая буст (тебе как плюсовику стыдно об этом не знать). Ну а скорость... вопрос сколько готов ты выложить за decimal акселлератор в железе, или создай сам его в GPGPU. Тебя ничего не ограничивает, кроме лени.

Ограничивает объем памяти вообще-то.
Так это, ты сам себе ставишь ограничения.

Ты спросил про «точными действительными числами», точность ты задаешь сам. Или у тебя бесконечная точность? Тогда это новое слово в науке.

Ты сознательно уходишь от ответа, если ты спрашиваешь про «точные действительные числа», то я дал ответ. Или называя точными имел что-то другое в виду? Тогда будь бобр выражайся яснее.

или в самом деле не знаешь математики и ее примения в компах.
Как раз о применении я знаю очень много, вот только это дискретная математика, а не то мозговое онанирование, о чём говорится во всём этом топике.

P.S.: www.google.ca/...ные действительные числа

Что я там не видел?

неопределенность это не число, бесконечность это тоже не число,
НО! неопределенность != плюс бесконечность.

Y(x1) == неопределённость
Y(x2) == плюс бесконечность

Y(x1) != Y(x2), из чего следует, что x1 != x2 :P

Если не заглядывать в книги
Отличное начало!
Y(1) == 1/0 == неопределёность

1/0 — бесконечность. Вы спутали с 0/0.

Какая бесконечность? плюс бесконечность или минус бесконечность?

Геометрически график функции 1/x в точне 0 имеет разрыв. С левой стороны от 0, график функции стремится к минус бесконечности, справа — стремится к плюс бесконечности.
А значит функция в 0 неопределенна.

1. Разрывность в некоторой точке никак не означает неопределённость.
2. Всё зависит от определения меры. В ТФКП вместо числовой оси часто используют числовую окружность, и 1/x есть отображение точки (a,b) с окружности в точку (a,-b), и наоборот. 0 соответствует точке (0,1), а обе бесконечности сливаются в точке (0,-1).
Конечно, если знать математику на школьном уровне, то это всё будет новостью :) Но первый пункт можно было узнать уже из первого курса матанализа.

А я и не говорил, что разрыв обязательно означает неопределенность.
Вот у |1/x| в нуле будет плюс бесконечность, а у 1/x — неопределенность.
О чем я и написал в своем комментарии выше.

PS По поводу ТФКП согласен, хоть и подзабыл уже все.

а у 1/x — неопределенность.

Именно что только если требовать обязательного наличия знака у этой бесконечности. Но когда говорим о бесконечности, то это требование может быть излишним.

Вообще-то ни та ни другая операция не допустимы — их просто не существует.

Я уже дважды объяснял, как сделать, чтобы операция типа 1/0 существовала и давала конкретное значение, и почему и как это будет иметь смысл.

Проблема в том, что многие не понимают, что все математические объекты, начиная с чисел — это абстракции, определённые под конкретные цели, и их полезность только в том, что столетия развития доказали, что именно такие абстракции полезны для решения практических задач.

А вот о том, что чем ты говоришь, это уже пределы.

В том и дело, что я упомянул рассмотрение, в котором это никакой не предел, а совершенно точное значение :)

Мой тебе совет выключить в себе режим идиота, пока не поздно, и таки задуматься, что пишет собеседник.

Пайтон говорит что да
$ python -c ’print 0.9999999999999999999′
1.0

Так то конечно, а если 0.9999999999999999?

\_(ツ)_/¯
тоже самое
$ python -c «print 0.9999999999999999»
1.0

python -c “print 0.999999999999”

Что вы мне тут глупости пишите? 0.9999999999999999 значительно ближе к 0.9(9) чем 0.999999999999, а значит для практического доказательства нужно использовать именно его!

Продолжаем нашу лекцию о высшей математике на питоне. Step 2:

python -c «print .1 + .1 + .1»
python -c «print .1 + .1 + .1 == .3»

Нам еще в школе рассказывали что так числа с точкой сравнивать нельзя, а вы такой взрослый дядька и этого не знаете.

Нам еще в школе рассказывали что так числа с точкой сравнивать нельзя
На уроке математики? o_O

Если бы я был вашим секретным Сантой, я бы подарил вам учебник по чувству юмора.

Могу дать взамен «Остроумие для чайников: самоучитель, который превратит любого зануду в первоклассного шутника».

Жаль что вы не мой секретный Санта((

Наверно потому я на нем и не пишу) Куда 16-ю дел то?
Пробуйте 0.999999999999999

все-равно один
$ python -c ’print float("." + «9» * 16)’
1.0

«9» * 16
Так мы же вычислили, что он не умеет в 16, что же вы пишете)
Куда 16-ю дел то?
Ну вы спрашиваете куда я ее дел, а я ее никуда не девал

Я удивился куда python ее дел, не вы)

х = 0.(9)
10х = 9.(9)
(10х — х) = 9.(9) — 0.(9)
9х = 9
х = 1

10*0.(9) != 9.(9)

А ты не верь википедии, а возьми и попробуй :)

Зачем, я верю Эйлеру, на которого там ссылка есть. Наверное, он несколько больше разбирался, чем многие здесь, как некоторые пишут «вайтивайти»

Да, довольно спорный переход.
Собственно, его можно делать только, если предварительно доказать, что 0.(0)01 == 0.(0)10, что фактически аналогично доказательству 1 == 0.(9)

А если быть ультрафинитистом, то переход вообще неспорный :) Ну или хотя бы взглянуть на проблему с точки зрения дискретной математики.

0.(0)01
Запис (0) означає, що 0 повторюється завжди. Тобто після якогось ...000000... неможлива поява якоїсь іншої цифри в числі. І запис 0.(0)01 не може служити формою запису періодичного дробу.

Если «числа» 0.(0)01 и нет, то его очень просто можно ввести:

1)Пусть есть ряд:
x1 = (0.1)^1 = 0.1;
x2 = (0.1)^2 = 0.01;
x3 = (0.1)^3 = 0.001;
Xn = (0.1)^n = 0.0...01;

2) Обозначим числом 0.(0)1 предел этого ряда, когда n—>oo
0.(0)1 = lim (0.1)^n
_________n->oo

І в цьому випадку запис 0,(0)01 також

не може служити формою запису періодичного дробу.

10*0.(3) = 3.(3) или нет?
x=0.(3);
10x = 3.(3);
10x = 3 + 0.(3);
10x = 3 + x;
9x = 3;
x = 1/3;
Вроде как все ок: 0.(3) = 1/3 (с этим, надеюсь, никто не будет спорить?)

Чем отличается умножение 0.(9) на 10 от 0.(3) на 10?

Ничем, это одно и то же умножение

1.3 != 0.(3)
1/3 не выражается десятичным числом.
0.(3) лучше всего аппроксимирует 1/3, но неравно ему.

Это 0.333333333 аппроксимирует (конечное число троек), а 0.(3) — запись в десятичном виде для 0.333... = 1/3

0.(3) — запись в десятичном виде для 0.333...
да
= 1/3
нет.

1/3 ≈ 0.(3)

Не все, чему вас учили в первом классе, правда :)
Вы еще скажите, что на ноль делить нельзя или нет корней из отрицательных чисел.

Любое утверждение требует доказательства.
Согласен с тем, что 1/3 ≈ 0.(3), но точного равенства нет.
И его доказательства вы не привели.

Тоесть, вы хотите сказать, что они всё врали? O_O

насправді на ноль ділити не можна, про це нам в школі не збрехали)

можна, тільки ніхто не знає, шо буде в результаті

В некоторых случаях знают. Только это относится к алгебраическим структурам, там не совсем ноль и не совсем деление в привычном смысле.

Не обязательно к алгебраическим структурам. Уже рядом говорил — числовая окружность вещественных чисел вместо числовой оси (активно используется в ТФКП), деление там совершенно стандартное, но случай деления на 0 там реализуется совершенно естественно без искривления общей логики.

Если ТФКП это теория функции комплексного переменного, то ничего не могу сказать. Это было когда я уже работал, потому курс прошёл мимо меня :)

И в ТФКП- эта операция будет обратимой?) То есть умножив потом на ноль -мы получим исходное число?)

Нет. Умножение на 0 (деление на ∞) и деление на 0 (умножение на ∞) необратимы, в отличие от умножения и деления на все другие числа. Чуда не произойдёт ;)

не зовсім зрозумів до чого це Ви написали, може поясните?

ну я звісно не математик, но мене в універі вчили, що на ноль ділити не можна, от ліміт брати — да таке я знаю.

Дно пробил именно ты, потому что не понимаешь, что в математике совершенно нормально, что суровые запреты более низкого уровня превращаются в возможности на более высоком уровне. Причём это было и в школьной математике:
«нельзя из 2 вычесть 4!» — проходит полгода, и вводятся отрицательные числа.
«7 на 2 не делится!» — всего через пару лет: делится, причём сразу в двух вариантах — с остатком или с получением нецелого числа.
«нет такого числа, квадрат которого равен 2!» — вдруг появляются иррациональные числа.
«нет такого числа, квадрат которого равен −2!» — оп-па, ввели мнимые, за ними комплексные.

Деление на 0 или предел выражения это всего лишь следующий шаг в этой цепочке, наряду с массой других «фокусов». Разница только в том, что эту часть учебной программы ты или не проходил вообще, или прохлопал ушами, а теперь ругаешь тех, кто её прошёл и помнит. Эффект Даннинга-Крюгера в чистейшем, незамутнённом виде.

Уже всё рассказал рядом.

1/3 не выражается десятичным числом.
це неправда, бо
Будь-яке раціональне число можна подати у вигляді скінченого дробу або нескінченного періодичного десяткового дробу.
[www.testmath.com.ua/...AutoDetectCookieSupport=1]

Как интересно. А чему равно?

10 * 0,(9) = 10 * (0,9 + 0,0(9)) = (10 * 0,9) + (10 * 0,0(9)) = 9 + 0,(9) = 9,(9)
із чого випливає 10 * 0,(9) = 9,(9)

Так точно ©

Ага, восемь — это тоже в какой-то степени два...

приблизительно

Підписатись на коментарі