Математическая константа

Известные математические константы

Некоторые значения часто встречаются в математике и условно обозначаются специальным символом. Эти стандартные символы и их значения называются математическими константами. Примеры включают:

  • 0 ( ноль ).
  • 1 ( один ), натуральное число после нуля.
  • π ( пи ), константа, представляющая отношение длины окружности к ее диаметру, приблизительно равная 3,141592653589793238462643.
  • е , примерно равно 2,718281828459045235360287.
  • i , мнимая единица такая, что i 2 = −1.
  • 2{\ displaystyle {\ sqrt {2}}}( корень квадратный из 2 ), длина диагонали квадрата с единичными сторонами, примерно равна 1,414213562373095048801688.
  • φ ( золотое сечение ), приблизительно равное 1,618033988749894848204586, или алгебраически .1+52{\ displaystyle 1 + {\ sqrt {5}} \ более 2}

2. Объявление констант

FreePascal, как и
Турбо Паскаль, поддерживает обычные и типизированные константы. Константы объявляются в разделе констант, в блоке объявления модуля, программы или класса, функции или процедуры.

Пример:

program myprog;

//Раздел констант в блоке объявления программы
const X = 100;

procedure MyProc;
//Раздел констант в блоке объявления процедуры
const Y = 50;
begin
end;

var Z : WORD;

//****************************************************************
// ОСНОВНАЯ ПРОГРАММА
//****************************************************************
begin
  Z := X;
  Z := Y;   //!!! Так нельзя, потому что Y - локальная константа
  WriteLn('The end. Press ENTER...');
  ReadLn;
end.

Обратите внимание на то, что при объявлении констант (как и при
объявлении других сущностей), имеет значение область видимости. Поэтому в описанном выше примере компилятор выдаст ошибку (Y — это локальная константа, которая видна только внутри процедуры MyProc, а в программе эту константу компилятор “не увидит”).

5. Строковые ресурсы

Статья получилась более чем длинной, но не волнуйтесь — это раздел последний.

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

Ниже приведен пример определения строковых ресурсов:

resourcestring
  FileMenu = '&File...';
  EditMenu = '&Edit...';

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

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

Более подробно с темой можно ознакомиться в
руководстве программиста, а также в описании модуля . Возможно, я когда-нибудь ещё к этому вернусь.

ПРИМЕЧАНИЕ: обратите внимание, что строка ресурса, которая задана как выражение, не изменится, если части выражения будут изменены:

resourcestring
  Part1 = 'First part of a long string.';
  Part2 = 'Second part of a long string.';
  Sentence = Part1 + ' ' + Part2;

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

Вышеуказанная конструкция просто говорит, что начальное значение
равняется .

ВНИМАНИЕ!
Мой компилятор отказался компилировать
, сообщив, что это неправильное выражение. Возможно, это обычный глюк FreePascal, когда документация не вполне соответствует действительности.. ПРИМЕЧАНИЕ: аналогично, при использовании строк ресурсов в массиве констант, в массиве будут использоваться только начальные значения строк ресурсов: при переводе отдельных констант элементы в массиве сохранят свое исходное значение

ПРИМЕЧАНИЕ: аналогично, при использовании строк ресурсов в массиве констант, в массиве будут использоваться только начальные значения строк ресурсов: при переводе отдельных констант элементы в массиве сохранят свое исходное значение.

resourcestring
  Yes = 'Yes.';
  No = 'No.';

var YesNo : array of string = (No, Yes);
    B     : boolean; 

begin 
  WriteLn(Yes);       //Выведет Yes
  Writeln(YesNo);  //Выведет No
  B := TRUE;
  Writeln(YesNo);  //Выведет Yes
end.

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

Ну вот как-то так. Однако, такая простая вещь, как константы, в руках профессионала может оказаться очень даже не простой…

Контекстная зависимость

Контекстно-зависимый характер понятия «константа» можно увидеть в этом примере из элементарного исчисления:

