Болезни Военный билет Призыв

Все для постройки дома по-быстрому: технологии, личный опыт и материалы для строительства дома. Возведение числа в квадрат в Microsoft Excel

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

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

Из этой статьи вы узнаете:

  • Какие новые материалы для дома и новые технологии чаще всего используют для быстрого строительства загородного дома.
  • Дома из разных материалов, построенные в короткие сроки.
  • Материал для строительства дома в короткие сроки.
  • Из чего класть стены дома. Как быстро построить каменный дом.
  • Какую же стену выбрать для индивидуального дома. Почему так популярно возведение домов по каркасной технологии.
  • Постройка дома из современных материалов. Почему строительство из СИП-панелей упрощает возведение коттеджа.
  • В чём заключаются плюсы свайно-винтового фундамента и технологии несъёмной опалубки.
  • Какие принципы ускоряют возведение строения.

Материал для строительства дома - что выбрать

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

Материал для стен дома. Что выбрать - дерево, панели или класть из камня.

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

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

Строительство дома - выбор материала для самостройщиков и строительных фирм

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

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

Если каркасное строительство - выбор самостройщиков, планирующих в максимально сжатые сроки индивидуально поставить коробку дома, то долговечные крупноформатные панели заводского изготовления (СИП и т.д.) предпочитают использовать застройщики, возводящие постройку при помощи строительных компаний.

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

Особенности быстрого строительства каменного дома

Опыт пользователей FORUMHOUSE говорит о том, что путь к «быстрому дому» у каждого свой, но можно выделить несколько ключевых моментов, общих для всех индивидуальных застройщиков. В первую очередь - это отсутствие собственного жилья, дороговизна квадратных метров в новостройках и нежелание выбрасывать деньги на ветер, беря квартиру в аренду.

Владимир Егоров (ник Bobahina) Пользователь FORUMHOUSE

Семья у меня молодая - я, жена и двое маленьких детей. Своего жилья нет, поэтому пришлось жить на съёмных квартирах. Я как-то посчитал, что за 5 лет «кочевой» жизни мы потратили на аренду (фактически подарили «дяде») 1 млн руб. Поэтому после очередного переезда я принял твёрдое решение - хватит скитаться, надо обзаводиться собственным углом.

Сведя дебит с кредитом, Владимир рассчитал, что, взяв в кредит 1-1.5 млн руб., выгоднее построить дом, а не вкладываться в ипотеку. После того, как большое решение было принято, осталось выбрать технологию строительства, которая позволит с «0» быстро возвести коттедж, готовый для переезда семьи. Проанализировав, «сколько стоит дом построить», Владимир решил разбить стройку на несколько этапов и выбрать материал для несущих стен, который оптимально подойдёт для самостоятельного строительства.

Забегая вперёд, скажем, что нашему пользователю удалось осуществить свою мечту: в максимально сжатые сроки возвести дом размером 10х7.5 м и подготовить первый этаж под ПМЖ. Причём, в качестве строительного материала был выбран газобетон. Стоит отметить, что земельный участок Владимиру предоставил его отец, что стало одним из решающих факторов успеха этой стройки.

Также заметим, что каменный дом был фактически построен силами одного человека за 6 месяцев. В случае использования наёмного труда - бригады из нескольких человек, эти сроки можно было сократить в 2-3 раза, но при увеличении стоимости возводимой конструкции. Поэтому, задумав быстрое строительство, всегда приходится идти на компромисс: скорость/смета, а также выбирать - строить полностью самостоятельно (для этого нужно время) или работать и всё это время контролировать стройку.

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

Строя каменный дом, надо постараться свести к минимуму «мокрые» процессы и оптимизировать все технологические этапы.

Каркасная технология строительства

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

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

Ufonru Пользователь FORUMHOUSE

У меня есть участок в 6 соток в СНТ под Питером. Решил построить на нём дом. Осталось выбрать технологию, чтобы можно было строить одному в свободное время, быстро и качественно. Причём уложиться в 400 тыс. руб.

В итоге перелопачивания информации Ufonru остановил свой выбор на «каркасниках». Нашему пользователю удалось в одиночку, за 80 дней, построить тёплый дом стоимостью в 350 тыс. руб, с мансардой и чистовой отделкой, размером 6х10 м.

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

