powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Извлечение корня отрицательного числа.
54 сообщений из 54, показаны все 3 страниц
Извлечение корня отрицательного числа.
    #38068849
kab18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возможно кто-нибудь подскажет каким образом можно извлечь корень в нечетной степени из отрицательного числа. Функция pow() работает только с положительными числами, а при использовании с отрицательными постоянно возвращает 1.
...
Рейтинг: 0 / 0
Извлечение корня отрицательного числа.
    #38068857
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kab18Возможно кто-нибудь подскажет каким образом можно извлечь корень в нечетной степени из отрицательного числа. Функция pow() работает только с положительными числами, а при использовании с отрицательными постоянно возвращает 1.сделать его положительным. взять корень. а потом результат сделать отрицательным.
...
Рейтинг: 0 / 0
Извлечение корня отрицательного числа.
    #38068861
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kab18Возможно кто-нибудь подскажет каким образом можно извлечь корень в нечетной степени из отрицательного числа.Не бывает такого.

kab18Функция pow() работает только с положительными числами, а при использовании с отрицательными постоянно возвращает 1.Дык! Надо же ей что-то возвращать если человек математику не знает и требует странного.
...
Рейтинг: 0 / 0
Извлечение корня отрицательного числа.
    #38068864
kab18Возможно кто-нибудь подскажет каким образом можно извлечь корень в нечетной степени из отрицательного числа. Функция pow() работает только с положительными числами, а при использовании с отрицательными постоянно возвращает 1.
Математику учите. Используйте комплексное число с иррациональной частью.
...
Рейтинг: 0 / 0
Извлечение корня отрицательного числа.
    #38068869
kab18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вы наверное не внимательно прочитали мое сообщение, я писал о нечетной степени в корне. То есть корень кубический из минус единицы будет равен минус единице. Кое-как нашел необходимый для этого код:
Код: plaintext
1.
Y=(Y1/fabs(Y1))*exp(log(fabs(Y1))*(1.0/3));
...
Рейтинг: 0 / 0
Извлечение корня отрицательного числа.
    #38068899
Пётр Седов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 White Owl:

White Owlkab18Возможно кто-нибудь подскажет каким образом можно извлечь корень в нечетной степени из отрицательного числа.Не бывает такого.
Бывает, например

2 kab18:

Пара замечаний:

kab18
Код: plaintext
1.
Y1/fabs(Y1)



Деление -- не самый лучший способ получить знак числа. Лучше использовать стандартную функцию copysign , она от первого параметра берёт абсолютное значение, а от второго -- знак.

kab18
Код: plaintext
1.
log(fabs(Y1))*(1.0/3)



Если важна точность, то лучше не умножать на одну треть (которая не представима точно типом double), а делить на 3.

С учётом замечаний, я бы написал так:
Код: plaintext
1.
Y = copysign(exp(log(fabs(Y1)) / 3), Y1);



Ну и конкретно для кубического корня есть стандартная функция cbrt (аналог sqrt). В MinGW 4.4.1 она нормально работает с отрицательными числами. Как в остальных компиляторах -- не знаю.
...
Рейтинг: 0 / 0
Извлечение корня отрицательного числа.
    #38068902
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А чем if не подходит?
...
Рейтинг: 0 / 0
Извлечение корня отрицательного числа.
    #38068906
Пётр Седов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Edd.Dragon:
Edd.DragonА чем if не подходит?
Для получения знака числа? Подходит, но это же ветвление (branch), а для современных процессоров чем меньше ветвлений, тем лучше. А функцию copysign можно реализовать как раз без ветвлений, просто механическое перекладывание битов (для типа double, знак хранится в старшем бите, абсолютное значение -- в оставшихся 63-ёх битах).
...
Рейтинг: 0 / 0
Извлечение корня отрицательного числа.
    #38069563
