Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

[Alekseev_A.P.]_Informatika_2015(z-lib.org)

.pdf
Скачиваний:
221
Добавлен:
26.01.2020
Размер:
8.07 Mб
Скачать

Компьютерная алгебра

281

__________________________________________________________________________________

Система может выполнять решение уравнений в символьном виде. Для примера рассмотрим процедуру нахождения корней квадратного уравнения:

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

Система позволяет найти производную в символьном виде:

Рассмотрим способ нахождения производных высокого порядка в символьном виде:

Символ дифференцирования расположен на вкладке Математика (Операторы, Математический анализ).

Рассмотрим, каким образом можно найти первообразную в символьном виде.

Аналогично происходит вычисление неопределённого интеграла:

282 Компьютерная алгебра

__________________________________________________________________________________

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

Оператор интегрирования можно найти в пункте Математический анализ.

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

или

Математическая система может производить разложение в ряд Маклорена. Выполним разложение функции:

Разложение выполняется с помощью опции series

По умолчанию в системе PTC Mathcad Premie возвращается результат вплоть до шестой степени ряда. При необходимости повышения точности расчетов необхожимо команду series дополнить соответствующими параметрами:

Рассмотрим порядок вычисления пределов.

Компьютерная алгебра

283

__________________________________________________________________________________

Чтобы вызвать оператор предела, можно нажать одновременно клавиши Ctrl и L. Возьмём конкретный пример:

Вычислим ещё один известный предел:

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

Так, нахождение первообразных для интегралов, приведенных в справочнике по интегралам Двайта [10], в 50—60% случаев дает такие же результаты, как в упомянутой книге. В остальных случаях результаты не столь компактны, как в справочнике, а порой ЭВМ совсем не справляется с поиском первообразной.

Приведем два интеграла, с которыми система не справилась (не смогла найти первообразную):

Очевидно, что в данном разделе рассмотрены лишь некоторые возможности этой мощной математической системы.

284 Операции с комплексными числами

__________________________________________________________________________________

8.2.3. Операции с комплексными числами

Цель расчётов – понимание, а не числа.

Р. Хемминг

Система Mathcad позволяет просто выполнять операции с комплексными числами. Такие действия необходимы при радиотехнических и электротехнических расчетах.

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

i

 

1

 

 

i 5

 

 

 

 

 

 

 

i 2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Z1

 

 

 

 

 

7

 

 

 

Z2

 

 

 

8

 

Z1

 

 

 

 

 

Z2

15 3i

Z1

 

 

 

Z2

 

1 7i

Z1 Z2

66 26i

Z1

 

0.676 0.794i

Z2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

( 1

 

 

 

2 i)3

19

 

 

2 10i

 

 

 

 

 

 

 

i

1

 

 

 

 

 

 

 

i

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

 

 

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

Re e3i 0.98999

Im e3i 0.14112

Вычисление модуля числа 1 + i осуществляется естественным путем:

1+ i = 1.414.

Для расчета аргумента имеется специальная функция: arg(1 + i) = 0.785.

Несложно найти комплексно сопряженное число (напомним, что сопряженное число имеет противоположный знак перед мнимой частью), например,

Операции с комплексными числами

285

__________________________________________________________________________________

( 2 3i) 2 3i

Чтобы получить сопряженное число, нужно выделить исходное число и нажать аккорд клавиш Shift + «.

Программа Mathcad позволяет легко решать системы линейных уравнений с комплексными коэффициентами.

Предположим, что дана система уравнений:

I 1 (200 i 361,9)

I 2 ( 125 i 29,75)

2,84 i 0,977

 

( 125

i 29,75)

I 2 (287,5 i 29,75)

5,906 i 5,537

I 1

Требуется найти токи I1 и I2.

Приведем фрагмент документа Mathcad, который показывает порядок решения системы линейных уравнений с комплексными коэффициентами.

Для решения системы используются матрица коэффициентов R и матрица свободных членов F. Решение находится в виде произведения обратной матрицы коэффициентов на матрицу свободных членов.

i

 

 

 

1

 

 

 

 