Надо сразу сказать, что Ufonru обстоятельно подошёл к делу. Для минимизации отходов габариты дома были рассчитаны, исходя из размеров плит ОСП, досок, гипсокартона, утеплителя и т.д. Это позволило использовать всю их полезную площадь, без остатков и сэкономить время на раскрое материала .

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

Используя принцип оптимизации, только цену фундамента под этот дом удалось снизить до 65 тыс. руб.

Нюансы строительства дома из СИП-панелей и сроки возведения свайно-винтового фундамента

В погоне за скоростью возведения коттеджа многие начинающие застройщики наивно полагают, что дом – это коробка из стен со вставленными окнами и дверьми. На самом деле - это не так. Жить в доме можно при наличии минимума коммуникаций - т.н. инженерки. Это - электричество, канализация и вода.

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

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

Квадрат суммы и квадрат разности

Одним из самых простых способов возведения двузначных чисел в квадрат является методика, основанная на использовании формул квадрата суммы и квадрата разности:

Для использования этого метода необходимо разложить двузначное число на сумму числа кратного 10 и числа меньше 10. Например:

  • 37 2 = (30+7) 2 = 30 2 + 2*30*7 + 7 2 = 900+420+49 = 1 369
  • 94 2 = (90+4) 2 = 90 2 + 2*90*4 + 4 2 = 8100+720+16 = 8 836

Практически все методики возведения в квадрат (которые описаны ниже) основываются на формулах квадрата суммы и квадрата разности. Эти формулы позволили выделить ряд алгоритмов упрощающих возведение в квадрат в некоторых частных случаях.

Квадрат близкий к известному квадрату

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

На 1 больше:

Методика: к квадрату числа на единицу меньше прибавляем само число и число на единицу меньше.

  • 31 2 = 30 2 + 31 + 30 = 961
  • 16 2 = 15 2 + 15 + 16 = 225 + 31 = 256

На 1 меньше:

Методика: из квадрата числа на единицу больше вычитаем само число и число на единицу больше.

  • 19 2 = 20 2 - 19 - 20 = 400 - 39 = 361
  • 24 2 = 25 2 - 24 - 25 = 625 - 25 - 24 = 576

На 2 больше

Методика: к квадрату числа на 2 меньше прибавляем удвоенную сумму самого числа и числа на 2 меньше.

  • 22 2 = 20 2 + 2*(20+22) = 400 + 84 = 484
  • 27 2 = 25 2 + 2*(25+27) = 625 + 104 = 729

На 2 меньше

Методика: из квадрата числа на 2 больше вычитаем удвоенную сумму самого числа и числа на 2 больше.

  • 48 2 = 50 2 - 2*(50+48) = 2500 - 196 = 2 304
  • 98 2 = 100 2 - 2*(100+98) = 10 000 - 396 = 9 604

Все эти методики можно легко доказать, выведя алгоритмы из формул квадрата суммы и квадрата разности (о которых сказано выше).

Квадрат чисел, заканчивающихся на 5

Чтобы возвести в квадрат числа, заканчивающиеся на 5. Алгоритм прост. Число до последней пятерки, умножаем на это же число плюс единица. К оставшемуся числу приписываем 25.

  • 15 2 = (1*(1+1)) 25 = 225
  • 25 2 = (2*(2+1)) 25 = 625
  • 85 2 = (8*(8+1)) 25 = 7 225

Это верно и для более сложных примеров:

  • 155 2 = (15*(15+1)) 25 = (15*16)25 = 24 025

Квадрат чисел близких к 50

Считать квадрат чисел, которые находятся в диапазоне от 40 до 60 , можно очень простым способом. Алгоритм таков: к 25 прибавляем (или вычитаем) столько, насколько число больше (или меньше) 50. Умножаем эту сумму (или разность) на 100. К этому произведению добавляем квадрат разности числа, возводимого в квадрат, и пятидесяти. Посмотрите работу алгоритма на примерах:

  • 44 2 = (25-6)*100 + 6 2 = 1900 + 36 = 1936
  • 53 2 = (25+3)*100 + 3 2 = 2800 + 9 = 2809

Квадрат трехзначных чисел

Возведение в квадрат трехзначных чисел может быть осуществлено при помощи одной из формул сокращенного умножения:

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

436 2 = (400+30+6) 2 = 400 2 + 30 2 + 6 2 + 2*400*30 + 2*400*6 + 2*30*6 = 160 000 + 900 + 36 + 24 000 + 4 800 + 360 = 190 096

Тренировка

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

