В статье рассмотрены основы программирования в mathcad версии 15 и более старших. Приведены полезные примеры для инженерных расчетов
Видео:Mathcad-09. Пример: уравненияСкачать
Цикл «FOR» в mathcad 15
Для примера рассмотрим пример заполнения матрицы-вектора в автоматическом режиме. Предположим, что нам нужно заполнить матрицу случайными числами. Размер матрицы 10 элементов. Заполнение в ручную такой матрицы безусловно отнимет массу времени
В свободном поле mathcad введите имя вашей будущей матрицы M. Поставте знак присвоить «:=» и затем на английской раскладке нажмите комбинацию Alt (правый) + «]». В место привычного маркера возникнет вертикальная черная черта с двумя маркерами. Удерживая клавишу Alt введите еще несколько раз символ «]» так, чтобы увеличить число свободных маркеров. Можно также воспользоваться кнопкой «Add Line» на панели Programming. В этих маркерах записываются строки кода
Рис. 1. Подготовка к написанию кода
Поместите курсор в первый маркер и на панели Programming нажмите кнопку с надписью «for». Вы увидите заготовку для формирования цикла FOR с маркером для ввода «тела цикла», который несколько отстоит от основных маркеров
Рис. 2. Запись безусловного цикла FOR
Теперь нужно ввести переменную-счетчик (пусть это будет «i»), которая будет менять свое значение от 1 до 10. Диапазон от 1 до 10 задается с помощью ранжированной переменной, которую можно найти на панели Matrix
Рис. 3. Настройка параметров цикла for в mathcad 15
Цикл for в этом примере будет перебирать значения счетчика i от 1 до 10 c шагом 1. При каждом значении i элементу матрицы с соответсвующим индексом будет присваиваться случайное число с помощью стандартной функции rnd(m). Функция rnd присваивает переменной значение в диапазоне от 0 до «m»
Операция присваивания осуществляется при помощи операции Local difinition с панели Programming. Опрерация присваивания отображена в виде стрелочки «←». Чтобы присвоить какое либо значение элементу матрицы нужно указать соответсвующий индекс матрицы. Это делается с помощью кнопки Subscript на панели Matrix.
Операция присваиваивания должна осуществляться в «теле цикла». То есть, все действия, которые должны повторяться по мере работы счетчика циклы, должны находиться в соответсвующих маркерах. После завершения работы цикла в последний маркер тела программы нужно ввести имя матрицы, над заполнением которой мы работали. В нашем случае это M. См. рисунок 4
Рис. 4. Синтаксис программы по заполнению матрицы-вектора случайными числами в mathcad 15
Теперь можно посмотреть на результат. Введем имя матрицы M и поставим знак равно «=». Мы сразу же увидим содержимое матрицы-вектора, который был заполнен с помощью нашей программы. Теперь меняя количество итераций в цикле for мы можем изменять размерность матрицы-вектора. Можн также поменять и закон заполнения матрицы-вектора.
Рис. 5. Результат работы программы в mathcad 15
Можно изменить программу таким образом, чтобы заполнить квадратную матрицу. Для этого нам нужно ввести еще один счетчик и еще один цикл for с индексом j. Таким образом один цикл будет выполняться внутри другого, формируя столбцы и строки матрицы
Рис. 6. Программа для заполнения квадратной матрицы в mathcad 15
Программы в mathcad могут использовать значения переменных, находящихся вне тела программы. Например, на рисунке ниже видно, как можно конечные значения счетчиков цикла связать со значениями переменных из вне
Рис. 7. Программа для заполнения квадратной матрицы в mathcad 15
Видео:MathCAD Решение уравнений с помощью функции root 1 вариантСкачать
Условные операторы «IF» в mathcad 15
Чтобы посмотреть, как работает условный оператор «if» в mathcad 15 рассмотрим простой пример. Заполним квадратную матрицу G размером 5 х 5 элементов случайными числами и затем обнулим все элементы, которые меньше 10
На рисунке 8 приведен уже знакомый код заполнения матрицы случайными числами
Рис. 8. Программа для заполнения квадратной матрицы случайными числами
Для обнуления элементов, значение которых меньше 10, запишем второй участок кода с использованием условного оператора «If». Для проверки каждого элемента на выполнение этого условия нам опять потребуется два вложенных цикла «for» с счетчиками i и j. См. рис. 9. Обратите внимание, в теле второго цикла оставлено два свободных маркера
Рис. 9. Заготовка для применения условного оператора
Результат работы программы для удобства будет записываться в матрицу P. Поместите курсор в первый свободный маркер и нажмите на кнопку с надписью «if» на панели Programming. Вы увидите заготовку для записи условного оператора
Рис. 10. Заготовка для условного оператора
В этой заготовке выполним обнуление элемента матрицы G если значение этого элемента менее 10. Присвоение элементу матрицы значение нуля осуществляется символом «←» . Буквально логика данной операции следующая: «присвоить элементу матрицы P с текущим индексом i и j значение 0 если елемент матрицы G с тем же индексом меньше 10»
Рис. 11. Ввод условного оператора в mathcad 15
Теперь запишем второе условие, по которому все элементы матрицы G, которые больше либо равны 10 попадают в матрицу P без изменеий на те же «мееста». Буквально логика данной операции следующая: «присвоить элементу матрицы P с текущим индексом i и j значение елемента матрицы G с тем же индексом если значение элемента больше либо равно 10». Сразу же после текста программы можно вывести результат. См. рис. 12.
Рис. 12. Ввод условного оператора в mathcad 15
Теперь можно наглядно увидеть, как изменилась матрица после ее обработки условными операторами
Рис. 13. Результат работы условного оператора
Видео:19 Циклы в Mathcad while, for, построить таблицу с цифрами в Маткаде, примеры с предусловиемСкачать
Цикл «WHILE» в mathcad 15
Цикл While является условным циклом. То есть повторение его тела осуществляется до тех пор пока верно условие.
Рассмотрим простой пример заполнения матрицы-столбца с использованием цикла while. В качестве условия работы цикла будем проверять верно ли равенство m
Рис. 14. Цикл WHILE в mathcad
В теле цикла могут находиться абсолютно любые команды и операторы: арифметические вычисления, открытие, анализ, обработка и запись данных в файл, запуск скриптов и приложений и т.д. Одним словом программирование это очень полезный и весьма универсальный инструмент, который позволяет реализовать любую идею в инженерной деятельности
Обратите внимание на то, что если в процессе выполнения программы условие запуска цикла «while» всегда оказывается верным, то цикл не завершится. Произойдет так называемое «зацикливание» программы и придется прерывать процесс счета вручную и искать ошибку
Donec eget ex magna. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque venenatis dolor imperdiet dolor mattis sagittis. Praesent rutrum sem diam, vitae egestas enim auctor sit amet. Pellentesque leo mauris, consectetur id ipsum sit amet, fergiat. Pellentesque in mi eu massa lacinia malesuada et a elit. Donec urna ex, lacinia in purus ac, pretium pulvinar mauris. Curabitur sapien risus, commodo eget turpis at, elementum convallis elit. Pellentesque enim turpis, hendrerit tristique.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis dapibus rutrum facilisis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Etiam tristique libero eu nibh porttitor fermentum. Nullam venenatis erat id vehicula viverra. Nunc ultrices eros ut ultricies condimentum. Mauris risus lacus, blandit sit amet venenatis non, bibendum vitae dolor. Nunc lorem mauris, fringilla in aliquam at, euismod in lectus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. In non lorem sit amet elit placerat maximus. Pellentesque aliquam maximus risus, vel venenatis mauris vehicula hendrerit.
Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque venenatis dolor imperdiet dolor mattis sagittis. Praesent rutrum sem diam, vitae egestas enim auctor sit amet. Pellentesque leo mauris, consectetur id ipsum sit amet, fersapien risus, commodo eget turpis at, elementum convallis elit. Pellentesque enim turpis, hendrerit tristique lorem ipsum dolor.
Видео:MathCAD Решение системы уравненийСкачать
Маткад решить уравнение в цикле
Mathcad дает возможность решать также и системы уравнений. Максимальное число уравнений и переменных равно пятидесяти. В первой части этого раздела описаны процедуры решения систем уравнений. В заключительной части приведены примеры и проведено обсуждение некоторых часто встречающихся ошибок. Результатом решения системы будет численное значение искомого корня. Для символьного решения уравнений необходимо использовать блоки символьного решения уравнений. При символьном решении уравнений искомый корень выражается через другие переменные и константы.
Для решения системы уравнений выполните следующее:
- Задайте начальные приближения для всех неизвестных, входящих в систему уравнений. Mathcad решает уравнения при помощи итерационных методов. На основе начального приближения строится последовательность, сходящаяся к искомому решению.
- Напечатайте ключевое слово Given. Оно указывает Mathcad, что далее следует система уравнений. При печати слова Given можно использовать любой шрифт, прописные и строчные буквы. Убедитесь, что при этом Вы не находитесь в текстовой области или параграфе.
- Введите уравнения и неравенства в любом порядке ниже ключевого слова Given. Удостоверьтесь, что между левыми и правыми частями уравнений стоит символ =. Используйте [Ctrl]= для печати символа =. Между левыми и правыми частями неравенств может стоять любой из символов , , и .
- Введите любое выражение, которое включает функцию Find. При печати слова Find можно использовать шрифт любого размера, произвольный стиль, прописные и строчные буквы.
Find(z1, z2, z3, . . . ) | Возвращает решение системы уравнений. Число аргументов должно быть равно числу неизвестных. |
Функция Find возвращает найденное решение следующим образом:
- Если функция Find имеет только один аргумент, то она возвращает решение уравнения, расположенного между ключевым словом Given и функцией Find.
- Если функция Find имеет более одного аргумента, то она возвращает ответ в виде вектора. Например, Find(z1, z2) возвращает вектор, содержащий значения z1 и z2 , являющиеся решением системы уравнений.
Ключевое слово Given, уравнения и неравенства, которые следуют за ним, и какое-либо выражение, содержащее функцию Find, называются блоком решения уравнений.
На Рисунке 5 показан рабочий документ, который использует блок решения уравнений для решения одного уравнения с одним неизвестным. Так как имеется только одно уравнение, то только одно уравнение появляется между ключевым словом Given и формулой, включающей функцию Find. Так как уравнение имеет одно неизвестное, то функция Find имеет только один аргумент. Для решения одного уравнения с одним неизвестным можно также использовать функцию root, как показано ниже:
Рисунок 5: Блок решения уравнений для одного уравнения с одним неизвестным.
Между ключевым словом Given и функцией Find в блоке решения уравнений могут появляться выражения строго определенного типа. Ниже приведен список всех выражений, которые могут быть использованы в блоке решения уравнений. Использование других выражений не допускается. Эти выражения часто называются ограничениями. В таблице, приведенной ниже, через x и y обозначены вещественнозначные скалярные выражения, а через z и w обозначены любые скалярные выражения.
Условие | Как ввести | Описание |
w = z | [Ctrl] = | Булево равенство возвращает 1, если операнды равны; иначе 0 |
x > y | > | Больше чем. |
x |
Следующие выражения недопустимы внутри блока решения уравнений:
- Ограничения со знаком .
- Дискретный аргумент или выражения, содержащие дискретный аргумент в любой форме.
- Неравенства вида a -15 .
Причиной появления этого сообщения об ошибке может быть следующее:
- Поставленная задача может не иметь решения.
- Для уравнения, которое не имеет вещественных решений, в качестве начального приближения взято вещественное число. Если решение задачи комплексное, то оно не будет найдено, если только в качестве начального приближения не взято также комплексное число. На Рисунке 11 приведен соответствующий пример.
- В процессе поиска решения последовательность приближений попала в точку локального минимума невязки. Метод поиска решения, который используется в Mathcad, не позволяет в этом случае построить следующее приближение, которое бы уменьшало невязку. Для поиска искомого решения пробуйте использовать различные начальные приближения или добавьте ограничения на переменные в виде неравенств, чтобы обойти точку локального минимума.
- В процессе поиска решения получена точка, которая не является точкой локального минимума, но из которой метод минимизации не может определить дальнейшее направление движения. Метод преодоления этой проблемы — такой же, как для точки локального минимума: измените начальное приближение или добавьте ограничения в виде неравенств, чтобы миновать нежелательную точку остановки.
- Возможно, поставленная задача не может быть решена с заданной точностью. Если значение встроенной переменной TOL слишком мало, то Mathcad может достигнуть точки, находящейся достаточно близко к решению задачи, но уравнения и ограничения при этом не будут выполнены с точностью, задаваемой переменной TOL. Попробуйте увеличить значение TOL где-нибудь выше блока решения уравнений.
Что делать, когда имеется слишком мало ограничений
Если количество ограничений меньше, чем количество переменных, Mathcad вообще не может выполнить блок решения уравнений. Mathcad помечает в этом случае функцию Find сообщением об ошибке “слишком мало ограничений”.
Задача, аналогичная той, которая приведена на Рисунке 12, называется недоопределенной. Ограничений в ней меньше, чем переменных. Поэтому ограничения не содержат достаточной информации для поиска решения. Поскольку функция Find имеет пять аргументов, Mathcad определяет, что требуется решить два уравнения с пятью неизвестными. Вообще говоря, такая задача обычно имеет бесконечное число решений.
При использовании блока решения уравнений в Mathcad необходимо задать количество уравнений по крайней мере не меньшее, чем число искомых неизвестных. Если зафиксировать значения некоторых переменных, удастся решить уравнения относительно оставшихся переменных. На Рисунке 13 показано, как, зафиксировав часть переменных, решить недоопределенную задачу из Рисунка 12. Поскольку функция Find содержит только два аргумента, z и w, Mathcad определяет переменные x, y и v как имеющие фиксированные значения 10, 50 и 0 соответственно. Блок решения уравнений становится в этом случае корректно определенным, потому что теперь имеются только две неизвестных, z и w, и два уравнения.
Рисунок 12: Функция Find имеет пять аргументов, поэтому Mathcad определяет, что требуется решить два уравнения с пятью неизвестными.
Рисунок 13: Проблема может быть решена, если уменьшить количество аргументов функции Find.
Исправляем ошибки: Нашли опечатку? Выделите ее мышкой и нажмите Ctrl+Enter
Видео:Решение систем линейных уравнений в MathCAD 14 (31/34)Скачать
Маткад решить уравнение в цикле
РЕШЕНИЕ УРАВНЕНИЙ И СИСТЕМ УРАВНЕНИЙ
4 Решение уравнений и систем средствами Mathcad
Система Mathcad обладает широкими возможностями численного решения уравнений и систем уравнений.
Функция root, блоки Given…Find, Given…Minerr
В ходе численного решения обычно выделяют два этапа:
- отделение корней – определение интервала нахождения каждого корня или определение приблизительного значения корня. В системе Mathcad наиболее наглядным будет отделение корней уравнения графическим способом;
- уточнение корней – нахождение численного значения корня с указанной точностью.
Точность нахождения корня устанавливается с помощью системной переменной TOL (Convergence Tolerance – Допуск сходимости), которая по умолчанию равна 10 -3 . Чем меньше значение TOL, тем точнее, вообще говоря, находится корень уравнения. Однако оптимальным является TOL = 10 -5 . Переопределить значение TOL можно в окне математических свойств документа Math Options на вкладке Build-In Variables (Встроенные переменные) или присваиванием, например, TOL:=0.0001.
Для решения одного уравнения с одной неизвестной предназначена встроенная функция root, которая в общем виде задается
root(f(x), x, [a, b])
и возвращает значение переменной x, при котором функция f(x) обращается в ноль. Аргументы функции root:
- f(x) – функция левой части уравнения f(x) = 0;
- x – переменная, относительно которой требуется решить уравнение;
- a, b (необязательные) – действительные числа, такие что a -1 слева: A -1 Ax=A -1 b. Учитывая, что A -1 A, вектор-столбец решений системы можно искать в виде
Этот прием используется в Mathcad так:
- задается матрица коэффициентов при неизвестных системы A;
- задается столбец свободных членов b;
- вводится формула для нахождения решения системы X:=A -1 b;
- выводится вектор решений системы X=.
Кроме того, пакет Mathcad имеет встроенную функцию
lsolve(A, b),
возвращающую вектор-столбец решений системы линейных алгебраических уравнений. Аргументами функции lsolve являются матрица коэффициентов при неизвестных системы и столбец свободных членов. Порядок решения аналогичен рассмотренному, но вместо формулы X:=A -1 b используется X:=lsolve(A, b).
Реализовать широко известный метод Гаусса решения систем линейных уравнений позволяет встроенная функция rref(M), возвращающая ступенчатый вид матрицы M. Если в качестве аргумента взять расширенную матрицу системы, то в результате применения rref получится матрица, на диагонали которой – единицы, а последний столбец представляет собой столбец решений системы.
Решение системы линейных уравнений можно осуществить с помощью блоков Given…Find, Given…Minerr. При этом неизвестным системы задается произвольное начальное приближение, а проверка необязательна.
Порядок выполнения лабораторной работы
- Загрузить Mathcad Start / All Programs / Mathsoft Apps / Mathcad (Пуск / Все программы / Mathsoft Apps / Mathcad).
- Сохранить в личной папке на диске z: новый документ с именем ФИО1, лучше использовать латинские буквы. Производить сохранение регулярно в процессе работы (Ctrl + S).
- Вставить текстовую область Insert / Text Region (Вставка / Область текста) и ввести в поле документа текст:
Лабораторная работа № 4
Решение уравнений и систем в Mathcad.
- В новой текстовой области ввести фамилию, имя, отчество, учебный шифр и номер варианта.
- Выполнить задание 1.
Задание 1. Решить уравнение .
Решение.
Решение данного уравнения будем проводить в два этапа: отделение корней уравнения графически, уточнение корней уравнения.
Определим функцию f(x), равную левой части данного уравнения, когда правая равна нулю:
Зададим ранжированную переменную x на некотором диапазоне с мелким шагом, например:
Вставим в документ графическую область. Для этого выберем дважды пиктограмму с изображением графика сначала на панели Math (Математика), затем на палитре графиков Graph или выполним из главного меню последовательность команд Insert / Graph / X-Y Plot (Вставка / График / X-Y Зависимость).
Снизу по оси абсцисс наберем x, а сбоку по оси ординат введем f(x).
Для появления графика щелкнем левой клавишей мыши вне графической области.
Отформатируем график функции f(x). Для этого щелкнем правой клавишей мыши в области графика и выберем в контекстном меню команду Format (Формат). Установим пересечение осей графика (Crossed – Только оси), добавим вспомогательные линии по координатным осям (Grid Lines – Вспомогательные линии). Отменим при этом автосетку (Autogrid – Автосетка) и установим количество линий сетки, равное 10.
Для подтверждения внесенных изменений нажмем последовательно кнопки Apply (Применить) и ОК.
После указанных преобразований график функции f(x) будет выглядеть следующим образом:
Из графика функции f(x) видно, что уравнение имеет три корня, которые приблизительно равны: x1 ≈ -1; x2 ≈ 1; x3 ≈ 2,5.
Этап отделения корней завершен.
Уточним теперь корни уравнения с помощью функции root.
Присвоим начальное приближение переменной x и укажем точность поиска корня:
Уточним заданное приближение к значению корня с помощью функции root:
Выполним проверку, подтверждающую, что первый корень найден с заявленной точностью:
Начальное приближение можно не задавать при использовании в качестве аргументов root границ отрезка нахождения корня, например, второй корень можно уточнить:
Задание 2. Решить уравнение .
Решение.
Напечатаем левую часть уравнения, не приравнивая выражение к 0, и выделим синим курсором переменную x:
Выберем из главного меню Symbolics / Polynomial Coefficients (Символика / Коэффициенты полинома). Появившийся вектор коэффициентов полинома выделим целиком синим курсором и вырежем в буфер обмена, используя кнопку Вырезать на панели инструментов Formatting (Форматирование) или комбинацию клавиш Ctrl + X.
Напечатаем v := и вставим вектор из буфера обмена, используя кнопку Вставить на панели инструментов или комбинацию клавиш Ctrl + V.
Для получения результата напечатаем polyroots(v) =:
Задание 3. Решить систему линейных уравнений Сделать проверку.
Решение.
1-й способ. Использование блока Given … Find.
Зададим всем неизвестным, входящим в систему уравнений, произвольные начальные приближения, например:
Напечатаем слово Given. Установим визир ниже и наберем уравнения системы, каждое в своем блоке. Используем при этом логический знак равенства (Ctrl + =).
После ввода уравнений системы напечатаем X := Find(x, y, z) и получим решение системы в виде вектора, состоящего из трех элементов:
Сделаем проверку, подставив полученные значения неизвестных в уравнения системы, например, следующим образом
После набора знака «=» в каждой строке должен быть получен результат, равный или приблизительно равный правой части системы. В данном примере системная переменная ORIGIN = 1.
2-й способ. Использование блока Given…Minerr.
Порядок решения системы этим способом аналогичен порядку использования блока Given … Find и представлен ниже вместе с проверкой:
3-й способ. Решение системы линейных уравнений матричным способом.
Создадим матрицу А, состоящую из коэффициентов при неизвестных системы. Для этого напечатаем A := , вызовем окно создания массивов (Ctrl + M). Число строк (Rows) и столбцов (Columns) матрицы данной системы равно 3. Заполним пустые места шаблона матрицы коэффициентами при неизвестных системы, как показано ниже:
Зададим вектор b свободных членов системы. Сначала напечатаем b :=, затем вставим шаблон матрицы(Ctrl + M), где количество строк (Rows) равно 3, а количество столбцов (Columns) равно 1. Заполним его:
Решим систему матричным способом по формуле
Решим систему с помощью функции lsolve:
Для проверки правильности решения системы, полученного матричным способом, достаточно вычислить произведение A·X, которое должно совпасть с вектором-столбцом свободных членов b:
🎬 Видео
Решение СЛАУ в пакете MathCadСкачать
Mathcad Prime. Урок 5 - Способы решения уравненийСкачать
Пример решения уравнения в MathCAD 14 (33/34)Скачать
Циклы в MathCadСкачать
Ключевое слово solve в MathCAD 14 (26/34)Скачать
MathCAD Решение системы линейных уравнений матричным методомСкачать
8. MathCad. Решение систем линейных алгебраических уравненийСкачать
Средство для решения систем уравнений в MathCAD 14 (29/34)Скачать
Mathcad Prime (часть 2)Скачать
Приближенное решение систем уравнений в MathCAD 14 (30/34)Скачать
MathCAD Решение уравнений с помощью функции root 2 вариантСкачать
Программирование в Mathcad 13. Написание простейших циклов и условий. Урок 24Скачать