ddИкс2Иксзнак равноLimчас→2Икс+час-2Иксчасзнак равноLimчас→2Икс2час-1часзнак равно2ИксLimчас→2час-1часпоскольку Икс постоянна (т.е. не зависит от час)знак равно2Икс⋅cопsтапт,где cопsтапт означает не в зависимости от Икс.{\ displaystyle {\ begin {align} {\ frac {d} {dx}} 2 ^ {x} & = \ lim _ {h \ to 0} {\ frac {2 ^ {x + h} -2 ^ { x}} {h}} = \ lim _ {h \ to 0} 2 ^ {x} {\ frac {2 ^ {h} -1} {h}} \\ & = 2 ^ {x} \ lim _ {h \ to 0} {\ frac {2 ^ {h} -1} {h}} && {\ text {, поскольку}} x {\ text {является постоянным (т.е. не зависит от}} h { \ text {)}} \\ & = 2 ^ {x} \ cdot \ mathbf {constant,} && {\ text {where}} \ mathbf {constant} {\ text {означает не зависит от}} x . \ end {выровнен}}}

«Константа» означает отсутствие зависимости от какой-либо переменной; не меняется при изменении этой переменной. В первом случае, приведенном выше, это означает отсутствие зависимости от  h ; во втором — не зависит от  x . Константу в более узком контексте можно рассматривать как переменную в более широком контексте.

Константы в исчислении

В исчислении константы обрабатываются по-разному в зависимости от операции. Например, производная постоянной функции равна нулю. Это связано с тем, что производная измеряет скорость изменения функции по отношению к переменной, а поскольку константы по определению не изменяются, их производная, следовательно, равна нулю.

И наоборот, при интегрировании постоянной функции постоянная умножается на переменную интегрирования. Во время оценки предела константа остается такой же, как была до и после оценки.

Интегрирование функции одной переменной часто включает постоянную интегрирования . Это возникает из — за того , что интегральный оператор является обратным от дифференциального оператора , а это означает , что цель интеграции восстановить исходную функцию , прежде чем дифференциации. Дифференциал постоянной функции равен нулю, как отмечалось выше, а дифференциальный оператор является линейным оператором, поэтому функции, которые отличаются только постоянным членом, имеют одинаковую производную. Чтобы признать это, к неопределенному интегралу добавляется постоянная интегрирования ; это гарантирует включение всех возможных решений. Константа интегрирования обычно обозначается как «c» и представляет собой константу с фиксированным, но неопределенным значением.

Примеры

Если f — постоянная функция такая, что для каждого x тогда
ж(Икс)знак равно72{\ Displaystyle f (x) = 72}

ж′(Икс)знак равно69∫ж(Икс)dИксзнак равно72Икс+c{\ displaystyle {\ begin {align} f ‘(x) & = 0 \\ 69 \ int f (x) \, dx & = 72x + c \ end {выравнивается}}}

4. Типизированные константы

Иногда необходимо указать тип константы, например для констант сложных
(комплексных) структур, или когда значение константы надо изменить во
время выполнения программы. Типизированные константы можно использовать
для хранения массивов,
записей, процедур…

Определение типизированных констант довольно простое:

Пример:

А потом в программе можно сделать так:

То есть в отличие от обычных констант, типизированным константам может
быть присвоено значение во время выполнения. Это старая концепция
Turbo Pascal, которая в Lazarus/FreePascal была заменена поддержкой инициализированных переменных.

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

ПРИМЕЧАНИЕ: Следует подчеркнуть, что типизированные константы
инициализируются автоматически при запуске программы. Это также верно
для локальных типизированных констант и инициализированных переменных.
Локальные типизированные константы также инициализируются при запуске
программы. Если их значение было изменено во время предыдущих вызовов
функции, они сохранят измененное значение, то есть
они не инициализируются при каждом вызове функции.

ВАЖНО!
Типизированные константы, в отличие от инициализированных переменных, можно объявлять локально в подпрограммах. Пример:

function MyFunc(n : byte) : byte;
const Y = 50;   //Так можно
var IP = 100;   //А так нельзя !!!
begin
  Result := n + Y;
end;

4.1. Константы-массивы

Константу-массив можно объявить, заключив значения элементов массива в скобки и разделив их запятыми. Значениями элементов массива могут быть только константные выражения. Пример:

//Константа - одномерный массив
const M : array of WORD = (0, 1, 2, 3, 4, 5, 6, 7);   

//Константа - двумерный массив
const MM : array of WORD = ((1, 2, 3),
                                        (4, 5, 6));

С одномерным массивом, думаю, вопросов не возникнет. А двумерный массив-константа, созданный в примере, будет содержать такие значения:

MM = 1;
MM = 2;
MM = 3;
MM = 4;
MM = 5;
MM = 6;

Теперь и с этим, надеюсь, всё понятно.