Как известно, площадь прямоугольника вычисляется перемножением длин двух его различных сторон. У квадрата все стороны равны, поэтому нужно перемножить сторону саму на себя. Отсюда и возникло выражение "возвести в квадрат". Пожалуй, самый простой способ возвести любое число в квадрат – взять обычный калькулятор и перемножить нужное число само на себя. Если под рукой нет калькулятора – можно использовать встроенный калькулятор в мобильном телефоне. Для более продвинутых пользователей можно посоветовать воспользоваться приложением Office Microsoft Excel, особенно, если подобные вычисления нужно проводить достаточно часто. Для этого необходимо выделить произвольную ячейку, например G7, и вписать в нее формулу =F7*F7. Далее в ячейку F7 ввести любое число, а в ячейке G7 получить результат.

Как возвести в квадрат число, последняя цифра которого 5. Для возведения в квадрат этого числа нужно отбросить последнюю цифру числа. Полученное число необходимо перемножить с числом на 1 большим. Затем нужно дописать число 25 справа после полученного результата. Пример. Пусть требуется получить квадрат числа 35. После того, как будет отброшена последняя цифра 5, остается число 3. Добавляется 1- получается число 4.3х4=12. Дописывается 25 и получается результат 1225. 35х35=3*4 дописать 25=1225.

Как возвести в квадрат число, последняя цифра которого 6. Этот алгоритм подойдет для тех, кто разобрался с вопросом, как возвести в квадрат число, оканчивающиеся на цифру 5. Как известно из математики, квадрат двучлена можно рассчитать по формуле (А+В) х(А+В) =АхА+2хАхВ + ВхВ. В случае с возведением в квадрат числа A, последняя цифра которого 6, это число можно предтставить как А=В+1, где В - число, которое на 1 меньше числа А, поэтому его последняя цифра - 5. В этом случае формулу можно представить в более простом виде (В+1) х(B+1) =ВхВ+2хВх1+1х1=ВхВ + 2хВ+1. Пусть для примера это число будет 16. Решение 16 х16=15 х15+2х15 х1+1х1=225+30+1=256Устное правило: для того, чтобы найти квадрат числа, заканчивающегося на 6: нужно предыдущее число возвести в квадрат, добавить два раза предыдущее число и добавить 1.

Как возвести в квадрат числа от 11 до 29. Для возведения в квадрат чисел от 11 до 19, нужно к исходному числу добавить число единиц, получившийся результат умножить на 10 и приписать справа возведенное в квадрат число единиц. Пример. Возвести в квадрат 13. Число единиц в этом числе – 3. Далеетребуется вычислить промежуточное число 13+3=16. Затем умножить его на 10. Получается 160. Квадрат числа единиц 3х3=9. Итоговый результат 169. Для чисел третьего десятка применяется аналогичный алгоритм, только умножать нужно на 20 и квадрат единиц прибавлять, а не приписывать. Пример. Вычислить квадрат числа 24. Находится число единиц – 4. Вычисляется промежуточное число – 24+4=28. После умножения на 20 получается 560. Квадрат числа единиц 4х4=16. Итоговый результат 560+16=576.

Как возвести в квадрат числа от 40 до 60. Алгоритм достаточно прост. Сначала нужно найти, насколько данное число больше или меньше середины диапазона числа 50. К полученному результату добавить (если число больше 50) или вычесть (если число меньше 50) 25. Полученную сумму (или разность) умножить на 100. К полученному результату добавить квадрат разности между числом, квадрат которого нужно найти, и числом 50. Пример: нужно найти квадрат числа 46. Разность 50-46=4.5-4=1.1х100=0.4х4=6.0+16=2116. Итог: 46х46=2116.

Еще один прием как возвести в квадрат числа от 40 до 60. Для того, чтобы вычислить квадрат числа от 40 до 49, необходимо число единиц увеличить на 15, полученный результат умножить на 100, справа от него приписать квадрат разности между последней цифрой заданного числа и 10. Пример. Вычислить квадрат числа 42. Число единиц этого числа - 2. Добавляется 15: 2+15=17. Находится разность этого же числа единиц и 10. Она равна 8. Возводится в квадрат: 8х8=64. Число 64 приписывается справа к предыдущему результату 17. Получается итоговое число 1764. Если число находится в диапазоне от 51 до 59, то для возведения его в квадрат используется тот же алгоритм, только к числу единиц нужно прибавлять 25.

