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

Применение пакета MATHCAD к решению вычислительных задач

.pdf
Скачиваний:
251
Добавлен:
26.05.2014
Размер:
379.6 Кб
Скачать

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ ФЕДЕРАЛЬНОЕ АГЕНСТВО ПО ОБРАЗОВАНИЮ

МОСКОВСКИЙ ЭНЕРГЕТИЧЕСКИЙ ИНСТИТУТ (ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ)

АМОСОВА О.А., ВЕСТФАЛЬСКИЙ А.Е.

ПРИМЕНЕНИЕ ПАКЕТА MATHCAD

К РЕШЕНИЮ ВЫЧИСЛИТЕЛЬНЫХ ЗАДАЧ

Методическое пособие по курсу «Численные методы»

Москва

Издательский дом МЭИ

2007

УДК 519

А 623

Утверждено учебным управлением МЭИ

Подготовлено на кафедре математического моделирования

Рецензенты: д.т.н., проф. Фролов А.Б., к. ф.-м. н., ст. преп. Казенкин К.О.

Амосова О.А., Вестфальский А.Е.

Применение пакета Mathcad к решению вычислительных задач : методическое пособие / М.: Издательский дом МЭИ, 2007. – 30 с.

Пособие содержит краткие сведения о некоторых встроенных функциях, а также краткую характеристику встроенного языка программирования пакета Mathcad. Все описания сопровождаются примерами их использования. Тексты всех программ для большей наглядности продублированы на языке программирования Pascal.

Предназначено для студентов всех направлений подготовки МЭИ и слушателей ФПКП, изучающих вычислительные методы.

© Московский энергетический институт (технический университет), 2007

2

 

Содержание

 

Предисловие ..................................................................................................................

4

Часть I. Встроенные средства ......................................................................................

5

1.1

Символьные вычисления .............................................................................

5

1.2

Работа с матрицами ......................................................................................

6

1.3

Поиск корней нелинейных уравнений .......................................................

8

1.4

Нормы и числа обусловленности матриц ................................................

10

1.5

Решение СЛАУ ...........................................................................................

11

1.6

Интерполяция функций .............................................................................

11

1.7

Решение задачи Коши ................................................................................

13

1.8

Блок Given – Find ........................................................................................

16

Часть II. Встроенный язык программирования .......................................................

18

Библиографический список .......................................................................................

31

3

Предисловие

Настоящее пособие является дополнением к циклу лабораторных работ по численным методам. Примерный вариант заданий лабораторных работ был ранее опубликован в изданиях [3, 4]. Данное пособие содержит минимально необходимые для выполнения лабораторных работ сведения о математическом пакете Mathcad и предназначено для тех студентов, которые не знакомы с этим математическим пакетом.

Все содержащиеся в пособии описания справедливы для любой версии пакета Mathcad, начиная с версии Mathcad 6.0 Plus. Описания применяемых численных методов, а также необходимые теоретические сведения можно найти в [1], см. также [2]. Для более детального знакомства с пакетом Mathcad можно использовать любую литературу, например, [5].

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

Вторая часть пособия содержит краткую характеристику встроенного языка программирования пакета Mathcad. На примерах задач из указанного лабораторного практикума разобраны основные конструкции встроенного языка и особенности их использования. Для большей наглядности тексты всех программ продублированы на языке программирования Pascal (предполагается, что студенты с ним уже знакомы). Также приводятся примеры вызова (и, соответственно, работы) всех написанных программ. Приведенное в пособии описание встроенного языка не является полным. Те возможности, которые не требуются для решения задач практикума, не описаны.

4

Часть I Встроенные средства

1.1. Символьные вычисления

Математический пакет Mathcad может производить вычисления двух типов: численно и символьно. Численное вычисление – это получение результата (числа) при помощи вычислительного алгоритма, имеющего конечное число действий. Например, это – вычисление значения функции в точке, нахождение корня уравнения с помощью той или иной процедуры и т.п. Результатом символьного вычисления (символьного преобразования) является формула или число, которое нельзя получить за конечное число вычислительных операций.

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

Для Mathcad’а указанием к численному вычислению является знак равенства, а указанием к символьному преобразованию – стрелка вправо.

Пример. Применение символьных преобразований

1. Вычислим производные функции.

Задаем функцию:

 

 

f(x) := 3x3 + x ln(x) cos(x)

Вычисляем первую производную:

d

f(x) 9 x2 + ln(x) + 1 + sin(x)

dx

Вычисляем вторую производную:

 

d2

f(x) 18 x +

1

+ cos(x)

 

 

 

 

 

 

 

2

x

 

 

 

dx

 

 

2. Вычислим неопределенный интеграл.

 

 

Задаем функцию:

g(x) := 9 x2 + ln(x) + 1 + sin(x)

 

 

 

 

 

 

Вычисляем интеграл:

g(x) dx 3 x3 + x ln(x) cos(x)

 

 

 

 

 

 

5

3. Вычислим предел последовательности (функции).

Зададим формулу общего члена последовательности (как функцию

номера):

x(n) :=

(n + 1)2

(n 1)2

 

2n

 

 

 

Вычислим предел:

 

lim x(n) 2

 

n → ∞

 

1.2. Работа с матрицами

Все встроенные средства пакета Mathcad, предназначенные для работы с матрицами собраны на панели векторов и матриц (vector and matrix toolbar).

