Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие (MathCad).doc
Скачиваний:
95
Добавлен:
27.11.2019
Размер:
3.98 Mб
Скачать

2.4. Решение уравнений и систем уравнений

2.4.1. Простое линейное уравнение и его решение

Линейное уравнение задается как ax - b = 0. Перенеся b в правую часть, получим ax = b, откуда следует тривиальное решение x = b/a или x = a-1b.

Пример 2.15. Решить уравнение 5x-2 = 0. Имеем x = 2/5 = 0,4.

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

Не намного сложнее решение системы линейных уравнений:

a1,1x1 + a1,2x2 + ... + a1,nxn = b1

a2,1x1 + a2,2x2 + ... + a2,nxn = b2

...........................................

an,1x1 + an,2xn + ... + an,nxn = bn

Здесь a1,1, a1,2,...,an,n - коэффициенты левой части системы, b1, b2,...,bn - свободные члены и x1, x2,..., xn - неизвестные, которые мы хотим найти.

Эта система может быть представлена в матричном виде как AX=B, где A — квадратная матрица коэффициентов левой части системы уравнений (размера nn), B —вектор-столбец свободных членов и X — искомый вектор неизвестных. Отсюда вытекают различные способы решения, в том числе по форме аналогичные решению одиночного уравнения: X=B/A (с применением матричного деления) или X=A-1B (с инвертированием матрицы A) и так далее. Есть и специальные методы решения систем линейных уравнений, например метод Гаусса, который изучается в школе.

В системе Mathcad решение систем линейных уравнений резко упрощается, поскольку для этого введена функция lsolve(A, B). Она возвращает вектор неизвестных X. Функция анализирует матрицу A и выбирает наиболее подходящий метод решения, дающий минимальную погрешность результата.

Пример 2.16. Решить систему линейных уравнений:

3x1 + 2x2 + x3 = 4,

x1 + x2 - x3 = 1,

x1 - 2x2 + x3= 3.

Р ешение с применением операции обращения матрицы A имеет вид:

Теперь решим эту же систему с помощью функции lsolve (A, B):

Р езультаты решений оказались идентичными.

Пример 2.17. Решить заданную в матричном виде систему линейных уравнений с комплексными коэффициентами правой части системы:

Т еперь решим ту же систему с помощью функции lsolve(A, B):

Результаты опять-таки аналогичны. Так что мы можем смело решать даже системы линейных уравнений с комплексными элементами матрицы A и вектора B.

2.4.3. Методы решения нелинейных уравнений вида F(x)=0

Одиночное нелинейное уравнение, например трансцендентное, можно задать в одной из двух форм:

F(x)=0 или f(x)=expr,

где expr - выражение. Второе уравнение всегда можно представить в виде F(x)=f(x)-expr=0, то есть в форме первого уравнения.

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

Простых Метод Метод Модифицированный

итераций Ньютона Рыбакова метод Ньютона

xn+1=F(xn) xn+1=xn-F(xn)/F'(xn) xn+1=xn-F(xn)/M xn+1=xn-xF(xn)/(F(xn+x)-F(xn))

Метод Комбинированный метод

хорд секущих-хорд

xn+1=xn-(xn-a)F(xn)/(F(xn)-F(a)) при a=const xn+1=xn-(xn-xn-1)F(xn)/(F(xn)-F(xn-1))

xn+1=xn-(xn-b)F(xn)/(F(b)-F(xn)) при b=const

Все эти методы решают уравнение вида F(x)=0, кроме метода простых итераций, требующего довольно тривиального приведения уравнения к виду x=f(x). Метод хорд ищет решение в интервале от a до b, причем одна из границ считается неподвижной - в зависимости от того, какая из границ - a или b - неподвижна, обеспечивается переход к той или иной итерационной формуле. В других методах приходится задавать начальное приближение x0. Итерации обычно ведутся до тех пор, пока соблюдается условие |xn-1-xn|>, где - заданная абсолютная погрешность вычислений.

Ни один из представленных простых методов не обеспечивает определение всех корней, если их число больше 1. Для поиска всех корней используются специальные алгоритмы, например исключения уже найденного корня xi делением F(x) на (x-xi) для всех i.

П ример 2.18. Найти методом простых итераций корень уравнения x - sin(x) - 0,25 = 0. Перенесем -sin(x)-0,25 в правую часть уравнения и с помощью системы Mathcad, задав x0=1,3, найдем 6 дополнительных итераций выражения x= sin(x) + 0,25:

Нетрудно заметить, что решение уравнения сходится монотонно. На двух последних итерациях получено значение x, равное 1,172. Вектор решения транспонирован для записи его в виде строки, а не столбца.

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

2.4.4. Решение нелинейных уравнений F(x)=0

Современные СКМ обычно не требуют детальной реализации численных методов пользователем. Более того, они используют наиболее совершенные методы решения уравнений вида F(x) = 0, как правило, обеспечивающие быструю сходимость. При этом обычно решение ищется в два этапа:

  1. Выявляются области изоляции корней, т.е. области изменения x в пределах которых имеется только один корень.

  2. Уточняются значения каждого корня с заданной погрешностью TOL (по умолчанию 10-3).

Во время первого этапа часто используется графический метод решения. Он заключается в построении графика функции F(x) и приближенной (на глаз) оценке значений x, при которой график F(x) пересекает ось абсцисс. Можно также ориентироваться на следующие свойства функций:

  • если функция f(x) непрерывна на отрезке [a, b] и имеет на его концах разные знаки, т.е. f(a)f(b)<0, то в этом отрезке есть хотя бы один корень;

  • если f(x) непрерывна и монотонна (f’(x) не меняет знак) на отрезке [a, b] и при этом f(a)f(b)<0, то на этом отрезке корень будет единственным.

После этого используется функция Mathcad для уточнения (поиска) корня:

root(Выражение,Имя_переменной).

Эта функция возвращает с заданной переменной TOL погрешностью значение переменной, при котором Выражение равно 0. Функция реализует вычисления итерационным методом, причем перед ее применением надо задать начальное значение переменной. Это особенно полезно, если возможно несколько решений. Тогда выбор одного из них определяется начальным значением переменной.

Пример. 2.19. Найти корни уравнения F(x) = x2 + 2x - 30. Решение представлено на рис. 2.2. Нетрудно заметить, что это уравнение имеет два корня и оба они найдены.

Рис.2.2. Пример графического и численного решения уравнения x2 + 2x - 30 = 0

В новых версиях Mathcad возможности этой функции расширены, и она может записываться в виде:

root(Выражение,Имя_переменной,a,b).

Здесь a и b — границы численного интервала для поиска корней.

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

Пример 2.20. Найти только реально существующий (положительный) корень уравнения x2 - 9 = 0. Имеем на отрезке [0, 5]:

Выражение, корень которого находится функцией root, может быть представлено в виде F(x) или даже F(x) = F1(x) - F2(x), если решается уравнение F1(x) = F2(x).