Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Тема 7.
Решение уравнений и их систем.
Для аналитического решения уравнений в Mathcad существует специальный оператор solve (решить). Чтобы с его помощью найти корни уравнения нужно выполнить следующую последовательность действий:
Ответ оператора solve представляет в виде выражения (численного или буквального). Если решений несколько, то они представляются в виде вектора (матрицы столбца).
Лучше всего Mathcad справляется с поиском корней алгебраических полиномов. При этом находится все корни - как действительные, так и мнимые. Их общее число, как известно (исходя из знаменитой теоремы Гаусса), равно n ,где n- степень полинома.
Пример: Поиск всех решений уравнения
Решаемое уравнение можно задавать и со знаком равенства. Однако в качестве знака равенства следует использовать логическое равенство (на панели Boolean).
Весьма неплохо справляется символьный процессор Mathcad с показателями и логарифмическими уравнениями. При решении логарифмических уравнений нужно помнить, что натуральный логарифм задается функцией ln, десятичный функцией log. Для задания логарифма при основании x также служит функция log, однако в этом случае она принимает два параметра: первый соответствует величине, от которой ищется логарифм, второй основанию логарифма. Решая логарифмическое или показательное уравнение, ответ оператор solve дает обычно в виде сложного выражения из чисел и логарифмов от чисел. Чтобы привести его к более простому виду, следует использовать оператор simplify.
Пример: Решение логарифмических и показательных уравнений.
Хуже всего символьный процессор Mathcad решает тригонометрические уравнения. Большинство таких уравнений, как известно, имеет бесконечное множество корней. Так, например, решение уравнения sin(x)=0 запишется в виде , (R множество цельных чисел). Однако Mathcad находит корни только на промежутке одного периода заданной в уравнении тригонометрической функции.
Пример: Решение тригонометрических уравнений.
Далеко не все уравнения можно решать аналитически. Чаще их приходится решать численными методами.
Для численного поиска решений алгебраических уравнений с одним неизвестным в Mathcad существует специальная встроенная функция root (корень). Функция эта может использоваться в двух различных формах, при этом реализуются разные численные алгоритмы. Так, если определена только одна точка приближения к корню, поиск решений будет осуществляться так называемым методом секущих. Если же задан интервал, на котором предположительно локализовано решение, то поиск его будет осуществлен с применением метода деления пополам (метод Больцано).
Если необходимо найти корень некоторого уравнения, причем известен интервал, в котором он локализован, проще всего использовать функцию root с четырьмя аргументами: root(f(x),x,a,b), где f(x) функция, определяющая уравнение, x переменная, a и b границы интервала локализации.
Обязательным условием является то, что значения функции на концах интервала должны быть противоположных знаков. Если это условие нарушается, система выдает сообщение об ошибке. Кроме того, функция f(x) должна быть ограниченной и непрерывной на промежутке [a,b].
Очень важной характеристикой решения является его точность. В Mathcad можно регулировать величину погрешности решения, изменяя значение специальной системной переменной TOL (от англ. «tolerance» - точность). Изменить величину этой системной переменной можно либо при помощи панели, открываемой командой Math ► Options (Инструменты ►Опции документа), либо выполнив соответствующее присваивание непосредственно слева или сверху функции численного решения. По умолчанию TOL равняется 10-3.
Величина TOL должна задаваться исходя из того, сколько знаков в мантии ее решения являются значимыми. Например, если решение нужно получить с точностью до пятого знака после запятой, то TOL должен быть равен 10-5.
Пример: Найти первый положительный корен уравнения
Задаем функцию
Значение первого положительного корня очевидно.
TOL:=0,1. Ответ точен до первого знака после запятой:
TOL:=0,0001. Ответ точен до 4-го знака после запятой:
TOL:=0,0000000001. Ответ точен до 10-го знака:
Пример: Решение уравнений методом секущих.
Задаем функцию, описывающую уравнение:
Точное значение первого положительного корня:
Задаем начальное приближение:
x:=0.2
Ищем корень при различных значениях TOL:
TOL:=10-4 root(f(x),x)=0.240805743114691
TOL:=10-4 root(f(x),x)=0.28518778874873
Одним из основных недостатков функции root является то, что одновременно она способна найти только один корень уравнения. Чтобы найти остальные корни, придется проделать те же операции, но для других приближений.
Однако, если уравнение представлено алгебраическим полиномом в Mathcad существует специальная функция поиска всех корней функция polyroots (v), где v вектор, составленный из коэффициентов полинома.
Важной особенностью задания v является то, что коэффициенты располагаются в векторе сверху вниз соответственно увеличению степеней членов полинома, к которым они относятся.
Пример: Поиск корней полинома численным методом
x4+x3+x-10=0
Переписывать коэффициенты из выражения в вектор не очень интересное и приятное занятие. К тому же довольно легко либо допустить ошибку в самом числе, либо просто перепутать знаки. Для решения этой проблемы нужно использовать специальный оператор coeffs, расположенный на панели symbolic. Причем, полином может быть представлен и в неразвернутой форме: к стандартному виду оператор coeffs приведет его автоматически.
Пример: Использование оператора coeffs.
(x2+x-3)2+(x-10)3=0
f(x):=(x2+x-3)2+(x-10)3
Все методы решения систем линейных алгебраических уравнений можно разделить на две основные группы. К первой относятся так называемые прямые (или матричные) методы: Крамера и Гаусса. Во вторую группу входят довольно специфичные итерационные методы.
В системе Mathcad реализованы в виде специальных функций методы обеих групп, однако ниже остановимся только на прямых методах.
Ниже следующий пример демонстрирует аналитическое решение системы уравнений методом Крамера.
Пример: Решить систему линейных уравнений методом Крамера:
x+y+z+p=10
x-y-z-p=-8
x+y-z+p=4
-x-y+z+p=4
Прежде всего следует переписать систему в матричном виде
Если такой метод решения систем линейных уравнений не очень нравится, то можно воспользоваться специальной встроенной функцией lsolve(M,V), где M - матрица коэффициентов, V- вектор правых частей. Функция эта также использует метод Крамера.
Пример: Решение системы линейных уравнений при помощи функции lsolve
Особенностью функции lsolve является то, что она может найти решение системы уравнений не только численно, но и аналитически.
В Mathcad метод Крамера считается основным при решении систем линейных алгебраических уравнений. Однако, есть возможность решения такой системы уравнений и методом Гаусса. Для этого служит функция rref(M), где M матрица, полученная слиянием матрицы коэффициентов и вектора правых частей.
Пример: Решить систему линейных алгебраических уравнений методом Гаусса.
3x+2y-z+10k=100
x-4y+5z-k=56
23x+56y-43z+12k=49
x+y+z+k=0
Составляем матрицу коэффициентов и вектор правых частей:
Объединяем матрицу коэффициентов и вектор правых частей в одну матрицу:
M:=augment(KOF,PR)
Находим корни системы