Как возводить в квадрат в уме любое двузначное число. Если человек знает, как возводить в квадрат однозначные числа, другими словами - знает таблицу умножения, то у него не возникнет проблем при вычислении квадратов двузначных чисел. Пример. Нужно возвести двузначное число 36 в квадрат. Это число умножается на количество своих десятков. 36х3=8. Далее нужно найти произведение цифр числа: 3х6=18. Затем сложить оба результата. 108+18=126. Следующий шаг: нужно возвести в квадрат единицы исходного числа: 6х6=36. В полученном произведении определяется количество десятков – 3 и добавляется к предыдущему результату: 126+3=129. И последний шаг. Справа от полученного результата приписывается количество единиц исходного числа, в данном примере - 6. Конечный результат – число 1296.

Существует множество способов как возводить в квадрат различные числа. Некоторые из приведенных алгоритмов достаточно простые, некоторые – достаочно громоздкие и на первый взгляд непонятные. Многими из них люди пользуются веками. Каждый человек может сам разработать свои собственные более понятные и интересные алгоритмы. Но если есть проблемы с устным счетом или возникли другие трудности – придется привлечь технические средства.

Представим, что оператора возведения в степень нет в нашем распоряжении, так что остаётся лишь умножать. Определение степени с целым неотрицательным показателем x n позволяет сделать вычисление с использованием n − 1 умножения. Но умножение - достаточно затратная операция (вспомним умножение в столбик). Поэтому постараемся свести к минимуму число выполняемых умножений.

К примеру, если показатель степени сам является степенью двойки, n = 2 m , то потребуется всего лишь m умножений, точнее, возведений в квадрат: x 2 m = x 2 2 2 … 2 . Это полезное наблюдение можно распространить на общий случай, воспользовавшись очевидными равенствами: x n = x 2 n 2 при чётном n , x ⁢ x 2 n − 1 2 при нечётном n . Можно отнестись к этим формулам как к рекурсивному способу вычисления степени. Конечно же эти соотношения нужно дополнить граничными условиями x 0 = 1 , x 1 = x .

Оказывается, количество умножений, которое следует выполнить для возведения в степень в соответствии с описанной рекурсивной процедурой, вычисляется по формуле μ n = ζ n + 2 ⁢ ε n − 2 , где ζ n и ε n - количества соответственно нулей и единиц в двоичной записи числа n . Эта величина растёт крайне медленно с ростом n , о чём свидетельствует таблица:

n μ n
1 0
10 4
100 8
1000 14
10000 17
100000 21
1000000 25
10000000 30
100000000 37
1000000000 41
10000000000 43

Очень маловероятно, что нам придётся возводить что-то в 10000000000 -ю степень, но, если бы пришлось, то мы обошлись бы всего сорока тремя умножениями!

Формула находится в полном согласии с рассмотренным ранее частным случаем, когда n = 2 m и ζ = m , ε = 1 . В общем же случае заметим, что цифры в двоичном разложении числа равны остаткам от многократного деления этого числа на два. Появление нулевой цифры пускает рекурсивный алгоритм по первому (чётному) пути, что добавляет одно лишнее умножение. Цифра один выбирает нечётную ветвь алгоритма, что требует двух дополнительных умножений.

Мы разберём, помимо наивной версии программы, не заслуживающей отдельного разговора из-за её тривиальности, ещё две: рекурсивную и итеративную. Оба варианта основаны на быстром методе возведения в степень.

Раньше мы обсуждали преимущества нерекурсивных алгоритмов перед рекурсивными. Было бы заманчиво реализовать быстрое возведение в степень без рекурсии, при помощи одного цикла. Эта задача оказывается не такой простой, как хотелось бы. Нам стоит вооружиться методом, который позволял бы строить циклы не в результате божественного откровения (оно посещает нас довольно редко), а целенаправленно. Метод построения цикла при помощи инварианта - как раз то, что нам сейчас нужно.

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

Пусть в программе задействован набор переменных X = x y … z . Назовём его состоянием программы . Цикл считается правильным, если в результате его работы выполнено нужное соотношение между переменными. Под соотношением понимается некоторое утверждение про переменные. Что значит утверждение? Рассмотрим функцию G ⁡ X , зависящую от состояния, и принимающую логическое значение. Равенство G ⁡ X = да означает, что утверждение выполняется, а в противном случае не выполняется. Функцию G будем называть целевой функцией цикла .

