Гурский Д., Турбина Е. - Вычисления в MathCad 12 (1077322), страница 67
Текст из файла (страница 67)
В Mathcad графический метод используется относительно редко. Однако есть случаи, в которых без него не8.1. Решение уравнений * 2 8 9обойтись. Дело в том, что порой встречаются такие уравнения, которые нельзя решитьни аналитически, с использованием оператора solve, ни численно, применяя функциюroot. Невозможность аналитического решения объясняется сложностью соответствующих уравнений. То же, что найти корни этих уравнений невозможно посредствомчисленных методов, связано с тем, что описывающие их функции принимают не непрерывный, а дискретный набор значений. Приведем три примера таких функций:гпfl(n):=;t?rw<in<°):=-t-2~*•• t - u + 2 -Функция fl(n) определена лишь при целых неотрицательных п, так как только такиезначения могут соответствовать порядку производной.
При аналогичных значениях псуществует f2(n), что связано с тем, что в знаменателе ее выражения вычисляется факториал. Функция f3(n) дискретна, так как она задается суммированием членов ряда от 0 до п.Чтобы решить уравнение графически, следует построить график функции, соответствующей его левой части. Затем нужно провести вспомогательную линию на уровне,определяемом правой частью уравнения. Область, в которой вспомогательная линияи кривая функции пересекаются, следует увеличить, используя инструмент Zoom (Масштаб) (подробно данный инструмент описывается в главе, посвященной графикам).Если решение нужно найти максимально точно, эту операцию следует проделать несколько раз.
Затем необходимо определить координаты точки пересечения вспомогательной линии и кривой, задействовав инструмент Trace X-Y (Следовать X-Y) при включенном параметре Track Data Points (Следовать точкам данных).Пример 8.20. Графическое решение уравненияПусть стоит задача с точностью до 10"10 найти сумму следующего бесконечного ряда:оо2пп =0Так как данный ряд является абсолютно сходящимся, то точность его приближения усеченнымрядом не превышает величины первого отброшенного члена. Соответственно, нужно определить,при каком п член ряда принимает значение, меньшее 10"1".
Сделать это, используя оператор solveили функцию root, не получится. Но эту задачу можно решить графически (рис. 8.8).Итак, необходимо просуммировать где-то 15—16 членов ряда. В том, что при этом будет достигнута требуемая точность, можно убедиться, вычислив сумму бесконечного ряда аналитически.оо2— ->2-ехр(1)n!™15 2У — - 2 е = -1.31х 10~ Ип!~п = 0п=0В отдельных случаях функции дискретного аргумента можно преобразовать в идентичные, но непрерывные функции. При этом становится возможным использование численных и, порой,даже аналитических методов решения уравнений. Так, если в выражении дискретной функцииприсутствует факториал, то его можно заменить Г-функцией Эйлера. Данная функция является обобщением понятия факториала на всю область действительных чисел.
Она непрерывна приположительных значениях аргумента, принимая при целочисленном значении аргумента те же2 9 0 • Глава 8. Решение уравнений и систем уравненийзначения, что и факториал. Используя Г-функцию, поставленную выше задачу можно решитьпроще:г(п):=Г(п)-10-10root(r(n),n,l,50) = 16.256i:= 0.. 25ад - •сорухj 1.7206*310Y2-value jCapyYCopyY2F Track data points10152023Рис.
8.8. Графическое решение уравнения. Так как функция изменяется крайне быстро и еезначения для разных п различаются на много порядков, то на оси Y следует использоватьлогарифмическую шкалу8.2. Решение систем уравненийПринципы, лежащие в основе как аналитического, так и численного решения системуравнений схожи с принципами, на который основывается решение одинарных уравнений.
Поэтому, прежде чем приступить к изучению этого раздела, прочитайте разделпредыдущий. Многие описывающиеся в нем идеи мы не будем повторять в этом разделе, считая, что они уже прочно усвоены. К примеру, мы не будем подробно останавливаться на системной переменной TOL, так как в случае решения систем уравнений онаисполняет ту же роль, что и в случае уравнений одинарных.Данная глава разделена на две части. В первой мы изучим способы решения системлинейных уравнений, во второй — нелинейных. Однако вы должны понимать, что линейные уравнения есть не более чем подмножество нелинейных. Поэтому способы решения систем нелинейных уравнений могут быть использованы для решения системлинейных уравнений.
Однако на практике проще использовать специализированныесредства решения линейных уравнений, так как при этом не придется задавать начальные приближения, а ответ будет получен быстрее и точнее.8.2. Решение систем уравнений• 2918.2.1. Решение систем линейных уравненийВсе методы решения систем линейных алгебраических уравнений можно разделитьна две основные группы. К первой относятся так называемые прямые методы, например, Крамера или Гаусса.
Во вторую группу входят довольно специфичные итеративные методы. В системе Mathcad реализованы методы обеих групп. При использованиипрямых методов расчет можно вести как численно, так и символьно. Итеративные методы применяются лишь в численных расчетах.Наиболее просто можно решить систему линейных уравнений, вспомнив некоторыеправила линейной алгебры. Нижележащий пример демонстрирует аналитическое и численное решение системы уравнений с использованием обратной матрицы.Пример 8 . 2 1 .
Решить систему линейных уравнений следующего вида:x+y + z+p=10x - y - z - p = -8x+y-z+p=4- х - у + z + p= 4Прежде всего следует переписать систему в матричном виде. Для этого нужно составить матрицу коэффициентов, вектор неизвестных и вектор правых частей.1KOF:=11\-1 -1 -11 -1-11v ._л. . —11'10^'VУzPR:=JТеперь данную систему уравнений можно заменить тождественным ей матричным выражением KOF-X=PR. В справедливости его можно убедиться, выполнив матричное умножение. Чтобы выразить вектор решений, умножим слева обе части уравнения на матрицу, обратную KOF.В результате получим конечную формулу X=KOF'-PR, по которой и будем вести расчет.KOFKOF1PR =Находить решение системы линейных уравнений через обратную матрицу вполне допустимо, если количество уравнений в системе невелико и расчет должен быть произведен только один раз.
Если же система большая или же одновременно нужно решитьмного систем, то такой подход не является оптимальным. В Mathcad встроен болеебыстрый и точный метод решения систем линейных уравнений, основанный на LUразложении (о его сути мы поговорим чуть ниже). Чтобы его использовать, следуетобратиться к встроенной функции lsolve(M,v), где М — матрица коэффициентов, v — вектор правых частей.
Расчет данная функция может вести как численно, так и аналитически.2 9 2 • Глава 8. Решение уравнений и систем уравненийПример 8.22. Полином степени 3 проходит через точки (0, 5), (4, -23), (8, -3),(11, 100). Найти уравнение данного полиномаВ общем виде уравнение полинома степени 3 может быть записано следующим образом:32Рз(х) = а-х + Ь-х + с х + dНам известны четыре точки, через которые проходит полином. На основании этой информацииможно записать систему линейных уравнений, в которой неизвестными будут коэффициентыуравнения параболы а, Ь, с, d. Матрица коэффициентов и вектор правых частей для этой системы будут иметь следующий вид:00014342418382И3ИВ:=А:=28111-23-3\)Решаем полученную систему линейных уравнений, используя функцию lsolve.
Расчет ведем численно и аналитически. На основании полученных данных задаем функцию полинома Р 3 (х).1130.245462K:=lsolve(A,B) ->-1.435lsolve(A,B) =-221154-5.173V-11955j23132Р 3 (х) :=К 0 -х + Kj-x + К^-хЧ-5Строим график полинома, коэффициенты которого были определены, чтобы убедиться, что ондействительно проходит через данные в условии задачи точки (рис. 8.9).4 8 1\уdat ву:=(5 -23 -3 100)'100-50-•О О10Рис. 8.9.
Кубическая парабола, проходящая через четыре точки8.2. Решение систем уравнений• 293В каких случаях решение СЛАУ нужно искать численно, а в каких аналитически? Аналитический расчет лучше в том отношении, что ответ выдается в виде «красивых» выражений и не содержит погрешности (главный недостаток такого подхода, связанныйс возможностью появления громоздких дробей, легко решается их пересчетом в числас плавающей точкой посредством оператора float). Также при этом допустимо, чтобыкоэффициенты были не числами, а символами или символьными выражениями. Однако символьный расчет не стоит применять, если система очень большая (его приэтом весьма сложно реализовать технически, так как в Mathcad напрямую не можетбыть задана матрица размерности больше, чем 10x10). Также лучше предпочесть численный метод, если коэффициентами являются числа с плавающей точкой.
Если задействовать при этом оператор символьного вывода «—>», то ответ будет получен, однако для его нахождения будет задействован тот же численный алгоритм, как если быбыл использован оператор вывода «=». Правда, так как символьный процессор применяет не связанную с аппаратным уровнем арифметику длинных мантисс, то ответ приэтом будет на пять знаков точнее. Однако и времени на его нахождение уйдет больше.Невозможно использовать символьный расчет также, если решение СЛАУ являетсячастью алгоритма, реализованного в виде программы на языке Mathcad.Пример 8.23.
Решение СЛАУ, заданной в общем видеc-x2-i- xl-f-i-b-k-x2+ k-z-xl- хЗ-z-c + Ь-хЗ-ffa-g-z-c + f-g-b + d-c-i - d-b-k + z-a-k - a-i-fbA:= d z fOB iTV— x2^x3,lsolve(A,B)-- ( g c x 2 - g-xl-f + k-d-xl- x3d-c + f-a-хЗ- x2-a-k)-g-z-c + f-g-b + d-c-i - d-b-k + z-a-k - a-i-f-d-b-x3+ x2-g-b - g-z-xl+ z-a-x3+ d-xl-i - a-i-x2-g-z-c + f-g-b + d-c-i - d-b-k + z-a-k- a-i-fМатричные методы решения СЛАУ не могут быть использованы, если количествоуравнений и количество неизвестных в системе не совпадает (при этом матрица коэффициентов не будет квадратной). Тут возможно два случая. Если количество неизвестных превышает количество уравнений, то система будет иметь бесконечное множестворешений.
При этом часть неизвестных можно выразить через остальные. Для этогонужно использовать оператор solve (см. пример 8.24). Если количество уравнений превышает количество неизвестных, то, как правило, часть из них является избыточными.Однако просто отбросить часть уравнений нельзя, так как среди оставшихся уравнений некоторые могут являться просто линейными комбинациями друг друга. Выкидываяизбыточные уравнения, нужно обязательно проверять остаточную систему на линейную независимость, например, определяя ранг матрицы коэффициентов или вычисляяопределитель.