Диклевич Александр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а чем второй пост в теме не ответ?
...
Рейтинг: 0 / 0
Извлечение корня отрицательного числа.
    #38069586
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Диклевич Александр, тред, батенька. Здесь каждый пишет свои мысли.
Я вообще задумался о методе. Ньютон или Тейлор. Вобщем каждый пишет
как он дышит.
...
Рейтинг: 0 / 0
Извлечение корня отрицательного числа.
    #38070446
mikhail_n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если важна точность, то лучше не умножать на одну треть (которая не представима точно типом double), а делить на 3.

А что, результат деления одного double на 3 всегда и везде точно представим другим double, т.е. не имеет ошибки округления? ЕСли да, тогда в чём проблема посчитать 1.0/3?
...
Рейтинг: 0 / 0
Извлечение корня отрицательного числа.
    #38070461
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikhail_nЕсли важна точность, то лучше не умножать на одну треть (которая не представима точно типом double), а делить на 3.

А что, результат деления одного double на 3 всегда и везде точно представим другим double, т.е. не имеет ошибки округления? ЕСли да, тогда в чём проблема посчитать 1.0/3?
В обоих случаях неточно, т.к. каждая операция вносит ошибку.
Но в х*1/3 производятся две операции, а в х/3 - одна. Поэтому точность выше у деления.
...
Рейтинг: 0 / 0
Извлечение корня отрицательного числа.
    #38070518
mikhail_n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий, извините, ну это аргумент из разряда - у нас есть два куска железа и мы знаем что второй кусок содержит на 50 атомов больше чем первый, а значит он тяжелее первого. Но весов, обладающих такой точностью, которая позволила бы уловить эту разницу у нас нет и, более того, законы физики гарантируют что таких весов нельзя создать в принципе... Софистика всё это.
...
Рейтинг: 0 / 0
Извлечение корня отрицательного числа.
    #38070523
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikhail_nзаконы физики гарантируют что таких весов нельзя создать в принципе...

И давно? А то ещё сотню лет назад, считалось, что можно взвесить и один отдельный атом...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Извлечение корня отрицательного числа.
    #38070561
mikhail_n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Взвесить и определить массу - как бы две большие разницы
...
Рейтинг: 0 / 0
Извлечение корня отрицательного числа.
    #38070598
Mozok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikhail_nзаконы физики гарантируют что таких весов нельзя создать в принципе...
Ой, как интересно! А можно ссылки на соответствующие законы?
...
Рейтинг: 0 / 0
Извлечение корня отрицательного числа.
    #38070632
mikhail_n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ладно, будь по вашему - весы способные обнаружить разницу в 50 атомов создать можно. Да, я утрировал, мне следовало бы сказать что невозможно измерить ни одну физическую величину с абсолютной точностью - любое измерение в принципе имеет погрешность. Возвращаясь к теме топика - мой поинт был в том что на фоне точности вычисления корня нечётной степени из double или что там было ещё - логарифмирование и экспоненциирование, говорить что "если важна точность, то лучше делить на 3 а не умножать на 1/3" - ну это как бы немного неправильно оценивать приоритеты.
...
Рейтинг: 0 / 0
Извлечение корня отрицательного числа.
    #38070638
jmp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikhail_n, деление на 3 - деление на точную константу; умножение на 1/3 - умножение на НЕточную константу. Ещё вопросы?
...
Рейтинг: 0 / 0
Извлечение корня отрицательного числа.
    #38070705
mikhail_n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikhail_n, деление на 3 - деление на точную константу; умножение на 1/3 - умножение на НЕточную константу. Ещё вопросы?

К вам? Однозначно нет.
...
Рейтинг: 0 / 0
Извлечение корня отрицательного числа.
    #38070820
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikhail_n, вообще-то я также рассуждаю как Анатолий. Каждая операция над double/float вносит некую
абсолютную погрешнось. И чем меньше операций тем точнее результат. Понятное дело что разница - на уровне
младшего разряда или бита. А чтоб нас спор обрёл некую предметную окраску - давайте
сочиним Unit-тест который покажет что сам факт наличия накопления погрешности имеет место.
...
Рейтинг: 0 / 0
Извлечение корня отрицательного числа.
    #38071679
