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

Mathcad_для_экономистов_Голдобина_2

.pdf
Скачиваний:
32
Добавлен:
05.07.2022
Размер:
885.22 Кб
Скачать

Окончание таблицы 3.4

Вариант

Задача

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

11Подсчитать максимальные элементы в каждом четном столбце. Создать подматрицу M1 матрицы M, размерностью 3×3, состоящую из элементов, стоящих в первых трех строках и столбцах M. Элементы главной диагонали

новой матрицы увеличить на единицу

Отрицательные элементы матрицы M заменить их модулями. Найти ранг и сумму диагональных элементов полученной матрицы. Подсчитать сумму

12элементов матрицы M, стоящих выше главной диагонали. Найти минималь- ный элемент в третьей строке M. На основе первой строки матрицы M соз- дать диагональную матрицу M1 и умножить ее на исходную матрицу поэле-

ментно

Преобразовать матрицу M так, чтобы отсортированной оказалась вторая строка. Элементы главной диагонали матрицы M заменить единицей и ин-

13вертировать полученную матрицу. Подсчитать минимальные элементы в четных строках полученной матрицы M -1. Подсчитать сумму элементов 1-го столбца матрицы M. Элементы M, сумма индексов которых равна 3, заме- нить определителем M

Получить матрицу M1, каждый элемент которой квадратный корень из элементов матрицы M. Комплексные элементы полученной матрицы заме-

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

бы один из индексов четный

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

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

нечетный

Подсчитать произведение элементов матрицы M, сумма индексов которых четная. Определить среднее арифметическое в каждом столбце матрицы M,

16данные представить в виде вектора. Вектор отсортировать по убыванию. На основе полученного вектора создать диагональную матрицу M1 и определить ее минимальный элемент. Подсчитать котангенс каждого элемента получен-

ной матрицы

20Подготовить документ для печати и распечатать. Завершить работу.

61

 

Пример выполнения задания

По формуле M i , j =

cos3 (i )

+ 4 lg( j − 5 +1) задать матрицу M размерно-

j +1

стью 7×7. Получить подматрицу M1 размерностью 5×5 из элементов M, стоя- щих на пересечении последних пяти строк и столбцов. Подсчитать произведе- ние элементов матрицы M1 с нечетной суммой индексов. Создать матрицу M2, каждый элемент которой натуральный логарифм матрицы M1. Комплексные элементы матрицы M2 заменить их действительной частью. Найти макси- мальные элементы в нечетных столбцах M2. Сформировать вектор z из диаго- нальных элементов матрицы M2 и найти его модуль. Создать матрицу M3 из нечетных строк матрицы M2 и вектора z.

Определяем переменную ORIGIN и ранжированные переменные для нуме- рации элементов массивов:

 

 

 

 

 

 

ORIGIN:= 1

i := 1.. 7

j := 1.. 7

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Задаем матрицу M и ее подматрицу M1:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

M

 

:=

cos (i)3

+ 4

 

 

 

 

 

æ 0.589

0.547

−0.162

0.602

0.71 ö

i, j

log(

j − 5

+ 1)

 

 

 

 

 

j + 1

 

 

 

 

ç 0.761

0.685

−0.047

0.701

0.796÷

 

 

 

 

 

 

 

 

 

 

 

M1 := submatrix(M, 3, 7, 3, 7)

M1 =

ç

 

3.804× 10− 3

 

÷

ç 0.837

0.745

0.744

0.834÷

 

 

 

 

 

 

 

 

 

 

 

ç 1.052

0.918

0.148

0.867

0.942÷

 

 

 

 

 

 

 

 

 

 

 

ç

0.826

0.071

0.802

÷

 

 

 

 

 

 

 

 

 

 

 

è 0.938

0.885ø

Для подсчета произведения элементов матрицы M1 с нечетной суммой ин- дексов создаем с помощью оператора if вспомогательную матрицу, в которой на указанных местах стоят элементы M1, а на местах с четной суммой индексов единицы. Произведение элементов такой вспомогательной матрицы будет ис- комым:

5

5

 

 

∏ ∏ if(mod(i + j, 2)

 

1, M1i, j, 1) = −4.99× 10− 4

 

 

i = 1

j = 1

Для создания матрицы M2 достаточно использовать «векторизацию»:

62

 

æ -0.53

-0.604 -1.822

+ 3.142i

-0.507 -0.343ö

 

ç

 

 

 

 

 

÷

¾¾

ç

-0.273

-0.379

-3.067

+ 3.142i

-0.356

-0.228÷

M2 := ln(M1)

M2 = ç -0.178

-0.294

-5.572

-0.296

-0.182÷

 

ç

0.051

-0.086

-1.914

-0.143

-0.06 ÷

 

ç

 

 

 

 

 

÷

 

è -0.064

