Кирьянов Д. - MathCad 11 (1077323), страница 36
Текст из файла (страница 36)
Символьное решение уравнения sin(а-х)«Оroot (sin (а-х)>г<г, х ) —> ОЗабудем на время, что аналитическое решение известно, и подойдем куравнению (1) как к любой другой новой задаче. Решим его методом секущих, применяя для этого встроенную функцию root. Самый простой, нодалеко не лучший способ иллюстрируется листингом 8.20.
Корень уравне-Глава 8. Алгебраические уравнения и оптимизация211ния (1) требуется определить численно для каждого значения параметра а.Для этого первые две строки листинга создают ранжированную переменнуюi, с помощью которой определяется вектор значений параметра a i s для которых будут производиться расчеты. Его элементы пробегают значения ото.ою до 0.025 с шагом 0.0005 (эти числа взяты ради примера, Вы можетепоэкспериментировать с другими значениями). Последняя строка листингаприсваивает элементам еще одного вектора у вычисленные с помощьюфункции root значения корней уравнения (1) для каждого aL.
Но, для тогочтобы функция root заработала, необходимо предварительно задать начальное приближение к решению, что сделано в третьей строке листинга. Ключевой момент метода, примененного в листинге 8.20, заключается в том, чтоодно и то же начальное значение х=зоо использовано для всех aL.6 О ОРис. 8 . 1 0 . Решение уравнения s i n ( a x ) =0 {см. листинг 8.21)Листинг 8.20. Один из способов численного решенияуравнения s i n ( а х ) =0i := 0 .. 30a i := 0.01 + i •0.0005х := 300Yi+l :- r o o t ( s i n ( a i • xl , xtРезультат расчетов yL показан на том же рис. 8.10 точками, причем самаялевая точка отвечает начальному значению у0=зоо. Обратите внимание,что, по мере увеличения а, кривая корней уравнения сначала идет по семейству решений у=я/а, а потом (в районе а=о.17) "перепрыгивает" на212Часть III.
Численные методыдругое семейство у=2-л/а. С вычислительной точки зрения такая ситуациячаще всего крайне неблагоприятна, поскольку хотелось бы отыскать непрерывное семейство решений. Скачки зависимости у(а) могут вводитьпользователя в заблуждение, вовсе скрывая от него существование семейства решений при а>о . п.Почему же происходят эти скачки с одного семейства решений на другое?Конечно, причина кроется в выборе начального значения для вычислениякаждого из корней. Линия начальных значений у-зоо обозначена нарис. 8.Ю в виде пунктирной горизонт&тьной прямой. Для a o =o.oi, и вообщедля нескольких первых aL начальное значение у=зоо находится ближе всегок нижнему семейству решений у=л/а.
Поэтому неудивительно, что численный метод находит именно эти корни. В правой части графика на рис. 8.10к линии начальных значений ближе второе семейство решений у=2-п/а, кним-то и приводит численный метод.Приведенные соображения диктуют очень простой рецепт избавления отскачков и нахождения одного из семейств непрерывных решений. Дляэтого требуется при поиске каждого u + ij-го корня взять начальное значение, по возможности близкое к отыскиваемому семейству.
Неплохимвариантом будет выбор приближения в виде предыдущего 1-го корня, который был найден для прошлого значения параметра aL. Возможный вариант воплощения этого метода, называемого продолжением по параметру,приведен в листинге 8.21. В нем функция root применена внутри функции пользователя f(xo,a), определенной в самом начале листинга с помощью средств программирования. Назначение функции f{xo,a) заключается в том, что она выдает значение корня для заданного значенияпараметра а и начального приближения к решению хо. В остальном,смысл листинга 8.21 повторяет предыдущий, за исключением того, что задается явно (в его предпоследней строке) только начальное значениеуа = зоо только для поиска ух.
Для всех последующих точек, как следует изпоследней строки листинга, взято начальное значение, равное предыдущему корню yL.Листинг 8.21. Решение уравнения sin(a-x)=o методом продолженияпо параметруf (хО , а) :=r o o t ( s i n ( а • х) , х )i := 0 ..30a i := 0 . 0 1 + i - 0 . 0 0 0 5у 0 := 300Yi + l := f ( y i , a i )Глава 8. Алгебраические уравнения и оптимизация213Результат вычислений, приведенный на рис.
8.11, разительно отличается отпредыдущего. Как видно, столь малое изменение идеологии применениячисленного метода привело к определению непрерывного семейства корней.Отметим, что получить результат рис. 8.10 (без продолжения по параметру)в терминах введенной нами функции f (xO,a) можно, изменив ее первыйаргумент в последней строке листинга 8.21 на константу: f (зоо,а ± ).ООО600Рис. 8 . 1 1 . Решение уравнения s i n ( a - x ) -0 методом продолжениядля у о = ЗОО (листинг 8.21)Чтобы найти другое семейство решений, нужно взять соответствующее первое начальное значение у0, например у0=еоо. Результат действия листинга 8.21 для этого случая показан на рис. 8.12.
Если взять у0 ближе к третьему семейству решений (например yD=900), то оно и будет найденовычислительным процессором Mathcad, и т. д.С помощью метода продолжения можно решать и соответствующие задачиоптимизации, зависящие от параметра. Идеология в этом случае остаетсяточно такой же, но вместо функций решения нелинейных уравнений rootили Find вам следует применить одну из функций поиска экстремума Mine r r , Maximize ИЛИ Minimize.Мы привели основную идею и один из возможных способов реализацииметода продолжения по параметру. Безусловно, Вы можете предложитьиные как математические, так и программистские решения этой проблемы. В частности, для выбора очередного начального приближения к корню можно использовать результат экстраполяции уже найденной зависи-Часть ill. Численные методы214мости х{а), придумать более сложные алгоритмы для ветвящихся семействрешений и т.
д.1Vооояа,1800-^Ч600а.3 л_J_ХЮРГУ^200———001•110.0150.02—-——0 . 02 SРис. 8 . 1 2 . Решение уравнения s i n (а-х) -0 методом продолженияпо параметру для у 0 = 6 0 0ГЛАВА 9Матричные вычисленияМатричные вычисления можно условно разделить на несколько типов.
Первый тип — это простейшие действия, которые реализованы операторами(см. разд. 9.1) и несколькими функциями, предназначенными для создания,объединения, сортировки, получения основных свойств матриц и т. п. (см.разд. 9.2). Второй тип — это более сложные функции, которые реализуюталгоритмы вычислительной линейной алгебры, такие, как решение системлинейных уравнений (см.
разд. 9.3), вычисление собственных векторов исобственных значений (см. разд. 9.4), различные матричные разложения(см. разд. 9.5).9.1. Простейшие операции с матрицамиПростейшие операции матричной алгебры реализованы в Mathcad в видеоператоров. Написание операторов по смыслу максимально приближенок их математическому действию. Каждый оператор выражается соответствующим символом. Рассмотрим матричные и векторные операции Mathcad 11.Векторы являются частным случаем матриц размерности NXI, поэтому дляних справедливы все те операции, что и для матриц, если ограничения особо не оговорены (например некоторые операции применимы только к квадратным матрицам NXN). Какие-то действия допустимы только для векторов(например скалярное произведение), а какие-то, несмотря на одинаковоенаписание, по-разному действуют на векторы и матрицы.Внимание!Непосредственное проведение векторных операций над строками, т.
е. матрицами I X N , невозможно; для того чтобы превратить строку в вектор, ее нужнопредварительно транспонировать.8 Зак. 984216Часть III. Численные методы9.1.1.ТранспонированиеТранспортированием называют операцию, переводящую матрицу размерности MXN в матрицу размерности NXM, делая столбцы исходной матрицы строками, а строки — столбцами.
Пример приведен в листинге 9.1. Ввод символа транспонирования (transpose) осуществляется с помощью панелиинструментов Matrix (Матрица) или нажатием клавиш <Ctrl>+<l>. He забывайте, что для вставки символа транспонирования матрица должна находиться между линиями ввода.Matrix: fii-i v ж- *\Рис. 9 . 1 . Панель инструментов MatrixЛистинг 9.1. Транспонирование векторов и матриц3)= ( 131 245625369.1.2. СложениеВ Mathcad можно как складывать матрицы, так и вычитать их друг из друга.Для этих операторов применяются символы <+> или <—>, соответственно.Матрицы должны иметь одинаковую размерность, иначе будет выдано сообщение об ошибке. Каждый элемент суммы двух матриц равен сумме соответствующих элементов матриц-слагаемых (листинг 9.2).Листинг 9.2.
Сложение и вычитание матрицА:=31 24А+В =52В :=6231-100-3-4Глава 9. Матричные вычисленияА-В =0235810217Кроме сложения матриц, Mathcad поддерживает операцию сложения матрицы со скаляром (листинг 9.3). Каждый элемент результирующей матрицыравен сумме соответствующего элемента исходной матрицы и скалярнойвеличины.Листинг 9.3. Сложение матрицы со скаляром31 2А :=456х := 1' 2 3 4А+х =506' 34А-х =71 25Результат смены знака матрицы эквивалентен смене знака всех ее элементов. Для того чтобы изменить знак матрицы, достаточно ввести перед нейзнак минуса, как перед обычным числом (листинг 9.4).i Листинг 9.4.