Тело цикла состоит из команд, присваивающих переменным X новые значения F ⁡ X: X ← F ⁡ X Таким образом строится рекуррентная последовательность состояний программы. Цель цикла достигнута, когда целевая функция примет истинное значение, так что в качестве условия цикла можно взять выражение ¬ G ⁡ X: цикл пока ¬ G ⁡ X X ← F ⁡ X конец цикла Мы предполагаем, что к моменту входа в цикл переменные X имели начальные значения X 0 .

Зачастую бывает неудобно вычислять условие завершения цикла G ⁡ X . Тогда, если повезёт, можно попытаться подобрать более сильное условие Q ⁡ X (то есть такое, что для всех X выполняется Q ⁡ X ⇒ G ⁡ X), которое проще вычислить.

Весь этот формализм не отвечает на вопросы о том, как найти преобразование F такое, чтобы цикл рано или поздно завершился, и как построить условие окончания цикла Q ⁡ X . Метод инвариантов помогает найти и преобразование, и условие.

Ключевую роль в методе играет инвариант цикла - ещё одна функция состояния, принимающая логические значения. Функция I ⁡ X называется инвариантом цикла, если выполнены условия:

    I ⁡ X 0 - инвариант принимает истинное значение в начальном состоянии;

    I ⁡ X ⇒ I ⁡ F ⁡ X - истинность инварианта сохраняется при проходе цикла;

    I ⁡ X ∧ Q ⁡ X ⇒ G ⁡ X - одновременная истинность инварианта и условия окончания цикла влекут истинность целевого условия.

Если перед входом в цикл позаботиться о выполнении условия I ⁡ X и подобрать преобразование F ⁡ X , при котором сохраняется истинность инварианта, а цикл когда-нибудь завершится, цель будет достигнута по завершении цикла.

От абстрактных идей пора перейти к конкретным примерам. Построим алгоритм наивного вычисления степени p = x n .

Предусмотрим в программе набор переменных X = p x n . Их начальные значения (перед входом в цикл) равны X 0 = p 0 x 0 n 0 . Значения x 0 и n 0 являются входными параметрами алгоритма.

Придумаем цикл, по завершении которого переменная p получит значение x 0 n 0 , так что в качестве целевой функции примем G ⁡ p x n = p = x 0 n 0 .

Простейший (но отнюдь не самый быстрый) алгоритм сводит задачу о возведении в степень n к задаче о возведении в степень n − 1 , так что в цикле переменная n будет уменьшаться на единицу до своего обнуления. Поэтому условием окончания сделаем Q ⁡ p x n = n = 0 .

Теперь нужно подобрать инвариант. Пусть в теле цикла переменным p x n присваиваются новые значения p ′ x ′ n ′ , причём, как мы решили ранее, n ′ = n − 1 . Нетрудно проверить, что функция I ⁡ p x n = x 0 n 0 = p ⁢ x n годится на роль инварианта.

Действительно, I ⁡ p 0 x 0 n 0 = x 0 n 0 = p 0 ⁢ x 0 n 0 истинно, если положить p 0 = 1 . Второе условие, которому должен удовлетворять инвариант, также выполнено. Поскольку должно выполняться I ⁡ p x n ⇒ I ⁡ p ′ x ′ n ′ , то есть x 0 n 0 = p ⁢ x n ⇒ x 0 n 0 = p ′ ⁢ x ′ n − 1 , достаточно положить p ′ = p ⁢ x и x ′ = x , чтобы обеспечить инвариантность. Наконец, проверим третье условие, I ⁡ p x n ∧ Q ⁡ p x n ⇒ Q ⁡ p x n , то есть x 0 n 0 = p ⁢ x n ∧ n = 0 ⇒ p = x 0 n 0 . Очевидно, и оно выполняется. Проверяя условия, мы заодно нашли преобразования, происходящие в теле цикла.

Мы пришли к алгоритму p ← 1 цикл пока n ≠ 0 p n ← p ⁢ x n − 1 конец цикла

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

Отличие быстрого алгоритма от наивного состоит в том, что в цикле переменная n вместо того, чтобы уменьшаться на единицу, уменьшается примерно вдвое. Точнее, если n чётно, оно делится пополам, а если нечётно - уменьшается на единицу и затем делится пополам. Понятно, что со временем n обратится в нуль, и это станет, как и в наивном алгоритме, условием завершения цикла.