4.2. Константы-записи

Чтобы определить константу-запись, надо определить значение каждого поля так:

ИмяПоля : значение;

Присваивания значений полям разделяются точками с запятой (;). Значения должны быть константными выражениями. Поля должны быть перечислены в том же порядке, в каком они следуют в объявлении записи. Значение для поля-тэга (если такое присутствует) должно быть установлено. Если запись имеет вариантную часть, то значение может быть установлено только для варианта, определенного полем-тэгом.

Пример:

//Константа-запись (объявление записи)
type TKvadrat = record
  x1 : WORD;
  y1 : WORD;
  x2 : WORD;
  y2 : WORD;
end;

//Константа-запись (заполнение записи)
const Kvadrat : TKvadrat = (x1 : 0; y1 : 0; x2 : 150; y2 : 100);

4.3. Процедурные константы

Процедурная константа должна содержать идентификатор процедуры или функции, который совместим с типом константы. Пример:

function MyFunc(n : byte) : byte;
//Раздел констант в блоке объявления подпрограммы
const Y = 50;
begin
  Result := n + Y;
end;

type TFuncType = function(n : byte) : byte;

const MyFunction : TFuncType = MyFunc;

Теперь вы можете использовать процедурную константу
в программе вместо функции :

Зачем вообще нужны такие извращения? Поверьте на слово — иногда это удобно. Но это отдельная тема — как-нибудь расскажу подробнее.

ВНИМАНИЕ!
Описанный выше пример будет работать только в режиме совместимости с
Делфи, установить который можно с помощью соответствующей
директивы.

3. Обычные константы

Объявления обычных констант создаются с использованием имени
идентификатора, за которым следует знак “=”, а затем необязательное
выражение, состоящее из допустимых
комбинаций чисел, символов, логических значений или
перечисляемых значений. Примерно так:

То есть объявлению константы (или раздела констант) предшествует
ключевое слово .
Затем идёт — имя константы. А затем —
, которое связывается с указанным Идентификатором. Например:

Здесь — это
(имя константы), а — это . И теперь можно использовать эту константу, например, так:

WriteLn(X);   //Выведет 100
WriteLn(100); //Выведет 100

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

Компилятор должен иметь возможность вычислять выражение в объявлении константы во время компиляции. Это означает, что большинство функций библиотеки времени выполнения нельзя использовать в объявлении константы.

Операторы, такие как могут быть использованы.

Например:

const X = 100;
      XX = X * X;
      SIZE_X = SizeOf(X);

А вообще — это может быть любое допустимое выражение в Паскале, с учётом того, что оно может быть вычислено во время компиляции. Например, такой код не прокатит:

const XX = X * X;
      X = 100;

Потому что выражение НЕВОЗМОЖНО
вычислить во время компиляции, потому как константа у нас
объявлена ПОСЛЕ константы .

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

В Паскале могут быть объявлены только константы следующих типов:

  • Порядковые типы
  • Множества
  • Указатели (но только со значением NIL)
  • Вещественные типы
  • Символьные типы
  • Строки

Следующие примеры являются правильными объявлениями констант:

const e = 2.7182818;                //Константа вещественного типа
      a = 2;                        //Целочисленная константа
      c = '4';                      //Символьная константа
      s = 'This is a string';       //Строковая константа
      sc = chr(32);                 //Символьная константа
      ls = SizeOf(Longint);         //Целочисленная константа
      P = NIL;                      //Константа-указатель
      SS = ;                  //Множество

Присваивание значения обычной константе не допускается. Таким образом, учитывая предыдущее объявление, следующий код приведет к ошибке компилятора:

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

Некоторые избранные постоянные

Использованные сокращения: И — иррациональное число, А — алгебраическое число, Т — трансцендентное число, ? — неизвестно; мат — обычная математика, ТЧ — теория чисел, ТХ — теория хаоса, комб — комбинаторика, АИТ — алгоритмическая теория информации.