-0.191

-2.639

-0.221

-0.123ø

Заменим комплексные элементы матрицы M2 их действительной частью, ис- пользуя функцию Re(z), возвращающую действительную часть числа z:

 

æ -0.53

-0.604

-1.822

-0.507 -0.343ö

 

ç

-0.273

-0.379 -3.067 -0.356

-0.228

÷

M2i, j := Re(M2i, j)

ç

÷

M2 = ç -0.178

-0.294

-5.572

-0.296

-0.182

÷

 

ç

0.051

-0.086

-1.914

-0.143

-0.06

÷

 

ç

 

 

 

 

 

÷

 

è -0.064

-0.191

-2.639

-0.221

-0.123

ø

Максимальные элементы в нечетных столбцах представим в виде ранжирован- ной переменной:

k := 1, 3.. 5

max

(

ákñ )

max =

 

 

:= max M2

 

 

k

 

 

k

 

 

 

 

 

0.051

 

 

 

 

 

 

 

 

 

 

 

-1.821

 

 

 

 

 

 

 

 

 

 

 

-0.060

 

 

 

 

 

 

 

 

 

 

 

 

 

Создадим вектор z из элементов матрицы M2 и найдем его модуль:

i := 1.. 5

æ

−0.53 ö

 

 

 

 

ç

÷

 

 

 

 

 

ç

−0.379÷

 

 

 

 

zi := M2i, i

z = ç −5.572÷

 

z

 

= 5.613

 

 

 

ç

−0.143÷

 

 

 

 

 

ç

÷

 

 

 

 

 

è

−0.123ø

 

 

 

 

Для создания матрицы M3 можно, например, использовать функцию объе- динения массивов с одинаковым количеством строк:

 

 

 

 

 

æ -0.53

-0.178 -0.064

-0.53 ö

 

é(M2T)á1ñ

,(M2T)á3ñ

,(M2T)á5ñ ,zù

 

ç

-0.604

-0.294

-0.191 -0.379÷

M3 := augment

M3 =

ç

-1.822

-5.572

-2.639

-5.572÷

 

ë

 

û

 

ç

 

 

 

÷

 

 

 

 

 

ç

-0.507

-0.296

-0.221

-0.143÷

 

 

 

 

 

ç

 

-0.182

-0.123

÷

 

 

 

 

 

è -0.343

-0.123ø

63

Контрольное задание

1 Задать произвольную матрицу M размерностью 5×4 и вектор v размерно- стью 5×1, элементы которого определяются по формуле f (x) = sin2 x x , где x

произвольное число.

2Объединить массивы M и v в матрицу A размерностью 5×5. Вывести M в виде таблицы, A в матричном виде, v отсортировать по убыванию и вывести в виде таблицы вывода ранжированной переменной.

3Найти максимальный элемент матрицы A, сумму диагональных элемен- тов, определитель матрицы A.

4Подсчитать сумму элементов матрицы А.

5Инвертировать матрицу A. В полученном массиве определить максималь- ные элементы в четных столбцах.

6В матрице A-1 определить произведение положительных элементов.

7Записать матрицу А в файл данных и просмотреть его в Блокноте.

Приблизительная оценка выполнения контрольного задания (время выполнения 20 минут):

Номера заданий

Оценка

17

9-10

15, 7

8

14, 7

6-7

1, 2, 4, 5

5

1, 2, 4

4

Контрольные вопросы

1Что такое массив?

2Что такое матрица? Что такое вектор в Mathcad? Какие бывают векторы в Mathcad?

3Что такое ORIGIN и как она задается?

4Перечислить способы создания массивов.

5Как добавить строку или столбец в уже существующий массив?

6Указать способы вывода и отображения массивов.

7Перечислить операции для работы с массивами.

8Перечислить и определить векторные функции.

9Перечислить и определить функции для создания массивов.

10Перечислить и определить функции, возвращающие специальные характеристики массивов.

11Перечислить и определить функции сортировки массивов.

12Перечислить функции для работы с файлами данных.

64

ЛАБОРАТОРНАЯ РАБОТА № 4

РЕШЕНИЕ УРАВНЕНИЙ И СИСТЕМ УРАВНЕНИЙ

Цель работы: изучить способы решения алгебраических уравнений, систем линейных и нелинейных уравнений средствами Mathcad.

Численное решение уравнений и систем уравнений

Система Mathcad обладает средствами как численного, так и аналитического решения уравнений и систем уравнений. Рассмотрим сначала способы числен- ного решения.

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

В ходе численного решения обычно выделяют два этапа:

отделение корней − определение интервала нахождения каждого корня, или даже определение приблизительного значения корня;

уточнение корней − нахождение значения корня с указанной точностью. Различают следующие способы отделения корней:

аналитический;

графический;

по смыслу задачи;