Пётр Седов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Диклевич Александр:

Диклевич Александра чем второй пост в теме не ответ?
Вполне ответ, спасибо ZyK_BotaN-у, но, возможно, автор вопроса (kab18) хотел увидеть конкретный код.

2 mikhail_n:

mikhail_nЕсли важна точность, то лучше не умножать на одну треть (которая не представима точно типом double), а делить на 3.

А что, результат деления одного double на 3 всегда и везде точно представим другим double, т.е. не имеет ошибки округления?
Я, возможно, не очень удачно использовал слово «точность». Я не имел в виду, что, для типа double, деление на 3 всегда даёт точный результат. Мои слова «Если важна точность» надо понимать как «Если хочется погрешность поменьше».

Например, у меня есть число 1.25 (представимое точно типом double) и я хочу посчитать треть от него. Я могу сделать это двумя способами:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
double x = 1.25;

double res_div = x / 3;
printf("res_div = %.25f\n", res_div);

double res_mul = x * (1.0 / 3);
printf("res_mul = %.25f\n", res_mul);


Вывод (MinGW 4.4.1, без оптимизаций):
Код: plaintext
1.
2.
3.
----------------
res_div = 0.4166666666666666900000000
res_mul = 0.4166666666666666300000000
----------------
Теперь забываем про тип double и пишем абстрактные математические числа (некоторые из которых записываются бесконечным количеством цифр в десятичной системе счисления):
Код: plaintext
1.
2.
3.
4.
res_div   = 0.4166666666666666900000000...
err_div   = 0.0000000000000000233333333...
res_exact = 0.4166666666666666666666666...
err_mul   = 0.0000000000000000366666666...
res_mul   = 0.4166666666666666300000000...
То есть оба способа дали неточный результат, но погрешность при делении (err_div = 2.33...·10 -17 ) оказалась меньше, чем погрешность при умножении (err_mul = 3.66...·10 -17 ). То есть, для типа double, деление на 3 может дать более «хороший» (в плане погрешности) результат, чем умножение на 1/3, о чём уже написали Anatoly Moskovsky и jmp.

2 mayton:

maytonКаждая операция над double/float вносит некую абсолютную погрешнось.
Строго говоря, не каждая. Стандарт IEEE 754 требует, что если точный результат арифметической операции представим точно floating-point типом, то именно этот точный результат и должен быть получен, без всякой погрешности, например:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
double x = 1.5;

double y = x * 3;
assert(y == 4.5); // не должно быть никакой погрешности

double z = y / 3;
assert(z == 1.5); // не должно быть никакой погрешности


Источник: What Every Computer Scientist Should Know About Floating-Point Arithmetic .
The IEEE Standard
...
Formats and Operations
...
Operations

The IEEE standard requires that the result of addition, subtraction, multiplication and division be exactly rounded. That is, the result must be computed exactly and then rounded to the nearest floating-point number (using round to even).
...
Рейтинг: 0 / 0
Извлечение корня отрицательного числа.
    #38071681
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikhail_nАнатолий, извините, ну это аргумент из разряда - у нас есть два куска железа и мы знаем что второй кусок содержит на 50 атомов больше чем первый, а значит он тяжелее первого. Но весов, обладающих такой точностью, которая позволила бы уловить эту разницу у нас нет и, более того, законы физики гарантируют что таких весов нельзя создать в принципе... Софистика всё это.
Ага, щас.
Тут недавно был топик, где чувак прибавлял по 0.2 начиная с -1.0 и уже к 0 получил видимую погрешность.
Так что все измеряется.
...
Рейтинг: 0 / 0
Извлечение корня отрицательного числа.
    #38071685
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пётр СедовТо есть оба способа дали неточный результат, но погрешность при делении (err_div = 2.33...·10 -17 ) оказалась меньше, чем погрешность при умножении (err_mul = 3.66...·10 -17 ).
Да одинаковая. 17-ый порядок.
...
Рейтинг: 0 / 0
Извлечение корня отрицательного числа.
    #38071700
