Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Чаплыгин А.Н. Учимся програмировать вместе с Пи...doc
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
3 Мб
Скачать
☆

§6.5. Табулирование функций

С помощью оператора цикла while удобно строить таблицы значений различных функций. Большинство учебников по высшей математике имеют приложения с такими таблицами значений. До того, как появились компьютеры, математикам приходилось составлять таблицы значений тригонометрических, логарифмических и других функций вручную - это очень трудоемкий и утомительный процесс, что, в свою очередь, увеличивает вероятность возникновения ошибки в расчетах12.

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

67

Ревизия: 170

Циклы

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

Рассмотрим такую программу:

import math

х = 1.0

while x < 10

0:

print x,

"\t",

math.log(x)

x += 1.0

Результат ее работы будет выглядеть так:

1.0

0.0

2

0

0.69314718056

3

0

1.09861228867

4

0

1.38629436112

5

0

1.60943791243

6

0

1.79175946923

7

0

1.94591014906

8

0

2.07944154168

9

0

2.19722457734

Строка "\t" обозначает знак табуляции. Благодаря нему значения выстраиваются в два столбца.

Разберем, как эта программа работает. Параметр х изменяется от 1. 0 с шагом 1.0, пока он меньше 10.0. В теле цикла выводится текущее значение параметра х, затем знак табуляции и результат вычисления функции math, log (x), т.е. натуральный логарифм от х (

logex = ln(x) ). При необходимости вычисления логарифма по основанию 2 мы можем

воспользоваться формулой:

, 1пх

l0g2X=lnT

Наша программа будет выглядеть так:

import math

х = 1.0

while x < 10.0:

print x, "\t",

math.log(x)/math.log(2)

x += 1.0

Результат будет таким:

1.0 0.0

2.0 1.0

68

Ревизия: 170

Циклы

3.0

1.58496250072

4.0

2.0

5.0

2.32192809489

6.0

2.58496250072

7.0

2.80735492206

8.0

3.0

9.0

3.16992500144

Как видите, 7, 2, 4 и 8 являются степенями 2. Модифицируем нашу программу, чтобы найти другие степени 2:

import math

х = 1.0

while x < 100.0:

print x, "\t",

math.log(x)/math.log(2)

x *= 2.0

Таким образом, мы получили:

1.0 0.0

2.0

4.0

8.0

16.0

32.0

64.0

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

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

Упражнение. Измените программу так, чтобы программа вывела все степени 2 до 10-й включительно. Постарайтесь запомнить результаты. Почему в килобайте не 1000 байт, а 1024?