исходя из решения аналогичных задач и др.

Аналитический способ отделения корней уравнения заключается в следую- щем:

1)находится производная левой части уравнения f’(x) и вычисляются корни производной;

2)составляются таблицы значений переменной х и функции f(x) при значе- ниях х, равных критическим точкам функции (корням производной) и гранич- ным значениям (исходя из области допустимых значений неизвестного), с це- лью определения перемены знака функции f(x);

3)промежутки, на которых имеются корни уравнения f(x) = 0 (функция f(x) меняет знак), уменьшаются до длины, меньшей 1, для чего составляются новые таблицы значений х и f(x).

65

Нахождение критических точек функции f(x) можно опустить, сразу соста- вив таблицы значений аргумента и функции.

Учитывая возможности пакета Mathcad, наиболее наглядным будет отделе- ние корней уравнения графическим способом, который будет рассмотрен ниже на примерах.

Использование функции root

Встроенная функция root пакета Mathcad предназначена для нахождения ну-

лей функций или для решения одного уравнения с одной неизвестной.

Функция записывается в виде

root(f(x1, x2, ...), xi, [a, b]),

и возвращает значение переменной xi, при котором функция f(x1,x2, ...) обраща- ется в ноль. Аргументы функции root:

f(x1, x2, ...) – скалярная функция произвольного числа переменных;

xi переменная, относительно которой требуется решить уравнение;

a, b (необязательные) – действительные числа, такие что a < b, задающие интервал поиска корня.

Если заданы a и b, корень ищется на промежутке [a, b]. В противном случае переменная xi должна быть определена перед вызовом функции root некоторым начальным приближением. Для уточнения комплексного корня желательно за- давать комплексное начальное приближение, так как значение функции root зависит от выбора начального приближения.

Точность нахождения корня с помощью функции root зависит от значения

системной переменной TOL (Convergence Tolerance − Допуск сходимости), ко- торое по умолчанию равно 10-3. Чем меньше значение TOL, тем точнее, вообще говоря, находится корень уравнения. Однако оптимальным является TOL = 10-5. Более того, при выборе TOL < 10-12 улучшение результата происходить не бу- дет, а используемые алгоритмы могут не сходиться. Переопределить значение TOL можно:

присваиванием, например: TOL := 0.0001;

вызовом из главного меню окна математических свойств документа Math Options и указанием необходимого значения на вкладке Build-In Variables (Встроенные переменные).

Случается, что функция root не может найти корни уравнения, если:

уравнение не имеет корней или на заданном с помощью функции root ин- тервале [a, b] находится более одного корня;

корни расположены далеко от начального приближения;

между начальным приближением и корнем находится точка локального максимума или минимума функции;

66

уравнение имеет комплексные корни, а задано − действительное начальное приближение;

между начальным приближением и корнем функция терпит разрыв;

корни расположены близко друг от друга;

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

интервала [a, b] нахождения корня или изменение значения переменной TOL позволяет устранить ошибку применения функции root.

Решение полиномиальных уравнений. Функция polyroots

Для решения полиномиальных уравнений вида

vn xn + vn−1 xn−1 + ... + v1 x + v0 = 0 ,

или нахождения всех корней полинома степени n, используют функцию

polyroots(v),

возвращающую вектор-столбец длины n, состоящий из корней полинома, как действительных, так и комплексных. Аргументом функции polyroots является вектор v длины n + 1 < 100, содержащий коэффициенты полинома, взятые в обратном порядке.

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

Для решения полиномиального уравнения поступают следующим образом:

1)задают полином;

2)синим управляющим курсором выделяют переменную;

3)создают вектор коэффициентов полинома, выполнив последовательность команд главного меню Symbolics / Polynomial Coefficients (Символика / Поли-

номиальные коэффициенты);

4)вырезают вектор коэффициентов полинома в буфер обмена;

5)задают переменную v и присваивают ей значение вектора коэффициентов полинома, вставив его непосредственно из буфера обмена;

6)применяют функцию polyroots(v) в каком-нибудь выражении, например,

X := polyroots( v );

7) получают вектор корней полинома: X =.

Доступ к каждому отдельному корню − элементу вектора X − осуществляет- ся в этом случае с помощью индекса, например, Xi =.

67

Использование блоков решения уравнений и систем уравнений

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

Функция

find(x1, x2, …)

возвращает значения неизвестных x1, x2, … , обращающих уравнения в верные тождества, т. е. возвращает точное решение системы уравнений или одного уравнения в частном случае. Для системы из n уравнений с n неизвестными ре- шение возвращается в виде вектора, состоящего из n элементов.

Если в результате поиска не может быть получено решение с заданной точ- ностью, то функция find выдает сообщение об ошибке. В этом случае можно использовать функцию minerr, возвращающую текущее приближение к реше- нию.

