Приближённое вычисление математических функций для калькулей

Использование и разработка софта (преимущественно на ПЦ)

Moderator: Shaos

Andnor
Fanat
Posts: 80
Joined: 01 Jan 2023 11:37

Re: Приближённое вычисление математических функций для кальк

Post by Andnor »

У меня к сожалению нет арифмометра, хотя я даже искал в антикварке и по объявлениям как-то давно. Как им пользоваться знаю, в кабинете информатики в школе он был, и я прочитал в своё время как на нём считать и пробовал воспроизвести несколько операций, когда учитель разрешила мне после уроков с ним позаниматься. Ничего сложного в делении нету. Примерно так же как умножение, только на два оборота ручки на разряд больше.
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Приближённое вычисление математических функций для кальк

Post by Lavr »

Andnor wrote:Ничего сложного в делении нету. Примерно так же как умножение, только на два оборота ручки на разряд больше.
А никто и не сказал, что там что-то супер-сложное... :roll:

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

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

Image

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

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

Приближенные методы с рядами хороши на ЭВМ, поскольку предполагают ответ с заданной точностью.
Как обеспечить заданную точность на арифмометре однозначно сказать трудно, особенно "для любого дурака".
Он же не знает ответа заранее, и не знает насколько приемлемо он к нему приблизился.
А, собственно, арифмометры и прочие калькуляторы для того и придумали, чтобы пользователь получал
удовлетворяющий его результат, не шибко вникая в процесс вычислений.
iLavr
Andnor
Fanat
Posts: 80
Joined: 01 Jan 2023 11:37

Re: Приближённое вычисление математических функций для кальк

Post by Andnor »

Кстати, часть этого метода — это вычисление квадрата очередной итерации корня. Если число — точный квадрат, то будет сразу видно, что результат совпадает и можно закончить раньше. например уже на третьей итерации.
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Приближённое вычисление математических функций для кальк

Post by Lavr »

Andnor wrote:Кстати, часть этого метода — это вычисление квадрата очередной итерации корня.
Очень хорошее приложение к методу... :ebiggrin:
И как это облегчает работу с арифмометром в дополнение ко всему тому, что я уже выше изложил? :roll:
iLavr
Andnor
Fanat
Posts: 80
Joined: 01 Jan 2023 11:37

Re: Приближённое вычисление математических функций для кальк

Post by Andnor »

Да я же выше написал как, но ладно приведу ещё один пример.
Полный квадрат двухзначного числа, но неизвестно какого, t=4489 (сгенерировал командой echo $[(RANDOM/200)**2] в консоли).

Формула следующей итерации: r:=(r^2+t)/(2*r)

Начальное значение r=60 получаем, разбив число на группы по две цифры: 44'89, по таблице умножения 6*6=36, 7*7=49 и ноль от одной группы.

60²=3600, то есть не 4489. Складываем: 8089 и делим на 60*2=120. Получается 67 целых и 49 в остатке.

67²=4489. Всё, точный ответ получен за одну итерацию алгоритма.

А если складывать нечётные числа, то нужно было бы сложить 67 чисел:
1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 3, 7, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 113, 115, 117, 119, 121, 123, 125, 127, 129, 131, 133

С другой стороны, можно конечно это оптимизировать, и использовать чуть более сложный алгоритм. Взять начальное значение 60 найденное тем же способом, что и выше и, соответственно, начинать складывать с 60*2+1=121, то есть в итоге нужно будет считать 3600+121+123+125+127+129+131+133. В таком случе можно обойтись от 0 до 9 итераций на каждую следующую цифру. С таким уточнением в принципе алгоритм имеет право на существование, хотя он всё равно сходится медленнее метода Герона.

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

Но почему я тут один привожу примеры и думаю? У кого арифмометр есть — может попробуете?
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Приближённое вычисление математических функций для кальк

Post by Lavr »

Andnor wrote:Полный квадрат двухзначного числа, но неизвестно какого, t=4489 (сгенерировал командой echo $[(RANDOM/200)**2] в консоли).
Формула следующей итерации: r:=(r^2+t)/(2*r)
Но почему я тут один привожу примеры и думаю? У кого арифмометр есть — может попробуете?
Потому что все остальные люди видят, что формулы с делением, возведением в квадрат и умножением,
для выполнения на механическом арифмометре сложнЫ, и поэтому никто на эту глупость тратить время
не считает нужным.
Лишь только люди, у которых мозг безнадёжно отформатирован Паскалем, упрямо не желают понять,
что этот алгоритм для механического арифмометра сложен, о чём тут уже неоднократно написано.
iLavr
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Приближённое вычисление математических функций для кальк

Post by Lavr »