Возьмём без изменений из наивного алгоритма инвариант I ⁡ p x n = x 0 n 0 = p ⁢ x n , и станем добиваться, чтобы выполнялось I ⁡ p x n ⇒ I ⁡ p ′ x ′ n ′ , где на этот раз n ′ = n 2 при чётном n , n − 1 2 при нечётном n . Тогда придётся обеспечить выполнение условия x 0 n 0 = p ⁢ x n ⇒ x 0 n 0 = p ′ ⁢ x ′ n 2 при чётном n , x 0 n 0 = p ′ ⁢ x ′ n − 1 2 при нечётном n , то есть p ⁢ x n = p ′ ⁢ x ′ n 2 при чётном n , p ′ ⁢ x ′ n − 1 2 при нечётном n . Чтобы это равенство выполнялось, достаточно положить p ′ = p при чётном n , p ⁢ x при нечётном n , x ′ = x 2 .

Результатом наших изысканий стал алгоритм p ← 1 цикл пока n ≠ 0 если n mod 2 = 1 p ← p ⁢ x n ← n − 1 конец если x ← x 2 n ← n 2 конец цикла

Следует признаться, что этот алгоритм мы первоначально составили, не прибегая к методу инвариантов. Программа хорошо работала, но, несмотря на её краткость, оказалась трудной для понимания. Мы никак не могли подобрать нужных слов, чтобы объяснить её читателю и доказать её правильность. И только метод инвариантов дал и объяснение, и доказательство.

Не стоит считать, что метод инвариантов делает создание любого цикла рутинной задачей. Остаётся ещё большой простор для творчества. Например, построение инварианта во многих случаях является не самым очевидным делом. Поэтому расскажем, какие соображения привели нас к инварианту I ⁡ p x n = x 0 n 0 = p ⁢ x n . В поисках инвариантного соотношения между переменными программы, сохраняющего истинность при повторениях тела цикла, мы составили таблицу значений этого набора переменных. Для примера мы выбрали возведение двойки в тринадцатую степень: p x n 1 2 13 2 4 6 2 16 3 32 256 1 8192 65536 0

Закономерность, выполняемая в каждой строке таблицы, была быстро найдена: значение выражения p ⁢ x n оказалось одним и тем же, и равным как раз 2 13 .

Оказывается, задача о быстром возведении числа в степень n тесно связана вот с какой задачей. Представим вычислительную машину, которая располагает лишь одним регистром (ячейкой памяти), способным хранить целое неотрицательное число. Набор команд этой воображаемой машины содержит только две инструкции: D удваивает содержимое регистра (от слова Double - удвоить) и I увеличивает регистр на единицу (Increment - увеличить). Изначально регистр содержит ноль. Требуется найти наиболее короткую программу для машины, после выполнения которой в регистре окажется число n . Программа - это некоторая конечная последовательность инструкций D и I .

Для любого заданного n существует бесконечно много программ. К примеру, всегда годится программа I I I … I (всего n инструкций I). Кроме того, приписывание любого количества инструкций D к началу правильной программы, очевидно, не меняет её правильность.

Получается своеобразная система счисления: каждому целому неотрицательному числу можно поставить в соответствие программу для его получения - слово над алфавитом из двух букв (или лучше сказать, цифр), D и I . Недостатком этой системы счисления является её многозначность: для каждого числа найдётся бесконечно много представлений. Можно попытаться устранить этот недостаток, если среди всевозможных представлений выбирать самое короткое. Но даже самое короткое представление не является единственным. Понятно, кратчайшее представление следует искать среди начинающихся с I , так как если оно начинается с D , его можно укоротить, выкинув это D . Теперь заметим, что если I I … - кратчайшее представление, то I D … - также кратчайшее представление (увеличение единицы на единицу равносильно её удвоению). При всех остальных значениях регистра удвоение даёт больший результат, чем прибавление единицы. Эту единственную оставшуюся неоднозначность устраняем, потребовав дополнительно, чтобы в представлении не было подряд двух «цифр» I . Полученное представление назовём каноническим .

Оказывается, каноническое представление можно легко получить из двоичной записи числа n: нужно каждый ноль заменить на «цифру» D , а каждую единицу - на «цифры» D I . После того, как это будет сделано, следует отбросить «цифру» D из начала полученной программы, если она там окажется. Например, для n = 13 = 1101 2 получается программа I D I D D I . И действительно, 13 = 0 + 1 ⋅ 2 + 1 ⋅ 2 ⋅ 2 + 1 .