Функция

minerr(x1, x2, …)

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

Порядок применения блоков Given…find, Given…minerr для численного решения уравнений и систем уравнений:

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

2При необходимости присваиваются требуемые значения системным пе-

ременным TOL и CTOL (Constraint Tolerance − Допуск ограничения).

3Печатается ключевое слово Given, которое указывает Mathcad, что далее следует система уравнений.

4Задаются уравнения и ограничения на поиск решения в виде неравенств (если они имеются) в любом порядке, каждое в отдельном формульном блоке, причем для записи используются операторы отношения палитры Boolean (Ло- гические). Допускается использование двусторонних неравенств вида a ≤ x ≤ b.

5Применяется функция find или minerr в составе какого-нибудь выражения.

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

Выбор численного метода решения осуществляется автоматически, однако

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

6В случае использования функции minerr выполняется проверка.

68

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

можно вывести найденное решение, напечатав выражение вида

find(x1, x2,…) =

если планируется использование решения системы в другом месте доку- мента, то бывает удобно определить переменную или вектор с помощью вычис- ляющей функции:

X := find(x1, x2,…)

X=

можно определить другую функцию, например:

f(a, b, c, …) := find(x1, x2, x3, …)

что бывает удобно для многократного решения системы уравнений при различ- ных значений некоторых параметров a, b, c,…, непосредственно входящих в систему уравнений.

В блоке решения недопустимы следующие операции и выражения: ∙ ранжированные переменные; ∙ выражения, содержащие операцию ≠;

локальное (:=) или глобальное () определение переменных и функций, за исключением выражения, в состав которого входит функция find или minerr;

другой блок решения. Каждый блок должен содержать только одно слово

Given и одну решающую функцию.

 

В случае появления ошибки

, означаю-

щей, что решение не было найдено, рекомендуется изменить начальное при- ближение или значения системных переменных TOL и CTOL.

Нахождение экстремумов функций

При моделировании экономических процессов большое внимание уделяется принятию оптимальных решений в планировании и управлении. Разработано множество методов математического программирования, занимающегося реше- нием задач оптимизации, но их реализация была трудоемкой до появления сис- тем компьютерной математики. Mathcad дает возможность решать такие задачи с помощью блоков Given…minimize и Given…maximize (порядок применения аналогичен рассмотренному ранее), вычисляющих экстремумы функций.

Пример 4.1. На складе имеется лакокрасочная продукция трех видов − 700, 800 и 600 литров по цене 2,5; 1,5 и 3,8 денежных единиц соответственно. Расход на 1 м2 при нанесении одного слоя покрытия − 0,09; 0,2 и 0,05 литров, а реко- мендуемое количество слоев − 2, 2 и 3 соответственно. Предприниматель наме- рен закупить 1000 литров продукции с расходом менее 165 мл/м2. Сколько лит-

69

ров каждого вида он должен закупить, чтобы стоимость была минимальной? Какова эта стоимость?

Решение.

Пусть предприниматель должен закупить x1, x2, и x3 литров каждого вида продукции. Зададим начальные значения неизвестных и целевую функцию стоимости, минимум которой будем искать:

ORIGIN:= 1 x1 := 1

x2 := 1

x3 := 1

f(x) := 2.5 × x1 + 1.5 × x2 + 3.5 × x3

Записываем ключевое слово Given, ограничения на объем закупки, на нали- чие и на расход продукции. Применяем функцию minimize:

Given

 

 

x1 + x2 + x3

 

1000

 

 

0 £ x1 £ 700

 

0 £ x2 £ 800 0 £ x3 £ 600

0.09× 2 × x1 + 0.12× 2 × x2 + 0.04× 3 × x3 < 0.165× 1000

X := Minimize(f , x)

Получаем вектор решений и вычисляем стоимость продукции:

æ 700

ö

f(X) = 2.833´ 103

X = ç 25

÷

ç

÷

 

è 275

ø

 

Решение систем линейных уравнений

Рассмотрим систему линейных алгебраических уравнений:

ìa x + a x

 

 

+ ...+ a

 

x

n

= b ;

ï 11 1

12

 

2

1n

 

 

1

ïa21x1 + a22 x2 + ...+ a2n xn = b2 ;

í..............................................

ï

 

 

 

 

 

 

 

 

 

 

 

 

 

ïa

x + a

n2

x

2

+ ...+ a

nn

x

n

= b .

î

n1 1

 

 

 

 

 

 

n

В матричном виде ее можно записать так: Ax = b, где

éa

a

...

a

ê 11

12

 

1n

A = êa21

a22

...

a2n

ê ... ... ... ...

ê

an2

...

ann

ëan1

ù

 

ú

матрица коэффициентов при неизвестных сис-

ú

темы (матрица правой части системы);

ú

 

ú

 

û

 

70