1. Задаем матрицу системы А и матрицу свободных членов В. Для этого пишем А, вводим двоеточие (которое автоматически заменится на знак присваивания «:=»), затем на панели инструментов для работы с матрицами и векторами нажимаем кнопку создания матрицы или вектора и вводим матрицу системы. Аналогично вводим столбец свободных членов.
2. Вводим lsolve(A,B)=
![]() |
![]() |
![]() |
Решение с помощь функции Given…Find
1. Вводим начальные приближения: x1:=1, x2:=1, x3:=1.
2. Вводим слово Given
3. Ниже вводим систему уравнений, используя при этом вместо обычного знака равно знак булева равенства (вводится нажатием Ctrl+=).
4. Ниже пишем: Find(x1,x2,x3)=
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Решение СЛАУ методом обратной матрицы
1. Вводим матрицу системы и матрицу свободных членов, как и при решении с помощью lsolve().
2. Вводим x:=A -1 B. Для ввода обозначения обратной матрицы нужно воспользоваться соответствующей кнопкой панели инструментов «Матрицы».
![]() |
![]() |
![]() |
![]() |
Решение нелинейных уравнений с помощью MathCad.
Локализация корней.
Предположим нам нужно уточнить корни уравнения f(x):=x cos(x).
Для локализации корней удобно построить график функции. Для этого нужно:
1. Определить функцию, т.е. ввести f(x):=x cos(x)
2. Выбрать Вставить-Графики-Зависимость XY.
3. Под осью абсцисс ввести х, слева от оси ординат ввести f(x).
4. При необходимости откорректировать пределы изменения аргумента и функции.
Основные свойства графика можно настроить выбрав пункт Формат в контекстном меню, вызываемом щелчком правой кнопкой мыши на графике.
В результате анализа графика определяются начальные приближения корней уравнения.
Уточнение корней.
Уточнение корней производится с помощью функции root():
1. Устанавливаем точность вычислений, изменяя значения пункта Порог сложности на закладке Толерантность окна, вызываемого командой Формат-Результат. На закладке Формат номера того же окна выбираем способ отображения результата и количество отображаемых десятичных знаков.
2. Вводим root(f(x),x)=
![]() |
![]() |
![]() |
![]() |
Интерполирование функций средствами MathСad
В MathCad имеются средства для сплайновой интерполяции.
Интерполирование производится с помощью функции interp(vs,vx,vy,x), которая возвращает вектор значений функции y в интересующих точках х.
Здесь и далее vx – вектор исходных значений аргумента, vy – вектор исходных значений функции, vs – вектор вторых производных, возвращаемых одной из функций cspline(vx,vy), pspline(vx,vy), lspline(vx,vy), которые возвращают вектор vs при использовании кубических, параболических и линейных сплайнов соответственно.
Для интерполирования линиями можно воспользоваться функцией linterp(vx, vy, x).
Конечно, используя вычислительные возможности MathCad, всегда можно воспользоваться другим методом интерполяции (например, с помощью полиномов Ньютона и Лагранжа).
Пример.
Имеются экспериментально полученные точки:
Значение аргумента x | Значение функции y |
-1.06 -0.837 -0.684 -0.315 -0.117 -0.0 0.115 0.5 | 1.22 0.854 0.513 0.271 0.217 0.198 0.218 0.277 |
Построить график функции y(x) используя точки, отличные от экспериментально полученных.
Решение.
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Аппроксимация зависимостей с помощью MathCad
В MathCad можно найти значения функции у в промежуточных точках с помощью полинома некоторой степени. Для этого используются следующие функции:
regress(vx,vy,k) – возвращает вектор, который использует функция interp для нахождения полинома степени k, который наилучшим образом приближает значения x и y данных, хранящихся в векторах vx, vy.
interp(vs,vx,vy,x) – возвращает приближенное значение y, соответствующее значению x. Где vs – вектор, получаемый с помощью regress.
Пример.
Имеются экспериментально полученные точки:
Значение аргумента x | Значение функции y |
1,5 3,7 |
Определить вид аппроксимирующего полинома 4-й степени и с его помощью построить график функции y(x).
Решение.
Решим задачу методом наименьших квадратов, а затем с помощью встроенных функций MathCad.
Введем исходные данные |
![]() |
![]() |
Вычислим коэффициенты системы уравнений |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Определим матрицу коэффициентов и матрицу свободных членов системы |
![]() |
![]() |
Найдем коэффициенты полинома, решив систему |
![]() |
![]() |
Определим вид полинома |
![]() |
Построим график Р(х) |
![]() |
![]() |
![]() |
![]() |
Во всех точках х для сравнения вычислим значения функции с помощью встроенных средств аппроксимации |
![]() |
![]() |
Строим графики |
![]() |
Как видно, графики совпадают.
Вычисление определенного интеграла
и производной средствами MathCad
Предположим нужно вычислить интеграл функции на отрезке [0; 2] и производную этой функции в точке х=1. Решение такой задачи в MathCad имеет вид:
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Интеграл может быть кратным, подынтегральная функция может быть комплексной или функцией нескольких переменных.
Для вычисления производных более высоких порядков используется специальная конструкция:
Решение ОДУ средствами MathCad
Для решения линейных обыкновенных дифференциальных уравнений в MathCad функция odesolve(x,b,[step]), которая возвращает значение функции, зависящей от х и являющейся решением линейного ОДУ. Здесь х – аргумент, b – правый конец отрезка, [step] – необязательный параметр, количество шагов для нахождения решения. Количество начальных условий должно равняться порядку уравнения.
Пример.Решим уравнение на отрезке [0, 4π]. Известно, что y(0)=0, а y’(0)=1.
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Примечание:В блоке Given используются знаки булева равенства, вставляемые нажатием Ctrl+= и знак производной (штрих), вставляемый нажатием Ctrl+F7.
Решение ОДУ первого порядка вида может быть получено с помощью функций rkfixed(y0,a,b,n,D), которая возвращает матрицу, состоящую из двух столбцов. В первом столбце хранятся значения аргумента, во втором – функции (результаты решения). Здесь y0 – начальное значение функции y, а – начало отрезка, b – конец отрезка, n – количество отрезков разбиения, D – первая производная от у.
Пример.Решим уравнение на отрезке [0, π]. Известно, что y(0)=1.
![]() |
![]() |
![]() |
![]() |
![]() |
Для решения ОДУ первого порядка так же можно использовать функцию rkadapt(),аналогичную рассмотренной выше rkfixed(), за исключением того, что решение находится не с фиксированным шагом, а с автоматическим его подбором.
Содержание
Функция lsolve
Альтернативой способу решения СЛАУ, введенному в предыдущем разделе, является применение встроенной функции isolve. Для этого система уравнений должна быть записана в матричной форме Аx=b:
- isolve (А, b) – вектор решения системы линейных алгебраических уравнений:
- А – матрица коэффициентов системы;
- b – вектор правых частей.
Примечание
В функции isolve запрограммирован численный метод LU – разложения (см. разд. 8.3.3), основанный на алгоритме последовательных исключений Гаусса. Он состоит в преобразовании матрицы А линейной системы к треугольному виду, т. е. к форме, когда все элементы ниже главной диагонали матрицы являются нулевыми (с/и. разд. 8.3.1). Точнее, исходная СЛАУ Ах=b заменяется эквивалентной системой с другой матрицей А* и другим вектором правых частей b*, но имеющей то же решение, что и исходная система. Очень важно заметить, что результат, выдаваемый методом Гаусса, является точным (конечно, с поправкой на неизбежно присутствующие ошибки численного округления, которые, в случае хорошо обусловленной матрицы А, являются ничтожными). Таким образом, в противоположность применению вычислительного блока Given/Find (в основе которого лежит приближенный итерационный алгоритм), функция isolve не нуждается в присвоении начальных значений вектору x.
Применение функции isolve показано в листинге 8.4. При этом матрица А может быть определена любым из способов, необязательно явно, как во всех примерах этого раздела. В последней строке листинга осуществляется вычисление нормы невязки, которая оказывается равной нулю. Заметим, что встроенную функцию isolve допускается применять и при символьном решении СЛАУ (листинг 8.5). В последнем случае в уравнениях допускается использовать параметры (т. е. имена переменных, которым не присвоены никакие значения).
Листинг 8.4. Численное решение СЛАУ:
Листинг 8.5. Символьное решение СЛАУ (продолжение листинга 8.4):
Постановка задач 3
Основная часть 3
Системы линейных алгебраических уравнений 3
Функция lsolve 4
Функция augment 5
Функция submatrix 6
Решение СЛАУ методом Гаусса 7
Решение СЛАУ методом Крамера 8
Список использованных источников 10
Научиться решать системы линейных уравнений средствами Mathcad.
Изучить материал по линейной алгебре, необходимый для
выполнения лабораторной работы;
Изучить свойство функций lsolve, augment и submatrix в программе
Научиться применять функции lsolve, augment и submatrix в
среде Mathcad для решения систем линейных алгебраических уравнений методами Гаусса и Крамера.
Системы линейных алгебраических уравнений
Центральным вопросом вычислительной линейной алгебры является решение систем линейных алгебраических уравнений (СЛАУ), т. е. систем уравнений вида
В матричной форме СЛАУ записывается в эквивалентном виде:
,
где А — матрица коэффициентов СЛАУ размерности mxn;
х — вектор-столбец неизвестных;
b— вектор-столбец свободных коэффициентов.
СЛАУ имеет единственное решение, если матрица А является невырожденной, т. е. ее определитель не равен нулю.
Для упрощения решений подобных систем уравнений была создана программа Mathcad, с набором различных встроенных функций, предназначенных для решения СЛАУ, некоторые из них, такие как lsolve, augment и submatrix, мы рассмотрим далее в работе.
Функция lsolve
В Mathcad СЛАУ можно решить в более удобной для записи форме (2), с помощью функции lsolve.
Lsolve(A,b) — это встроенная функция, которая возвращает вектор x для системы линейных уравнений при заданной матрице коэффициентов А и векторе свободных членов b.
Функцию lsolve применяют в работе с Mathcad следующим образом (скриншот 1):
создается в документе требуемая СЛАУ;
опираясь на заданную СЛАУ, создаем матрицу коэффициентов —
А необходимой размерности и матрицу свободных коэффициентов – b;
в панели инструментов выбираем необходимую нам функцию –
подставляем в выбранную функцию необходимые параметры А, b;
Скриншот 1 – применение функции lsolve в Mathcad
Функция augment
Функцию augment применяют для решения СЛАУ методами Крамера и Гаусса в программе Mathcad.
Аugment(A,B) – это встроенная функция, которая объединяет матрицы A и B в одну новую, при этом матрица B располагается справа от матрицы A, и обе матрицы должны иметь одинаковое число строк.
Функцию augment применяют в работе с Mathcad следующим образом (скриншот 2):
создается в документе требуемая СЛАУ;
опираясь на заданную СЛАУ, создаем матрицу коэффициентов –
А необходимой размерности и матрицу свободных коэффициентов – b, при этом матрица b должна располагаться справа от матрицы A;
в панели инструментов выбираем необходимую нам функцию –
подставляем в выбранную функцию необходимые параметры А, b;
получаем объединенную матрицу матриц A и b.
Скриншот 2 – применение функции augment в Mathcad
Функция submatrix
Функцию submatrix, также как и функцию augment и lsolve, применяют для решения СЛАУ в программе Mathcad.
Функция submatrix(А,_,_,_,_) – встроенная функция, с помощью которой можно выделить из заданной матрицы один столбец или строку.
Функцию submatrix применяют в работе с Mathcad следующим образом (скриншот 3):
создают матрицу, какой-либо размерности;
в панели инструментов выбираем необходимую нам функцию –
подставляем в выбранную функцию параметры, с помощью
значения которых мы хотим выделить столбцы или строки в новую матрицу;
Скриншот 3 – применение функции submatrix в Mathcad
Решение СЛАУ методом Гаусса
СЛАУ в программе Mathcad можно решать не только с помощью функции lsolve, но и с помощью рассмотренных выше функций augment и submatrix, используя следующий ход вычислений (скриншот 4):
создается в документе СЛАУ;
выбрав из встроенных функций функцию ORIGIN, присваиваем ей
значение равное единице (роль данной функции заключается в том, что в последующем решении системы, в матрицах первая строка, будет иметь первый коэффициент, равный единице);
опираясь на заданную СЛАУ, создаем матрицу коэффициентов —
А необходимой размерности и матрицу свободных коэффициентов – b;
с помощь функции augment, создаем объединенную матрицу;
выбираем из встроенных функций функцию rref, и присваиваем ей
параметр, соответствующий объединенной матрице (с помощью функции rref приводим матрицу к ступенчатому виду для дальнейшего решения);
используя функцию submatrix, находим неизвестные.
Скриншот 4 – решение СЛАУ в Mathcad методом Гаусса
Решение СЛАУ методом Крамера
СЛАУ можно решать не только методом Гаусса, но и методом Крамера. Для того чтобы произвести вычисления в программе Mathcad, достаточно двух, уже изученных нами функций: augment и submatrix.
Ход решения СЛАУ в Mathcad (скриншот 5):
создается в документе СЛАУ;
выбрав из встроенных функций функцию ORIGIN, присваиваем ей
значение равное единице;
опираясь на заданную СЛАУ, создаем матрицу коэффициентов —
А необходимой размерности и матрицу свободных коэффициентов – b;
вычисляем определитель матрицы А;
с помощью функций augment и submatrix создаем матрицы с
заменой необходимого нам столбца столбцом свободных коэффициентов – b;
вычисляем определители полученных матриц;
находим неизвестные СЛАУ по формуле Крамера:
подставляя в нее полученные значения определителей.
Скриншот 5 – решение СЛАУ в Mathcad методом Крамера
Программа Mathcad позволяет упростить решение СЛАУ с помощью встроенных в нее функций. Так, c помощью функции lsolve, система линейных уравнений решается в одно действие. СЛАУ методом Гаусса с помощью функций augment и submatrix решается гораздо быстрей и проще, нежели это было бы на бумаге. В данной работе были приведены решения простейших систем уравнений, которые вычислить и на бумаге не составит труда, но с помощью программы Mathcad можно решить сложнейшие системы в кротчайшее время, над решениями которых человек затратит много времени. В работе были рассмотрены всего лишь несколько функций из множества приведенных в Mathcad.
1 Плис, А. И. Mathcad: математический практикум для экономистов и инженеров: учеб. пособие/ А. И. Плис, Н. А. Сливина. – М., 1999. – 656с.
2 Панферов, А. И. Применение Mathcad в инженерных расчетах: учеб. пособие/ А. И. Панферов, А. В. Лопарев, В. К. Пономарев – М., 2004. – 88с.
3 Симонович, С. В. Информатика: базовый курс: учеб. для вузов/ С. В. Симонович – Питер, 2001. – 640с.
4 Шипачев, В. С. Высшая математика: учеб./ В. С. Шипачев – М., 1998. – 479с.
5 Черненко, В. Д. Высшая математика в примерах и задачах: учеб. пособие/ В. Д. Черненко – М., 2003. – 703с.