Но какое же всё это имеет отношение к быстрому возведению в степень? Пусть имеется некоторое представление показателя степени n . Это значит, что n получается из нуля в результате последовательных увеличений на единицу или удвоений. Но прибавление единицы к показателю степени равносильно домножению всей степени на x , а удвоение показателя - возведению степени в квадрат. Если в нашем распоряжении имеется готовое представление показателя степени, получаем алгоритм p ← 1 цикл для каждой цифры δ из представления n если δ = I p ← p ⁢ x иначе p ← p 2 конец если конец цикла Беда в том, что для получения «цифр» представления прежде придётся устроить другой цикл. Совместить оба цикла будет проблематично, поскольку «цифры» нужны в порядке их записи, то есть слева направо. При этом их гораздо проще получать справа налево (точно так же, как и цифры двоичной записи числа). Наше решение, ради которого мы занялись методом инвариантов, обходит эту трудность. Тот цикл неявно получает «цифры» представления показателя степени справа налево и в зависимости от очередной цифры выполняет нужные действия: цикл пока n ≠ 0 если n mod 2 = 1 I n ← n − 1 иначе D n ← n 2 конец если конец цикла Здесь в случае I следует выполнить команду p ← p ⁢ x , а в случае D - команду x ← x 2 . Разумеется, перед циклом нужно присваивание p ← 1 . Получившийся алгоритм, как легко видеть, равносилен созданному ранее.

Основная трудность нашей задачи заключалась в создании алгоритма. Теперь, когда алгоритмы готовы, не составит никакого труда переложить их на Perl. В связи с этим мы опускаем раздел «Разработка» и сразу переходим к готовым программам.


Возведение в квадрат трехзначных чисел - впечатляющее проявление искусности в ментальном фокусничестве. Так же как при возведении в квадрат двузначного числа выполняется его округление в большую или меньшую сторону для получения кратного 10, для возведения трехзначного числа в квадрат его нужно округлить в большую или меньшую сторону для получения кратного 100. Возведем в квадрат число 193.

Путем ок ругления 193 до 200 (второй сомножитель стал равным 186) задача типа «3 на 3» преобразовалась в более простую типа «3 на 1», так как 200 х 186 - это всего лишь 2 х 186 = 372 с двумя нулями в конце. Почти готово! Теперь все, что нужно сделать, это прибавить 7 2 = 49 и получить ответ - 37 249.

Попробуем возвести в квадрат 706.




При округлении числа 706 до 700 необходимо еще и изменить это же число на 6 в большую сторону для получения 712.

Так как 712 х 7 = 4984 (простая задача типа «3 на 1»), 712 х 700 = = 498 400. Прибавив 6 2 = 36, получаем 498 436.

Последние примеры не так уж страшны, потому что не включают в себя сложения как такового. Кроме того, вы наизусть знаете, чему равняются 6 2 и 7 2 . Возводить в квадрат число, которое отстоит от кратного 100 больше чем на 10 единиц, значительно труднее. Попробуйте свои силы с 314 2 .


В этом примере число 314 уменьшилось на 14 ради округления до 300 и увеличилось на 14 до 328. Умножаем 328 х 3 = 984 и добавляем два нуля в конце, чтобы получить 98 400. Затем прибавляем квадрат 14. Если вам мгновенно приходит на ум (благодаря памяти или быстрым вычислениям), что 14 2 = 196, то вы в хорошей форме. Далее просто сложите 98 400 + 196 для получения окончательного ответа 98 596.

Если вам нужно время для подсчета 14 2 , повторите «98 400» несколько раз, прежде чем продолжить. Иначе можно вычислить 14 2 = 196 и забыть, к какому числу нужно прибавить произведение.




Если у вас есть аудитория, которую вы хотели бы впечатлить, можете произнести вслух «279 000», прежде чем найдете 292. Но такое не пройдет в случае каждой решаемой задачи.

Например, попытайтесь возвести в квадрат 636.




Теперь ваш мозг по-настоящему заработал, не правда ли?

Не забывайте повторять «403 200» самому себе несколько раз, пока будете возводить в квадрат привычным способом 36, чтобы получить 1296. Самое сложное - суммировать 1296 + 403 200. Делайте это по одной цифре за раз, слева направо, и получите ответ 404 496. Даю слово, что, как только вы лучше ознакомитесь с возведением в квадрат двузначных чисел, задачки с трехзначными значительно упростятся.