Пётр Седов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Edd.Dragon:
Edd.DragonПётр СедовТо есть оба способа дали неточный результат, но погрешность при делении (err_div = 2.33...·10 -17 ) оказалась меньше, чем погрешность при умножении (err_mul = 3.66...·10 -17 ).
Да одинаковая. 17-ый порядок.
Если для достижения конечного результата надо делать одну/две арифметические операции, то действительно разница несущественная. Но если операций надо делать много (какой-нибудь итерационный метод, например), то погрешность будет накапливаться, и в некоторых задачах есть смысл позаботиться о её минимизации.
...
Рейтинг: 0 / 0
Извлечение корня отрицательного числа.
    #38071728
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пётр СедовНо если операций надо делать много (какой-нибудь итерационный метод, например), то погрешность будет накапливаться, и в некоторых задачах есть смысл позаботиться о её минимизации.
В этом случае следует позаботиться об исползовании точных вычислений в ущерб производительности, а не о минимизации погрешности в пару-тройку раз, т.е. об откладывании проблемы на потом (авось ее кому другому придется разгребать). ;)

Т.е. пока эта погрешность не представляет опасности - не важно, делить на 5 или умножать на 0.2. А когда представляет - то тоже в обоих случаях.

P.S.: Вот были где-то более забавные примеры проявления разницы между делением на N и умножением на 1/N. Но не вспомню где :(
...
Рейтинг: 0 / 0
Извлечение корня отрицательного числа.
    #38071756
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Edd.DragonВ этом случае следует позаботиться об исползовании точных вычислений в ущерб производительности, а не о минимизации погрешности в пару-тройку раз, т.е. об откладывании проблемы на потом (авось ее кому другому придется разгребать).
На самом деле эти вопросы решаются не так топорно.
В подавляющем большинстве случаев не требуется абсолютная точность.
Достаточно обеспечить предсказуемую погрешность.
А для этого есть элементарный способ, которому учат на любой инженерной специальности - после каждой операции округлять результат до точности операндов.
...
Рейтинг: 0 / 0
Извлечение корня отрицательного числа.
    #38071948
mikhail_n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Пётр Седов

То есть оба способа дали неточный результат, но погрешность при делении (err_div = 2.33...·10-17) оказалась меньше, чем погрешность при умножении (err_mul = 3.66...·10-17). То есть, для типа double, деление на 3 может дать более «хороший» (в плане погрешности) результат, чем умножение на 1/3, о чём уже написали Anatoly Moskovsky и jmp.
Да, может. Весь вопрос в том, с какой точностью нам известны данные типа double над которыми мы производим математические операции. Вот вы в качестве примера использовали величины порядка 1 и получили в обоих случаях абсолютную погрешность порядка 10 в -17. Если величина порядка 1 известна нам с точностью до 10 в -9, это уже нано-диапазон и задачи где бы на сегодняшний день данные были известны с более высокой точностью... ну надо поискать... Поэтому на фоне той точности с которой нам известно что double x = 1.25 разница между err_div = 2.33...·10-17 и err_mul = 3.66...·10-17 совершенно несущественна.

Если для достижения конечного результата надо делать одну/две арифметические операции, то действительно разница несущественная. Но если операций надо делать много (какой-нибудь итерационный метод, например), то погрешность будет накапливаться, и в некоторых задачах есть смысл позаботиться о её минимизации.
Вот здесь полностью согалшусь.

Строго говоря, не каждая. Стандарт IEEE 754 требует, что если точный результат арифметической операции представим точно floating-point типом, то именно этот точный результат и должен быть получен, без всякой погрешности, например:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
double x = 1.5;

double y = x * 3;
assert(y == 4.5); // не должно быть никакой погрешности

double z = y / 3;
assert(z == 1.5); // не должно быть никакой погрешности



А почему вы считаете что 4.5 точно представимо типом double? Это кстати относится и к 3.

2 Анатолий

Ага, щас.
Тут недавно был топик, где чувак прибавлял по 0.2 начиная с -1.0 и уже к 0 получил видимую погрешность.
Так что все измеряется.
Видимую - это какую? То есть он получил вместо точного нуля 10 в -15/16/17... и т.д. степени и вы на основании этого сделали какие-то выводы о значимости того остатка, который он поимел? Ну, наверное с точки зрения программиста это действительно ужасно, а с точки зрения физика и 0.2 и -1.0 не более чем аппроксимации каких-то реальных физических величин, известных с некоторой точностью. На фоне этой точности, дельта порядка 10 в -15/16/17 степени абсолютно бессмысленна. Именно это я и пытался объяснить.
...
Рейтинг: 0 / 0
Извлечение корня отрицательного числа.
    #38072179
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyНа самом деле эти вопросы решаются не так топорно.
В подавляющем большинстве случаев не требуется абсолютная точность.
Достаточно обеспечить предсказуемую погрешность.
А для этого есть элементарный способ, которому учат на любой инженерной специальности - после каждой операции округлять результат до точности операндов.
Уже n-ый раз открываю чужой исходник биллинговой системы и натыкаюсь на очередной
индусский код где деньги считают в double. Хотя вру... не считают. Передают из веб-метода.
Но и дальше результат уходит в double. Длину цепочки я еще не отследил полностью.
Не знаю, как подобные системы проходят тестирования. Наверное никак.
...
Рейтинг: 0 / 0
Извлечение корня отрицательного числа.
    #38072448
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikhail_nс точки зрения физика и 0.2 и -1.0 не более чем аппроксимации каких-то реальных физических величин, известных с некоторой точностью. На фоне этой точности, дельта порядка 10 в -15/16/17 степени абсолютно бессмысленна. Именно это я и пытался объяснить.
Не знаю что там с точки зрения физики, но с точки зрения метрологии точность результата бОльшая, чем точность операндов - невозможна. Все что точнее - это мусор.
Double вычисляет и хранит результат в большем колве битов чем есть в исходном десятичном числе. Эта разница дает мусор который вполне может дать погрешность в значимых разрядах, например при умножении на большие коэффициенты.
...
Рейтинг: 0 / 0
Извлечение корня отрицательного числа.
    #38072489
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovskyс точки зрения метрологии точность результата бОльшая, чем
точность операндов - невозможна. Все что точнее - это мусор.

Э-э-э... Я правильно понимаю, что метрология, когда делит точную единицу без десятичных
знаков на такую же точную двойку получает ровный нуль опять же без десятичных знаков?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Извлечение корня отрицательного числа.
    #38072605
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovЭ-э-э... Я правильно понимаю, что метрология, когда делит точную единицу без десятичных
знаков на такую же точную двойку получает ровный нуль опять же без десятичных знаков?..

Нет. Если рассматривать double то точность входных чисел - 16 знаков мантиссы, даже если вы их записываете короче.
...
Рейтинг: 0 / 0
Извлечение корня отрицательного числа.
    #38072609
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это был юмор я так понял.
...
Рейтинг: 0 / 0
Извлечение корня отрицательного числа.
    #38072652
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то вы метрологию совсем не туда приплели...
...
Рейтинг: 0 / 0
Извлечение корня отрицательного числа.
    #38072714
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Edd.DragonЧто-то вы метрологию совсем не туда приплели...
Куда не туда?
...
Рейтинг: 0 / 0
Извлечение корня отрицательного числа.
    #38072715
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot mayton wrote:
> Это был юмор я так понял.

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Извлечение корня отрицательного числа.
    #38072719
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЭто был юмор я так понял.
Где смеяться?
...
Рейтинг: 0 / 0
Извлечение корня отрицательного числа.
    #38072725
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чёрт бы побрал близкое расположение BS и Enter...
maytonЭто был юмор я так понял.
Нет, это была попытка понять откуда ноги растут у тезиса "точность результата не может
быть выше точности операндов". Ну и откуда тут метрология...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Извлечение корня отрицательного числа.
    #38072745
Пётр Седов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 mikhail_n:

mikhail_nА почему вы считаете что 4.5 точно представимо типом double? Это кстати относится и к 3.
4.5 = 1·2 2 + 0·2 1 + 0·2 0 + 1·2 -1 = 100.1 2 = 1.001·2 2

3 = 1·2 1 + 1·2 0 = 11 2 = 1.1·2 1

Оба числа точно представимы типом double, потому что они записываются конечным количеством цифр в двоичной системе счисления, причём это количество <= 53 (= DBL_MANT_DIG = количество двоичных цифр (битов) в double-овской мантиссе). Или вы что-то другое имели в виду?
...
Рейтинг: 0 / 0
Извлечение корня отрицательного числа.
    #38072759
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovоткуда ноги растут у тезиса "точность результата не может
быть выше точности операндов".

Вы хотите опровергнуть это?
...
Рейтинг: 0 / 0
Извлечение корня отрицательного числа.
    #38072786
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyВы хотите опровергнуть это?
Сначала вопрос - к чему этот очевидный тезис, если никто не пытался утверждать обратного?


Кстати,

Anatoly MoskovskyDouble вычисляет и хранит результат в большем колве битов чем есть в исходном десятичном числе. Эта разница дает мусор
Не так выразились? Мусор то не эта разница дает. Не в "лишних" битах проблема, а наоборот - в их недостатке (хвост появляется, когда нужно бесконечное число битов!) ))
...
Рейтинг: 0 / 0
Извлечение корня отрицательного числа.
    #38072793
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyВы хотите опровергнуть это?
Для начала я пытаюсь понять как его применить к делению.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Извлечение корня отрицательного числа.
    #38072881
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Edd.DragonAnatoly MoskovskyDouble вычисляет и хранит результат в большем колве битов чем есть в исходном десятичном числе. Эта разница дает мусор
Не так выразились? Мусор то не эта разница дает. Не в "лишних" битах проблема, а наоборот - в их недостатке (хвост появляется, когда нужно бесконечное число битов!) ))
Да нет, как раз я имел в виду именно то что сказал.
У double 53 бита на мантиссу, этого достаточно для точного хранения 15 десятичных разрядов и плюс есть небольшой запас точности но его не хватает на полный дес. разряд.
...
Рейтинг: 0 / 0
Извлечение корня отрицательного числа.
    #38072913
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovЧёрт бы побрал близкое расположение BS и Enter...
maytonЭто был юмор я так понял.
Нет, это была попытка понять откуда ноги растут у тезиса "точность результата не может
быть выше точности операндов". Ну и откуда тут метрология...

