|
Как ПРАВИЛЬНО вычислять корень N-ой степени
|
|||
---|---|---|---|
#18+
В Каше есть стандартная функция возведения в степень. Она равна "**". Имеем число 3. Возводим его в 3-ю степень (3**3). Получаем 27. Этот же оператор используется и для извлечения корня n-ой степени Теперь вычислим из 27 корень кубический. 27**(1/3)=2,999999999963. Элементарно, а ответ явно кривой. Отсюда вопрос, как правильно (какую) использовать функцию для извлечения корня n-ой степени? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2016, 11:09 |
|
Как ПРАВИЛЬНО вычислять корень N-ой степени
|
|||
---|---|---|---|
#18+
О-О-О, Не уверен, что это правильно , но Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2016, 11:23 |
|
Как ПРАВИЛЬНО вычислять корень N-ой степени
|
|||
---|---|---|---|
#18+
О-О-О, Через логарифм получается чуть ровнее ))) Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2016, 11:27 |
|
Как ПРАВИЛЬНО вычислять корень N-ой степени
|
|||
---|---|---|---|
#18+
Александр Коблов, И да и нет. Всё что менее 10 - работает. Всё что более 100 - та же проблема. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2016, 11:28 |
|
Как ПРАВИЛЬНО вычислять корень N-ой степени
|
|||
---|---|---|---|
#18+
ну я, Да, ровнее. Но интересует возможность использовать ПРАВИЛЬНУЮ функцию, а не заменители. У меня стойкая уверенность, что расчёт логарифма будет явно идти дольше при большом количестве вычислений. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2016, 11:33 |
|
Как ПРАВИЛЬНО вычислять корень N-ой степени
|
|||
---|---|---|---|
#18+
Вот код: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31.
Вопрос. Какой из них верный? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2016, 11:43 |
|
Как ПРАВИЛЬНО вычислять корень N-ой степени
|
|||
---|---|---|---|
#18+
Отличия не маленькие. 1,167 и 1,007 Это 16% в конечном результате. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2016, 11:44 |
|
Как ПРАВИЛЬНО вычислять корень N-ой степени
|
|||
---|---|---|---|
#18+
Калькулятор Windows выдаёт вообще 1,36 Я ему доверяю больше. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2016, 11:48 |
|
Как ПРАВИЛЬНО вычислять корень N-ой степени
|
|||
---|---|---|---|
#18+
Пардон, закралась ошибка во вторую часть кода. Вместо 5-ти циклов указал 7. С исправленным кодом получил сдедующие результаты. Отсюда вывод: s www=www**$double(1/i) даёт гораздо более точные результаты ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2016, 11:52 |
|
Как ПРАВИЛЬНО вычислять корень N-ой степени
|
|||
---|---|---|---|
#18+
О-О-О, А в первом цикле вы 1/3*$zln(www) на 1/i*$zln(www) заменили? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2016, 12:00 |
|
Как ПРАВИЛЬНО вычислять корень N-ой степени
|
|||
---|---|---|---|
#18+
Александр КобловО-О-О, А в первом цикле вы 1/3*$zln(www) на 1/i*$zln(www) заменили?Каюсь, нет. Сейчас проверю. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2016, 12:09 |
|
Как ПРАВИЛЬНО вычислять корень N-ой степени
|
|||
---|---|---|---|
#18+
Всем спасибо. Вопрос снят. Самый точный результат получается через Логарифм. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2016, 12:15 |
|
Как ПРАВИЛЬНО вычислять корень N-ой степени
|
|||
---|---|---|---|
#18+
Неплохая задача, чтобы занять время бета-тестеров Intersystems. А в практическом плане... Хотел бы я видеть заказчика ПО на Cache, для реализации ТЗ которого нужно с большой точностью извлекать корни. Я написал тонны кода на Cache для очень разных заказчиков, но с такой экзотикой не встретился ни разу. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2016, 12:19 |
|
Как ПРАВИЛЬНО вычислять корень N-ой степени
|
|||
---|---|---|---|
#18+
О-О-ОВсем спасибо. Вопрос снят.Ещё не снят: вместо $PIECE($NOW(),",",4) нужно $PIECE($NOW(),",",2), а ещё лучше использовать $zh, которая рекомендуется самим производителем для бенчмарков: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2016, 12:36 |
|
Как ПРАВИЛЬНО вычислять корень N-ой степени
|
|||
---|---|---|---|
#18+
EvLaUyНеплохая задача, чтобы занять время бета-тестеров Intersystems. А в практическом плане... Хотел бы я видеть заказчика ПО на Cache, для реализации ТЗ которого нужно с большой точностью извлекать корни. Я написал тонны кода на Cache для очень разных заказчиков, но с такой экзотикой не встретился ни разу. Было дело, ПО для стендов испытания авиационных двигателей. Там формулы были "трехэтажные", а особенно когда поиск корней итерационным методом... Да еще в темпе поступления измеряемых данных, каждые 20 мс полные перерасчеты... Газодинамика... ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2016, 13:21 |
|
Как ПРАВИЛЬНО вычислять корень N-ой степени
|
|||
---|---|---|---|
#18+
Интересная тема, спасибо! Начал обсуждение на DC. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2016, 02:02 |
|
Как ПРАВИЛЬНО вычислять корень N-ой степени
|
|||
---|---|---|---|
#18+
servit...а ещё лучше использовать $zh, которая рекомендуется самим производителем для бенчмарков.В целом согласен, сам стараюсь использовать $zhorolog всюду, где можно. К сожалению, этой полезной svn нет в GT.M и видимо не будет, т.к. её место уже занято. Однако по приведённой ссылке открылась не рекомендация, а лишь пример использования $zhorolog. Более того, у ISC, насколько знаю, отсутствует документ на тему, как правильно мерить время исполнения кода, а если и есть, то они сами его не читали (судя по некоторым постам на Community). ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2016, 11:34 |
|
Как ПРАВИЛЬНО вычислять корень N-ой степени
|
|||
---|---|---|---|
#18+
Alexey Maslov, Насколько я помню, раньше разрешение $zhorolog было выше, а сейчас только 6 знаков после запятой, чего не всегда хватает. Теперь две рядом исполняемых команды выдадут одно и то же значение $zhorolog. Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2016, 11:56 |
|
Как ПРАВИЛЬНО вычислять корень N-ой степени
|
|||
---|---|---|---|
#18+
AlexKBНасколько я помню, раньше разрешение $zhorolog было выше, а сейчас только 6 знаков после запятой, чего не всегда хватает. Раньше было круче! Зачем урезали..?ДокументацияThe second number ( sssss.ffffff ) is the number of seconds (and fractional seconds) since midnight of the current day. Caché increments the sssss field from 0 to 86399 seconds. When it reaches 86399 at midnight, Caché resets the sssss field to 0 and increments the date field by 1. The number of ffffff fractional digits is the maximum precision supported by the current operating system. For more on Windows fractional seconds Microseconds on Windows , see below. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2016, 13:00 |
|
Как ПРАВИЛЬНО вычислять корень N-ой степени
|
|||
---|---|---|---|
#18+
AlexKB, не припомню такого; тебе проще проверить, т.к. имеешь старые версии под рукой. Однако документация утверждает, что Date and Time Functions Compared$NOW returns the local date and time for the current process. $NOW returns the date and time in Cache storage format. It includes fractional seconds; the number of fractional digits is the maximum precision supported by the current operating system .Про $zh подобного объяснения нет, но можно предположить, что использовался аналогичный подход. У меня и под Windows, и под Linux $zh содержит 6 цифр после десятичной точки. Больше, наверное, взять неоткуда. AlexKBТеперь две рядом исполняемых команды выдадут одно и то же значение $zhorolog. Возможно, просто компы стали быстрее :) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2016, 13:03 |
|
Как ПРАВИЛЬНО вычислять корень N-ой степени
|
|||
---|---|---|---|
#18+
servit, ДокументацияThe second number (sssss.ffffff) is the number of seconds (and fractional seconds) since midnight of the current day...Мы с вами практически одновременно процитировали описание другой функции - $Now(). Про $zh известно лишь: Документация$ZHOROLOG contains the number of seconds that have elapsed since the most recent Caché startup. This is a count, which is independent of clock changes and day boundaries. The value is expressed as a floating point number, indicating seconds and fractions of a second. The number of decimal digits is platform-dependent. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2016, 13:12 |
|
Как ПРАВИЛЬНО вычислять корень N-ой степени
|
|||
---|---|---|---|
#18+
Alexey Maslov, Да, боюсь, что такие прелести были еще под Win 2000, или даже Win NT. Хотя и от материнки тоже сильно может зависеть. Во всяком случае hang 0.01 на некоторых материнках держала 10 мсек, а на некоторых только 15 мсек. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2016, 13:35 |
|
Как ПРАВИЛЬНО вычислять корень N-ой степени
|
|||
---|---|---|---|
#18+
AlexKB, немного изменив твой пример (две $zh подряд - всё же, ИМХО, через край): Код: plaintext
Код: plaintext 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2016, 14:39 |
|
Как ПРАВИЛЬНО вычислять корень N-ой степени
|
|||
---|---|---|---|
#18+
AlexKB, Строчка понравилась, посмотрел такой вариант. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2016, 16:54 |
|
Как ПРАВИЛЬНО вычислять корень N-ой степени
|
|||
---|---|---|---|
#18+
rstr, Чему немало удивился.USER>f i=1:1:1000 s a=$zh,b=$zh i b-a>.000002 w !,"i=",i," b-a=",b-a Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2016, 16:56 |
|
|
start [/forum/topic.php?fid=39&msg=39260257&tid=1556451]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
53ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 274ms |
total: | 419ms |
0 / 0 |