i 361.9

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i 29.75

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a1

 

200

 

 

 

 

 

a2

 

125

 

 

 

 

 

 

 

 

 

 

 

a3

 

 

 

a2

 

 

 

 

i 0.977

 

a4

 

287.5

 

 

 

 

 

i 29.75

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

b1

 

 

2.84

 

 

b2

 

 

5.906

 

i 5.537

 

 

 

 

 

 

 

 

 

 

 

 

R

 

 

 

 

a1

a2

 

 

 

 

 

 

 

F

 

 

 

b1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a3

a4

 

 

 

 

 

 

 

 

 

 

b2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

W

 

 

 

R 1 F

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

W

 

 

 

4.09195 10

 

 

0.01497i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0.01963

 

0.02331i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Таким образом, ток I1 = — 4,09195 10-3 i 0,01497, а ток I2 =0,01963 –

i 0,02331.

286 Вопросы программирования

__________________________________________________________________________________

8.2.4. Вопросы программирования

Процедуру составления программ проиллюстрируем на примере шифра Цеза-

ря.

Необходимые элементы для формирования программ размещены на вкладке Математика (Программирование).

Преобразование открытого текста осуществляется в соответствии с шифром Цезаря. Символы открытого текста заменяются символами этого же алфавита, расположенными на три позиции впереди. Смещение определяется ключом key. В первом варианте шифра, предложенным Цезарем, эта величина равнялась трём. Шифр является циклическим, поэтому последние буквы алфавиты заменяются первыми.

Оператор ORIGIN определяет, с какого числа начинается отсчёт векторов. По умолчанию отсчёт начинается с нуля. В данном случае отсчёт удобнее вести с единицы.

Открытое сообщение ABCXYZ присваивается переменной mess:

mess := “ABCXYZ”

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

Переменной d присваивается число символов в сообщении:

Результаты шифрования присваиваются переменной С. Дальше приведён листинг программы.

Вопросы программирования

287

__________________________________________________________________________________

Шифрование происходит путём формирования вектора v, элементы которого увеличены на три единицы по сравнению с элементами вектора m.

Оператор передачи управления проверит, превышают или нет элементы вектора v величину 90 (код заглавной буквы Z).

288 Вопросы программирования

__________________________________________________________________________________

В случае выполнения этого условия элементы уменьшаются на 26 единиц и шифрование ведётся буквами, расположенными в начале латинского алфавита:

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

Вставка линий новой структуры (вертикальная линия) осуществляется на вкладке Математика (Программирование).

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

На последних шагах алгоритма числовое значение матрицы С преобразуются в буквы:

Сравнение открытого текста mess с криптограммой crypt подтверждает правильность работы составленной программы:

Вопросы программирования

289

__________________________________________________________________________________

Рассмотрим ещё один пример составления программ. Для программной реализации выберем алгоритм RSA.

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

В соответствии с протоколом создания защищённого канала связи RSA, описанном в [12], банкиру и вкладчику следует выполнить следующие действия.

1. Для формирования ключей банкир и вкладчик должны выбрать два простых числа p и q. Нужно сделать следующее замечание. Здесь рассматривается учебный пример, поэтому описываемые операции не совпадают с реальными действиями абонентов. Фактически ключи формируются автоматически, например, программным путём. Разрядность реальных ключей многократно превышает разрядность рассматриваемых здесь ключей.

Пусть банкир выбрал простые числа:

Простые числа вкладчика:

2.Вычислить произведение простых чисел:

3.Рассчитать функцию Эйлера:

4.Выбрать случайное число s, взаимно простое с w из интервала

0 < s < w

Формирование взаимно простых чисел осуществляют с помощью следующих функций пользователя:

290 Вопросы программирования

__________________________________________________________________________________

Результаты расчётов взаимно простых чисел:

Из предыдущих таблиц нужно выбрать числа из интервала 0 < s < w и присвоить их переменным s1 и s2. Например:

5. Рассчитать секретный ключ банкира t1. Расчёт секретного ключа ведётся с помощью обобщённого алгоритма Евклида [13].