По моему мы на физике расчитывали погрешности резульатов. Оттуда ИМХО...
...
Рейтинг: 0 / 0
Извлечение корня отрицательного числа.
    #38072938
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну таки не понятно выразились.

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

У вас не эквивалентная мысль выражена.
...
Рейтинг: 0 / 0
Извлечение корня отрицательного числа.
    #38072948
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonПо моему мы на физике расчитывали погрешности резульатов. Оттуда ИМХО...

Эт вряд ли... Простейший пример: для нахождения диаметра провода измеряется суммарная
ширина 1000 витков (погрешность +-10 витков) провода с точностью до миллиметра
(погрешность +-1мм). Результат имеет точность +-10 микрон. 10 микрон меньше миллиметра. ЧЯДНТ?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Извлечение корня отрицательного числа.
    #38072972
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovmaytonПо моему мы на физике расчитывали погрешности резульатов. Оттуда ИМХО...

Эт вряд ли... Простейший пример: для нахождения диаметра провода измеряется суммарная
ширина 1000 витков (погрешность +-10 витков) провода с точностью до миллиметра
(погрешность +-1мм). Результат имеет точность +-10 микрон. 10 микрон меньше миллиметра. ЧЯДНТ?
Вы оперируете числами, не имеющими ограничения точности представления, и рассуждаете о погрешности измерений.

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