Вот еще более сложный пример: 863 2 .



Первая проблема - надо решить, какие числа перемножать. Несомненно, одно из них будет 900, а другое - больше 800. Но какое именно? Это можно рассчитать двумя способами.

1. Сложный способ: разность между 863 и 900 составляет 37 (дополнение для 63), вычитаем 37 из 863 и получаем 826.

2. Легкий способ: удваиваем число 63, получаем 126, теперь последние две цифры этого числа прибавляем к числу 800, что в итоге даст 826.

Вот как работает легкий способ. Поскольку оба числа имеют одинаковую разность с числом 863, их сумма должна равняться удвоенному числу 863, то есть 1726. Одно из чисел 900, значит, другое будет равно 826.

Затем проводим следующие вычисления.




Если вам трудно вспомнить число 743 400 после возведения в квадрат числа 37, не расстраивайтесь. В следующих главах вы узнаете систему мнемотехники и научитесь запоминать такие числа.

Попробуйте свои силы на самой трудной пока задаче - на возведении в квадрат числа 359.




Для получения 318 либо отнимите 41 (дополнение для 59) от 359, либо умножьте 2 х 59 = 118 и используйте последние две цифры. Далее умножьте 400 х 318 = 127 200. Прибавление к этому числу 412 = 1681 даст в сумме 128 881. Вот и все! Если вы сделали все правильно с первого раза, вы молодец!

Завершим этот раздел большой, но легкой задачей: вычислим 987 2 .




УПРАЖНЕНИЕ: ВОЗВЕДЕНИЕ В КВАДРАТ ТРЕХЗНАЧНЫХ ЧИСЕЛ

1. 409 2 2. 805 2 3. 217 2 4. 896 2

5. 345 2 6. 346 2 6. 276 2 8. 682 2

9. 413 2 10. 781 2 11. 975 2

Что за дверью номер 1?

Математической банальностью 1991 года, которая поставила всех в тупик, оказалась статья Мэрилин Савант - женщины с самым высоким в мире IQ (что зарегистрировано в Книге рекордов Гиннесса) - в журнале Parade. Этот парадокс стал известен как «проблема Монти Холла», и заключается он в следующем.

Вы участник шоу Монти Холла «Давайте совершать сделки» (Let’s Make a Deal). Ведущий дает вам возможность выбрать одну из трех дверей, за одной из которых находится большой приз, за двумя другими - козы. Допустим, вы выбираете дверь № 2. Но прежде чем показать, что скрывается за этой дверью, Монти открывает дверь № 3. Там коза. Теперь в своей дразнящей манере Монти спрашивает вас: вы хотите открыть дверь № 2 или рискнете посмотреть, что находится за дверью № 1? Что вам следует сделать? Если предположить, что Монти собирается подсказать вам, где нет главного приза, то он всегда будет открывать одну из «утешительных» дверей. Это оставляет вас перед выбором: одна дверь с большим призом, а вторая - с утешительным. Сейчас ваши шансы составляют 50 на 50, не так ли?

А вот и нет! Шанс, что вы правильно выбрали в первый раз, по-прежнему 1 к 3. Вероятность того, что большой приз окажется за другой дверью, увеличивается до 2/3, потому что вероятности в сумме должны давать 1.

Таким образом, изменив свой выбор, вы удвоите шансы на выигрыш! (В задаче предполагается, что Монти всегда будет давать игроку возможность сделать новый выбор, показывая «невыигрышную» дверь, и, когда ваш первый выбор окажется правильным, откроет «невыигрышную» дверь наугад.) Поразмышляйте об игре с десятью дверями. Пусть после вашего первого выбора ведущий откроет восемь «невыигрышных» дверей. Здесь ваши инстинкты, скорее всего, потребуют поменять дверь. Люди обычно ошибаются, думая, что если Монти Холл не знает, где главный приз, и открывает дверь № 3, за которой оказывается коза (хотя мог бы быть и приз), то дверь № 1 с вероятностью в 50 процентов будет нужной. Такое рассуждение противоречит здравому смыслу, тем не менее Мэрилин Савант получила груды писем (многие от ученых, и даже математиков), в которых говорилось, что ей не следовало писать о математике. Конечно, все эти люди были неправы.