Для начала рассмотрим задачу, которую всё-таки могут предложить на собеседовании.
38. Вычислить сумму ( «Задачи для детей от 5 до 15 лет»)
(с ошибкой не более 1% от ответа)
Алгоритм для вычисления частичных сумм этого ряда на языке Scheme (Lisp) в среде drRacket (drRacket позволяет производить вычисления в обыкновенных дробях):
#lang racket
(define series_sum
( lambda (n)
(if (= n 0) 0
(+ (/ 1 (* n (+ n 1))) (series_sum(- n 1)))
) ) )
(series_sum 10)
(series_sum 100)
(series_sum 1000)
(series_sum 10000)
(series_sum 100000)
(series_sum 1000000)
(define series_sum_1
( lambda (n)
(if (= n 0) 0
(+ (/ 1.0 (* n (+ n 1.0))) (series_sum_1(- n 1.0)))
) ) )
(series_sum_1 10)
(series_sum_1 100)
(series_sum_1 1000)
(series_sum_1 10000)
(series_sum_1 100000)
(series_sum_1 1000000)
Два последних примера drRacket вычислил с ошибкой
Если рассмотреть частичные суммы в обыкновенных дробях, то можно заметить, что сумма ряда равна
Напомню, что при
Во втором томе «Курса дифференциального и интегрального исчисления» (363) рассматривается общий случай
Далее, перейдём к основной теме статьи и рассмотрим ещё один пример из задачника.
43. Числа кроликов («Фибоначчи»), образуют последовательность в которой для всякого . Найти наибольший общий делитель чисел и .
Ответ: Два соседних числа Фибоначчи взаимно просты, т.е.
(gcd — это greatest common divisor, т.е. НОД).
Доказательство из книги «За страницами учебника математики» [10-11]:
Из равенства следует, что . Пятясь таким образом назад, придём к , а потому два соседних числа Фибоначчи взаимно просты.
Доказательство того, что в книге не приводится, но по алгоритму Евклида
где — остаток от деления на
а поскольку для чисел Фибоначчи
то
Еще один пример из задачника
53. Для последовательности чисел Фибоначчи задачи 43 найти предел отношения при стремлении к бесконечности:
Ответ: «золотое сечение», .
Рассмотрим отрезки, представляющие собой разности двух соседних членов ряда .
Четные члены ряда представляют растущую последовательность
Нечетные члены ряда представляют убывающую последовательность
По лемме о вложенных промежутках (Курс дифференциального и интегрального исчисления, 38)
Для нашего ряда в точке справедливо равенство
Произведя замену , получим искомое решение.
www.geogebra.org/geometry
Следующий пример из задачника
54. Вычислить бесконечную цепную дробь
Задача подобного типа есть в книге «За страницами учебника математики» [10-11]
4. Покажите, что число равно числу , задающему золотое сечение.
Рассмотрим варианту
Курс дифференциального и интегрального исчисления, 35 (2):
Таким образом получается из по форуле
… По основной теореме, варианта имеет некий конечный предел . Для определения его перейдём к пределу в равенстве
Мы получим, таким образом, что удовлетворяет квадратному уравнению
Уравнение это имеет корни разных знаков; но интересующий нас предел не может быть отрицательным, следовательно, равен именно положительному корню:
Из чего можно сделать вывод, что «золотое сечение» является решением уравнения
при .
Далее, рассмотрим варианту
Курс дифференциального и интегрального исчисления, 35 (3):
Пусть — любое положительное число, и положим . Написанное выше рекуррентное соотношение заменится таким:
Взяв начальное значение под условием: , получим, что , монотонно возрастая, будет стремиться к . По этой схеме на счётных машинах и вычисляется число, обратное .
Алгоритм вычисления числа, обратного на языке Python:
def reciprocal(c,y0,n):
arr=[]
for i in range(n):
arr.append(y0)
y0=y0*(2-c*y0)
return arr
Функция reciprocal принимает на вход число , начальное значение , количество итераций и возвращает массив «приближений» к числу .
при
при
при
и т.д.
Примеры работы функции reciprocal при различных
>>> reciprocal(3,0.1,10)
[0.1,
0.17,
0.2533,
0.31411733000000003,
0.3322255689810133,
0.3333296519077525,
0.3333333332926746,
0.33333333333333337,
0.33333333333333337,
0.33333333333333337]
>>> reciprocal(8,0.1,10)
[0.1,
0.12,
0.1248,
0.12499968,
0.1249999999991808,
0.125,
0.125,
0.125,
0.125,
0.125]
>>> reciprocal(5,0.1,10)
[0.1,
0.15000000000000002,
0.18750000000000003,
0.19921875000000003,
0.19999694824218753,
0.1999999999534339,
0.20000000000000004,
0.19999999999999998,
0.19999999999999998,
0.19999999999999998]
(Т.о. применение этого алгоритма требует ограничений)
В завершение: хотелось бы напомнить всем о задаче Много битов из ничего из журнала «Квант». Задача предполагает решение методом перебора и уже упоминалась на Хабре — вот, вот, вот, вот и вот.
Книги:
«Задачи для детей от 5 до 15 лет», В. И. Арнольд.
«Курс дифференциального и интегрального исчисления», Г. М. Фихтенгольц.
«За страницами учебника математики», Н. Я. Виленкин, Л. П. Шибасов, З. Ф. Шибасова.
Комментарии (22)
youree
08.08.2018 03:45+1Что-то с 38-й задачей не понял.
1 / [ n * (n+1) ] = 1/n ? 1/(n+1)
Если так расписать каждый член суммы, то будет 1/1 ? 1/2 +1/2 ? 1/3 + 1/3 ? 1/4 +… + 1/99 ? 1/100 = 1 ? 1/100 = 0.99
А… понял: у Вас в условии n от 1 до 99, а в программе — 99, 999, 9999… Но всё равно, надо просто из единицы вычитать 1 / (n + 1).demsp Автор
08.08.2018 08:00Т. о. можно доказать (по индукции), что сумма ряда равна 1-1/(n+1)=n/(n+1)
da-nie
08.08.2018 07:08Для начала рассмотрим задачу, которую всё-таки могут предложить на собеседовании
А расчёт обменного интеграла ещё пока не могут предложить на собеседовании? :)demsp Автор
08.08.2018 08:05Задача не требует каких-то особых знаний из области дифференциального и интегрального исчисления.
priccroc
08.08.2018 07:47по поводу примера 54. это нормально, что получается 2 ответа: (1 +- sqrt(3))/2? или я ошибся? если коротко, то решал так: x = 1 + 1/(2 + 1/x)
priccroc
08.08.2018 08:02извиняюсь за глупый вопрос. мое решение строится на предположении о том, что эта дробь равна конечному числу. из полученного противоречия ясно, что это не так.
aamonster
08.08.2018 08:58+7Решать 38 программой на лиспе вместо 1-2 строчек на листе бумаги? Экий вы, сударь, простофиля.
(1/1-1/2) + (1/2-1/3) +… + (1/99-1/100), раскрываем скобки, видим ответ. А не лезем в "Курс дифференциального и интегрального исчисления"da-nie
08.08.2018 10:15+2Вы фактически разрушили всю идеологическую ценность статьи. :)
demsp Автор
08.08.2018 19:41:))
da-nie
08.08.2018 20:56На самом деле, это удивительно. :) Вы столько усилий потратили, но… решение было в другой плоскости. Так в общем-то получилось потому, что здесь задача изначально сделана под конкретное решение. И если не догадаться, то решать можно разными способами.
pasetchnik
09.08.2018 14:57А как у вас получилось, что 1/(2*3) = (1/2-1/3)? Ведь 1/5 <> 1/6.
(простите, конечно, мою безграмотность, если глупость сказал: математика уже порядком подзабылась)aamonster
09.08.2018 17:24+1Приводим к общему знаменателю:
1/2 — 1/3 = 3/(2*3) — 2/(2*3) = (3-2)/(2*3) = 1/(2*3)
Ну, на самом деле я просто примерно помнил, что такие дроби (типа 1/(2*3)) раскладываются в разность соседних. Может быть, даже и задачку подобную решал лет 30 назад, что-то в памяти задержалось — во всяком случае, идея привести произведение дробей к их разности пришла сразу, а дальше уже сразу видно, что задача решилась.
P.S. А насчёт 1/5 — это, думаю, не математика подзабылась, а внимание рассеялось, не удивлюсь, если, пока я писал ответ, вы и сами сообразили (или вспомнили, что знаменатели складывать не надо)
akhalat
Слово «варианта» — устаревшее, понятное только в контексте самого Фихтенгольца, все же кто изучал теорию предела по другим учебникам знают слово «последовательность», неплохо было бы заменить везде в тексте. Точно также, к слову, Фихтенгольц дальше называет «выпуклую» функцию «вогнутой» и, наоборот, т.е. современное понимание этого термина оказывается обратно противоположным.
Далее, при перепечатке и сокращении примера 35.2 стало непонятно какая «основная теорема» имеется в виду в тексте. А имеется ввиду теорема о гарантированном существовании предела монотонной и возрастающей последовательности – это важно, т.к. не удостоверившись в существовании предела, предельный переход к числу a делать нельзя – можно получить бессмысленный ответ (примеры есть в том же Фихтенгольце).
youree
Да, с корнями тоже непонятный огород.
Пишем просто x = sqrt(1 + sqrt(1 + ..)) и возводим в квадрат.
Получается: x2 = 1 + x.
Решаем.
Основная часть задачи (опущенная в статье) как раз в том, чтобы удостовериться в существовании предела последовательности, то есть возможности написать «x =».
demsp Автор
Спасибо (кстати, слово «варианта» встречается не только у Фихтенгольца)
akhalat
Ну может где-то ещё и встречается в текстах времён Фихтенгольца или их переизданий, но сейчас полностью устарело за ненадобностью (о чём пишут, например, в примечаниях от редактора в новых изданиях того же Фихтенгольца).