Хватит уже натягивать носки на руки! И так понятно, что надеваются, но смысл? ))
...
Рейтинг: 0 / 0
Извлечение корня отрицательного числа.
    #38073048
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovmaytonПо моему мы на физике расчитывали погрешности резульатов. Оттуда ИМХО...

Эт вряд ли... Простейший пример: для нахождения диаметра провода измеряется суммарная
ширина 1000 витков (погрешность +-10 витков) провода с точностью до миллиметра
(погрешность +-1мм). Результат имеет точность +-10 микрон. 10 микрон меньше миллиметра. ЧЯДНТ?

Ерунда какая-то. Какую формулу вы использовали?

Я вот читаю здесь. Погрешности измерений физических величин

http://schools.keldysh.ru/sch764/files/pogr.htm

Там табличка из 6 формул.
...
Рейтинг: 0 / 0
Извлечение корня отрицательного числа.
    #38073060
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЕрунда какая-то.
Шутите? Это ж классическая задача
...
Рейтинг: 0 / 0
Извлечение корня отрицательного числа.
    #38073070
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Edd.DragonМусор возникает вследствии того, что конечное количество десятичных знаков может превратиться в бесконечное количество двоичных знаков, которые мы будем вынуждены обрезать и получить не совсем то число, которое было изначально.