Символ Приближенное значение Название Область Значение Впервые описана Число известных знаков
π{\displaystyle \pi } ≈ 3,141 592 653 589 793 238 462 643 383 279 502 88 пи, архимедова константа мат Т до 2600 до н. э. (Месопотамия, Египет) 12 100 000 000 000
τ{\displaystyle \tau } ≈ 6,283 185 307 179 586 тау (2π) мат Т
e ≈ 2,718 281 828 459 045 235 360 287 471 352 662 50 константа Непера, число Эйлера, основание натурального логарифма мат Т 1618 12 884 901 000
2{\displaystyle {\sqrt {2}}} ≈ 1,414 213 562 373 095 048 801 688 724 209 698 08 константа Пифагора, квадратный корень из 2 мат А, И до 1800 до н. э. 137 438 953 444
3{\displaystyle {\sqrt {3}}} ≈ 1,732 050 807 568 877 293 527 446 341 505 872 37 константа Феодора, квадратный корень из 3 мат А, И до 800 до н. э.
γ ≈ 0,577 215 664 901 532 860 606 512 090 082 402 43 постоянная Эйлера — Маскерони мат, ТЧ ? 1735 108 000 000
φ ≈ 1,618 033 988 749 894 848 204 586 834 365 638 12 золотое сечение мат А, И ок. 300 до н. э. 3 141 000 000
β* ≈ 0,702 58 константа Эмбри — Трефетена ТЧ
δ ≈ 4,669 201 609 102 990 671 853 203 820 466 201 61 постоянная Фейгенбаума ТХ 1975
α ≈ 2,502 907 875 095 892 822 283 902 873 218 215 78 константа Фейгенбаума ТХ 1975
C2 ≈ 0,643 410 546 29 Константа Каэна ТЧ Т
C2 ≈ 0,660 161 815 846 869 573 927 812 110 014 555 77 константа простых близнецов ТЧ 5 020
M1 ≈ 0,261 497 212 847 642 783 755 426 838 608 695 85 константа Майсселя — Мертенса ТЧ ; 8010
B2 ≈ 1,902 160 583 104 константа Бруна для простых близнецов ТЧ 10
B4 ≈ 0,870 588 380 0 константа Бруна для простых четвёрок ТЧ
≈ 0,662 743 419 349 181 580 974 742 097 109 252 90 предел Лапласа мат
G ≈ 0,915 965 594 177 219 015 054 603 514 932 384 11 постоянная Каталана комб 31 026 000 000
Λ Λ ≥ 0 константа де Брёйна — Ньюмана ТЧ ,
K ≈ 0,764 223 653 589 220 66 константа Ландау — Рамануджана ТЧ И (?) 30 010
K ≈ 1,131 988 24 константа Висваната ТЧ 16
K ≈ 2,685 452 001 065 постоянная Хинчина ТЧ
J ≈ 3,058 198 247 456 354 132 564 564 787 888 767… константа Поля — Гаусса ТЧ 10343
L 1 (первоначальная гипотеза 1,08366) константа Лежандра ТЧ Ц точное значение
λ ≈ 0,624 329 988 543 550 870 992 936 Постоянная Голомба — Дикмана ТЧ
μ ≈ 1,451 369 234 883 381 050 283 968 485 892 027 константа Рамануджана — Солднера ТЧ 75 500
E’B ≈ 1,606 695 152 415 291 763 константа Эрдёша — Борвейна ТЧ И
Ω ≈ 0,007 874 996 997 812 384 4 константа Хайтина АИТ Т
ζ(3) ≈ 1,202 056 903 159 594 285 399 738 161 511 449 99 постоянная Апери ТЧ И 100 000 001 000
ɯ ≈ 0,739 085 133 215 160 641 655 312 087 673 873 40 число Дотти, притягивающая неподвижная точка функции cos(x) ТХ
A ≈ 1,282 427 129 100 622 636 875 342 568 869 791 73 постоянная Глейшера — Кинкелина ТЧ
θ, A ≈ 1,306 377 883 863 080 690 468 614 492 6 Константа Миллса ТЧ 6850
ρ ≈ 1,324 717 957 244 746 025 960 908 854 478 Пластическое число ТЧ А, И

Итоги правления

Монета с портретом Константа

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

Религиозная политика была одним из основных направлений его правительства. События тех времён показывают, что религия и политика в то время были сильно взаимосвязаны.

Несмотря на свой юный возраст — он правил 13 лет и в возрасте 27 лет был убит, Константа вполне можно считать достойным преемником Константина I Великого. Победы над внешними врагами и политическое мастерство в отношениях с его братом Констанцием свидетельствуют о способностях, которые могли бы позволить ему в один прекрасный момент завладеть всей Римской империей. Но напряжённые отношения с армией и, возможно, неправильно выбранные советники помешали ему это сделать.