Andnor wrote:Ещё можно попробовать не складывать нечётные числа, а вычитать их из целевого числа, тогда уже получится что-то похожее на алгоритм деления, но надо иметь арифмометр, чтобы попробовать и отработать.
Я вижу, что вы безнадёжны, и неспособны даже прочитать, что вам здесь пишут: :(
Lavr wrote:Есть и обратный его вариант:
Метод вычетов нечётного числа (арифметический способ). Алгоритм извлечения квадратного корня: Вычитать нечётные числа по порядку, пока остаток не станет меньше следующего вычитаемого числа или равен нулю. Подсчитать количество выполненных действий – это число есть целая часть числа извлекаемого квадратного корня.
Пример 1: вычислить √9
1. 9 − 1 = 8;
2. 8 − 3 = 5;
3. 5 − 5 = 0.
Итого: Выполнено 3 действия

Формула нечётных чисел z=2n+1, где n - целое число.
По длительности метод полностью аналогичен сложению.
iLavr
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Приближённое вычисление математических функций для кальк

Post by Shaos »

Смягчил акценты...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Приближённое вычисление математических функций для кальк

Post by Lavr »

Shaos wrote:Смягчил акценты...
Да в принципе уже давно всё понятно... просто вижу я, что человек практически не замечает,
что тут пишут, и фактически беседует сам с собой... :(

Я думаю, что практически здесь всё можно разрешить следующим опытом:

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

Есть 2 пути:
1. Складывай числа 1 + 3 + 5 + 7 ... и т.д., пока не достигнешь этого числа.
Выставляешь эти числа на колёсах и крутишь ручку. На счётчике будет значение корня.

2. Этот путь, как нас убеждают, более простой и быстрый:
Andnor wrote:Придумай первое приближение к корню.
Формула следующей итерации: r:=(r^2+t)/(2*r)

Начальное значение r=60 получаем, разбив число на группы по две цифры: 44'89, по таблице умножения 6*6=36, 7*7=49 и ноль от одной группы.
Деление осуществляют вот так:
Image

Умножение... ну сам прочитай в инструкции к арифмометру... :-?

Я думаю, что результат опыта будет показателен и однозначен. :ebiggrin:
iLavr
Andnor
Fanat
Posts: 80
Joined: 01 Jan 2023 11:37

Re: Приближённое вычисление математических функций для кальк

Post by Andnor »

Shaos wrote:Смягчил акценты...
Ну если это смягченное, то что-то Lavr совсем разошелся.
Надо взять арифмометр и случайного человека без высшего образования.
Сказать ему: попробуй вычислить корень из числа, к примеру 79 с помощью арифмометра.
Ну серьёзно? Для этого не нужен аримфометр, если считать до целых — будет 8 с чем-то, ближе к 9. Учитывая производную (x²)'=2x, результат будет очень близок к 8.9. Чтобы посчитать до десятых нужно сложить в простейшем варианте 89 чисел, это гораздо дольше чем посчитать в уме!

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

Метод со сложением нечётных чисел имеет смысл только с оптимизацией.
Метод вычетов нечётного числа (арифметический способ). Алгоритм извлечения квадратного корня: Вычитать нечётные числа по порядку, пока остаток не станет меньше следующего вычитаемого числа или равен нулю.
В неоптимизированном виде это тоже фигня. Ну почему Lavr никак этого не может понять? Пусть попробует на реальном арифмометре и требуемая точность будет не меньше двух-трёх цифр, а лучше больше, иначе смысла сравнивать вообще нет. Одну значащую цифру проще найти без всякого арифомометра!

Корень из девяти так найти можно конечно, но что насчёт корня из хотя бы 24964 ?
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Приближённое вычисление математических функций для кальк

Post by Lavr »

Кто здесь упёрто не может понять простых и очевидных вещей, так это вы. :(
Но вы продолжайте... продолжайте этот пустопорожний разговор с сами собой.

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

Но и без них сложить на арифмометре 1 + 2 + 3 + 5 + 7 ... гораздо проще, что очевидно! :ebiggrin:
Это очевидно даже ребёнку из детского сада! :lol:
Andnor wrote:Одну значащую цифру проще найти без всякого арифомометра!
Да вам вообще он не нужен! Возьмите бумагу, карандашик, попишите формулы, умножьте в уме.
Очевидно же, что арифмометр изобрели явно не для вас! :ewink:
iLavr
Andnor
Fanat
Posts: 80
Joined: 01 Jan 2023 11:37

Re: Приближённое вычисление математических функций для кальк

Post by Andnor »

Да вам вообще он не нужен! Возьмите бумагу, карандашик, попишите формулы, умножьте в уме.
Очевидно же, что арифмометр изобрели явно не для вас!
Арифомометр позволяет в несколько раз ускорить вычисления, но ничего принципиально нового не даёт. Сложение, вычитание, умножение и деление на арифмометре почти полностью аналогично таким же действиям в столбик. Просто немного быстрее и бумагу не тратит.
Но и без них сложить на арифмометре 1 + 2 + 3 + 5 + 7 ... гораздо проще, что очевидно! :ebiggrin:
Это очевидно даже ребёнку из детского сада!
А мне вот почему-то очевидно, что складывать сотни маленьких чисел на арифмометре — это долгая и монотонная работа. Хотя может мозгов и требует меньше чем что-то другое.
Кто здесь упёрто не может понять простых и очевидных вещей, так это вы. :(
Но вы продолжайте... продолжайте этот пустопорожний разговор с сами собой.
Ну да, мне тоже малость надоело. Вот почему бы вам не прекратить переливать из пустого в порожнее, а попробовать взять арифомометр и сравнить оба метода, засекая время? Нет, надо зачем-то повторять одни и те же аргументы, на которые мне только и остаётся что отвечать теми же контраргументами.
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Приближённое вычисление математических функций для кальк

Post by Lavr »

Andnor wrote:Сложение, вычитание, умножение и деление на арифмометре почти полностью аналогично таким же действиям в столбик. Просто немного быстрее и бумагу не тратит.
Но и без них сложить на арифмометре 1 + 2 + 3 + 5 + 7 ... гораздо проще, что очевидно! :ebiggrin:
Это очевидно даже ребёнку из детского сада!
А мне вот почему-то очевидно, что складывать сотни маленьких чисел на арифмометре — это долгая и монотонная работа. Хотя может мозгов и требует меньше чем что-то другое.
Наконец-то до вас дошло основное преимущество арифмомера и прочих калькуляторов - бумаги, мозгов и формул не требует! :kruto:

И хотя моей целью не было популяризаторство, я уверен теперь, что в экстренных случаях и критических
ситуациях все теперь запомнили - самый простой способ извлечения квадратного корня, это
складывать 1 + 2 + 3 + 5 + 7 ... пока не достигнем подкоренного числа
! :ebiggrin:
iLavr