Задавать матрицу можно либо вставив с панели матриц шаблон нужного размера и заполнив его числами, либо присваивая каждому элементу матрицы его значение (обычно это производится в цикле). Если элемент массива (матрицы) имеет несколько индексов, то они указываются через запятую. Для элементов матрицы первым идет номер строки, вторым – номер столбца. Индексация массивов по умолчанию начинается с нуля, однако есть возможность управлять этим процессом. Номер первого элемента хранится в предопределенной переменной ORIGIN, значение которой можно менять. Встретив присвоение ORIGIN := k, Mathcad будет все встречающиеся ниже массивы нумеровать, начиная с номера k. Любое обращение к элементу с меньшим номером будет вызывать сообщение об ошибке.

Пример. Работа с матрицами

Задаем диапазон изменения индексов:

i := 0.. 2

 

j := 0.. 2

Задаем элементы матрицы:

Ai,j :=

 

i j

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

1

2

Выводим получившуюся матрицу:

 

A =

1

0

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

1

0

 

6

Найдем определитель данной матрицы:

 

A

 

 

= 4

 

 

 

 

 

 

 

 

 

 

(Важно отметить, что знак модуля для вычисления определителя

 

необходимо вводить с помощью панели матриц.)

 

 

 

 

Найдем ранг данной матрицы:

rank(A) = 3

 

 

 

 

 

 

 

 

 

 

0.25

0.5

0.25

 

Найдем матрицу, обратную к данной:

 

 

1

 

 

 

 

 

A

=

0.5

1

0.5

 

 

 

 

 

 

 

 

0.25

0.5

0.25

 

Найдем собственные числа данной матрицы:

2.732 z := eigenvals(A) z = −20.732

Найдем максимальное и минимальное из них:

max(z) = 2.732

min(z) = −2

1

Вырежем из матрицы А средний столбец: y := A 1 y = 0

1

Превратим его в строку:

yT = ( 1 0 1 )

Вырежем из матрицы А подматрицу, состоящую из первых двух строк:

B := submatrix(A,0 ,1 ,0 ,2)

B =

0

1

2

 

 

 

 

 

1

0

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

0

0

Определим единичную матрицу: E := identity(3)

 

E =

 

0

1

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

0

1

 

7

1.3. Поиск корней нелинейных уравнений

Корень нелинейного уравнения (функции) в пакете Mathcad можно отыскать с помощью встроенной функции root(f(x0), x0). Ее аргументами являются функция f(x), корень которой отыскивается, и начальное приближение x0 к этому корню. Результатом работы является значение корня, к которому сойдется метод. Следует также учитывать, что подобно другим встроенным функциям, функция root() работает с той точностью, которая содержится в предопределенной переменной TOL. По умолчанию она равна 0.001 (TOL = 0.001), однако может быть задана равной любому другому интересующему нас значению, но не меньшему, чем 10 -15.

Пример. Найдем действительные корни функции-многочлена f(x) := x4 x 2

Зададим функцию: f(x) := x4 x 2

Для начала построим график функции на отрезке [-5, 5]

1000

500

f(x)

5

0

5

500

x

Поскольку на этом графике ничего не видно, сузим отрезок построения до [-2, 2]

 

 

20

 

 

f( x)

 

10

 

 

 

 

 

 

2

1

0

1

2

 

 

10

 

 

 

 

x

 

 

Теперь ясно, что функция имеет два вещественных корня. Один из них расположен около -1, а другой около 1.3. Эти значения и зададим ниже в качестве начальных приближений.

8

Установим высокую точность работы встроенных методов: TOL := 108

Найдем сначала отрицательный корень

x0 := −1 root(f(x0) ,x0) = −1

А теперь положительный

x0 := 1.3 root(f(x0) ,x0) = 1.35320996

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

Если рассматриваемая функция является многочленом, т.е. f (x) = a0 +a1 x +K+an xn , то для поиска корней можно также воспользоваться другой встроенной функцией polyroots(a). Ее единственным аргументом является массив коэффициентов многочлена a = (a0 , a1 , K, an )T (начиная со

свободного члена). Функция возвращает массив, содержащий все корни заданного многочлена, в том числе комплексные.

Пример. Найдем корни того же многочлена f(x) := x4 x 2

 

2

 

 

1

 

Задаем массив коэффициентов:

 

 

a :=

0

 

 

 

0

 

 

 

1

 

 

 

 

 

 

1

 

 

 

0.17660499 1.20282082i

 

Находим корни:

 

 

polyroots(a) =

0.17660498 + 1.20282082i

 

 

 

 

 

1.35320997

 

 

 

 

9

1.4.Нормы и числа обусловленности матриц

Впакете Mathcad имеются встроенные функции norm1(A), norm2(A),

norme(A) и normi(A), которые вычисляют величины A1 , A 2 , A E и A

соответственно. Единственным аргументом этих функций является квадратная матрица A. Для матриц произвольного размера (прямоугольных) данные функции применить нельзя. В частности, в пакете Mathcad нет встроенных средств для вычисления норм векторов.

Функции cond1(A), cond2(A), conde(A)

 

и

condi(A)

вычисляют

относительное число обусловленности квадратной матрицы A, используя

соответствующие нормы. (Напомним, что cond (A) =

 

 

 

A

 

 

 

 

 

A1

 

 

 

.)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Пример. Найдем норму 1 и соответствующее число

обусловленности матрицы

5

3

A =

 

 

 

 

 

7

4

 

 

 

 

Зададим матрицу:

A :=

5

3

7

4

 

 

Вычислим норму:

norm1(A) = 12

Вычислим число обусловленности:

cond1(A) = 132

Теперь вычислим число обусловленности по определению. Для этого найдем норму обратной матрицы:

norm1(A-1) = 11

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

12·11 = 132

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

10

Соседние файлы в предмете MathCad/MatLab/Maple