Это как раз очевидно. Я говорил про то как бороться.
Если округлять результат любой операции до разряда точности (рассчитанной исходя из операции и значений операндов) то получим как раз именно то значение которое ожидаем.
Как минимум надо округлять до 15 знаков.
Например если операция - присвоение в double из числового литерала то точность операнда - 15 разрядов мантиссы, значит чтобы прочесть в виде десятичного числа то число, которое мы присваивали, надо округлить при чтении до 15 разряда мантиссы.
Если исходное число умножается на 10, то погрешность в 10 раз больше - значит округлять до 14 знака мантиссы (и в следующей операции точность операнда будет уже 14 знаков).
При делении на 10 погрешность уменьшается, значит точность растет но не более 15 знаков (предел double).

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

Хотя есть алгоритмы которым мусор не мешает, но чаще всего это не так.
...
Рейтинг: 0 / 0
Извлечение корня отрицательного числа.
    #38073083
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovskyзначит чтобы прочесть в виде десятичного числа то число, которое мы присваивали, надо округлить при чтении до 15 разряда мантиссы.
Это как раз очевидно. (с) )))

А то, что после умножения на 10 нужноучитывать потерю 1 знака точности - это как раз не всегда помнят.
...
Рейтинг: 0 / 0
Извлечение корня отрицательного числа.
    #38073094
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Edd.DragonmaytonЕрунда какая-то.
Шутите? Это ж классическая задача
Я понял. Ты манипулируешь постановкой и специально выбрал удобную для себя.
...
Рейтинг: 0 / 0
Извлечение корня отрицательного числа.
    #38073116
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, нить рассуждения, т.е. взаимосвязь всей этой пачки приведенных выше знакомых и верных утверждений, я не улавливаю.

Но в чем чушь получения желаемой погрешности ниже цены деления путем однократного измерения множества плотно уложенных объектов измерения вместо одного?
...
Рейтинг: 0 / 0
Извлечение корня отрицательного числа.
    #38073249
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЕрунда какая-то. Какую формулу вы использовали?

Действительно ерунда. Я мало того, что посчитал по неправильной формуле, так ещё и в
подсчёте ошибся. Результирующая точность действительно соответствует пятой формуле по
ссылке. Теперь мне ясно, о чём толкует Анатолий. Он, однако, толкует об относительной
точности, а я как-то больше привык к абсолютной...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Извлечение корня отрицательного числа.
    #38073322
mikhail_n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Пётр Седов

Возможно вы правы, возьму тайм-аут, хочу поэкспериментировать дома с nextafter в районе 3.
...
Рейтинг: 0 / 0
54 сообщений из 54, показаны все 3 страниц
Форумы / C++ [игнор отключен] [закрыт для гостей] / Извлечение корня отрицательного числа.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]