Как поставить штрих в маткаде

Как поставить штрих в маткаде

БлогNot. MathCAD: решаем основные типы дифференциальных уравнений встроенными функциями

MathCAD: решаем основные типы дифференциальных уравнений встроенными функциями

Решать дифференциальные уравнения (далее ДУ) в MathCAD, составляя собственные подпрограммы-функции не всегда удобно и экономично по времени, хотя и полезно на этапе обучения. Опишем в этой заметке способы решения основных типов ДУ с помощью стандартных средств пакета, ограничимся простыми примерами.

1. ДУ с разделяющимися переменными. Общая постановка задачи: y’=f(x,y)=g(x)*h(y) , y(x0)=y0 . То есть, f(x,y) допускает представление в виде произведения функций от x и от y .

Для решения уравнения достаточно задать его правую часть как пользовательскую функцию MathCAD, определить интервал поиска решения [x0,x1] , начальное условие y0 и применить стандартную функцию Odesolve . Покажем этот процесс на примере уравнения y’=2x-y+x 2 , x∈[0,2] , y(0)=0 с известным решением y(x)=x 2 :

Знак "равно" в записи уравнений, конечно же, жирный (панель Boolean или сочетание клавиш Ctrl+=).

Функция Odesolve вернула именно функцию y , её нужно смотреть от аргумента, например, y(1)= .

И ещё 2 особенности:

Фича MathCAD — у ряда функций решения ДУ есть "версии", которые пишутся и с Большой, и с маленькой буквы. Функции, имена которых начинаются с маленькой буквы, используются в тех случаях, когда важным является решение задачи в конечной точке интервала.

Фича MathCAD — в блоке Given-Odesolve штрих ` является не просто знаком, а оператором взятия производной. И это не штрих ‘ с клавиши русской "Э". это обратный штрих ` с клавиши "Ё", слева от "1".

Зная точное решение, графически сравним с ним найденное решение. Как видно на графике, MathCAD справился с задачей отлично.

2. Неоднородное ДУ первого порядка. В общем виде такое уравнение можно записать как y’=a(x)*y+b(x) . Оно решается аналитически по формуле, которую можно найти в любой книге по решению обыкновенных ДУ:

Здесь С – константа интегрирования. Остаётся применить формулу к конкретному уравнению (возьмём для примера задачу y’+2xy=x*e -x 2 sin(x) , y(0)=1 ) и оценить её символьно:

Здесь мы получаем решение в общем виде. Нижний оператор оценён символьно (см. панель "Символика"), а аргумент t используется, так как x в документе "уже занят" (для корректной работы символьной оценки переменные не должны быть определены заранее).

После подстановки начального условия получим частное решение y(t,Y) , а для проверки решеня будет достаточно подставить полученную функцию в исходное уравнение и упростить его символьной функцией simplify . Полученный результат в нашем случае совпал с заданной в условии правой частью. Также для y(x,Y) , как и для любой функции, можно построить график на нужном интервале изменения x.

3. Неоднородное ДУ второго порядка. В общем виде имеем уравнение y» + p(x)*y’ + g(x)*y = f(x) плюс набор краевых условий, количество которых соответствует порядку задачи, например y(0)=. y'(0)=. или y(0)=. y(1)=.

Возьмём уравнение, которое мы мучили вот здесь, решим его стандартными средствами, сравним с известным точным решением и построим график:

Здесь при вызове Odesolve второй параметр, равный единице — это правая граница интервала, третий параметр, равный 10, задаёт количество интервалов. Точное решение u(t) взяли по ссылке. Как видим, даже на 10 интервалах всё очень хорошо совпадает.

Читайте также:  Выйдет ли fifa 19 на xbox 360

4. Система ДУ. Подход к решению системы ДУ покажем на примере. Пусть задана система дифференциальных уравнений

x’ = a*x — y — (x 2 + y 2 )*x,
y’ = a*y + x — (x 2 + y 2 )*y,
x(0)=0, y(0)=1, a=-0.2

Чтобы решить эту систему стандартной функцией rkfixed , нужно задать для неё вектор начальных значений x = (x, y) и вектор правых частей D(t,x) .

После этого задача решится вызовом rkfixed , второй и третий параметры ( 0, 20 ) задают интервал по времени t , на котором ищется решение, четвёртый параметр 100 означает количество точек на интервале.

Функция вернёт матрицу решений системы, в которой количество строк соответствует количеству точек на интервале, а количество столбцов — количеству уравнений в системе.

Для построения графика достаточно отобразить зависимость столбцов Zi,1 , Zi,2 от Zi,0 , i=0..99 :

Скачать расчёты из этой статьи в архиве .zip с документом .xmcd, Mathcad 15 (46 Кб)

10.11.2015, 17:16; рейтинг: 24002

В пакете Mathcad существует богатый набор средств для решения различных математических задач, встроено огромное количество функций из различных разделов математики. Однако написать функции для всех практических задач, которые могут стоять перед пользователями пакета, невозможно. Для расширения возможностей разработчики пакета встроили достаточно простой и оригинальный язык программирования. В любом месте документа Mathcad можно вставить код программы на встроенном языке программирования. Это можно сделать при помощи «горячих клавиш» или команд из панели инструментов Programming (Программирование).

Для визуализации панели програм-

мирования необходимо нажать на кнопку из панели математических инструментов или по-

дать команду View Toolbars Programming . На данной панели имеется десять команд. Щелчок по одной из этих команд создает в текущей

позиции заготовку для соответствующей программной конструкции. При частом использовании команд программирования удобнее запомнить комбинации «горячих клавиш» и команды генерировать при помощи клавиатуры.

Примечание. При составлении программ ключевые слова команд вручную писать нельзя. Заготовку команды можно получить только при помощи щелчка мыши по соответствующей кнопке или при помощи комбинаций клавиш.

Приведем значение «горячих клавиш», использующих при программировании на Mathcadе.

Предполагается, что читатель уже знаком с основными идеями программирования, изучив один из стандартных языков про-

граммирования: QBasic, Visual Basic, Fortran, Pascal, C++, Java, Ruby или любой другой язык программирования. Данный практикум адресован пользователям, решающим инженерные и научные задачи, для которых программирование не является основным видом деятельности. Для таких пользователей языки программирования C++ и Java противопоказаны, так как ориентированы на профессиональных специалистов. Инженерам, использующим программирование не ежедневно, для решения большинства задач достаточно и одиннадцати команд из панели программирования Mathcad.

Сразу же отметим недостатки программирования в среде Mathcad. Одним из главных недостатков является неразвитость отладчика программ. Ошибки, возникающие при выполнении программ, отображаются, но подробной информации о типе ошибки, значении локальных и глобальных переменных в момент останова программы оперативно получить нельзя. Отлаживать программы уже средней сложности в Mathcad не доставляет особой радости. Поэтому сложные инженерные, научные и экономические задачи удобнее и быстрее, с точки зрения автора, выполнять в рамках визуального алгоритмического языка Visual Basic [3] или последних версий языка Fortran.

Читайте также:  Как сохранить макрос как надстройку

Рассмотрим все команды из панели программирования Math-

1. Add Line – добавить строку в текущую позицию программы. При вводе данной команды появляется или расширяется на одну строку вертикальная линия, объединяющая отдельные операторы в блок с одним входом и одним выходом, который выполняется как один оператор.

Позиция, куда вставится строка, определяется положением курсора. Чтоб вставить новую строку в середину программы, нужно выделить (пробелами) строку перед позицией, куда будет вставлена пустая строка. Удалить лишнюю строку можно с помощью кнопки backspace на клавиатуре.

Для того чтобы начать ввод подпрограммы, необходимо набрать имя программы и в скобках через запятую перечислить формальные параметры подпрограммы, ввести нужное количество раз команду Add Line . Программа выводит последнюю переменную, обрабатываемую программой перед выходом. Вместо

имени подпрограммы можно указать имя переменной, куда необходимо вывести результат работы подпрограммы.

2. ← – оператор присваивания значения локальной переменной. При выходе из блока программы значения локальных переменных оказываются недоступны для других участков Mathcad файла.

В Mathcad имеются два оператора присваивания: для глобальных переменных (обозначается двумя символами «:=») и для локальных переменных « ← ». Глобальные переменные доступны в любом месте программы после объявления данной переменной, а локальные – только в текущем блоке.

Для пояснения действия локального и глобального оператора присваивания рассмотрим пример простейшей программы на

Напишем программу для решения квадратного уравнения ax 2 +bx+c=0 . В программе при помощи операторов глобального присваивания задаются значения глобальных переменных a, b и c . Для сравнения введем еще локальную переменную k и присвоим ей значение 4. Далее вычисляем значение корней квадратного уравнения при помощи программы, состоящей из одного блока операторов. В программе применяются три оператора локального присваивания и возвращается значения вектора x , состоящего из двух чисел. После выполнения программы выводим значение всех переменных, используемых в программе. При этом значение всех локальных переменных D, x и k , заданных вне блока, программа не видит, поэтому вместо знака = выводится оператор глобального присваивания « :=» . В этом случае значение переменной не выводится, а вместо него отображается красный прямоугольный маркер.

a : = 1 b : = − 4 c : = 3 k ← 4 ORIGIN : = 1

Дифференциальные уравнения очень часто применяются для описания изменяющихся процессов. Для начала рассмотрим обыкновенное дифференциальное уравнение (ОДУ):

Аналитическое решение этого уравнения:

Аналитическое решение является точным, и оно быстро дает результат. К сожалению, многие практические дифференциальные уравнения не могут быть решены аналитически. Поэтому нам нужны численные методы.

Метод Эйлера

Наиболее простой метод решения дифференциальных уравнений – метод Эйлера. Это старый метод, легкий для понимания и программирования.

Вычисляем изменения, шаг за шагом:

Сравнение результата и точного решения:

Читайте также:  Asus geforce gtx 630

Заметьте, что решение методом Эйлера немного отличается от точного решения, и с ростом аргумента эта разница увеличивается. Уменьшить ошибку можно, если увеличить число шагов.

Блок решения ОДУ

Mathcad содержит все главные решатели дифференциальных уравнений. Их можно найти в меню Функции –> Дифференциальные уравнения. В этом уроке мы рассмотрим самый важный из них. Он прост в использовании и точен. Такой метод сочетает использование блока решения и функцию odesolve(). Перед решением определим:

Все вхождения зависимой переменной c в блоке решения записываются как функции независимой переменной, т.е. как c(t). Есть только одно исключение – запись слева от команды odesolve().

Решение этим методом и аналитическое решение близки. Этот же результат можно получить, записав производную через штрих с помощью [Ctrl+’]:

Пример: сердце и артерии

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

Пульсация потока уменьшается расширением и сжатием эластичных стенок артерий.

Перепады давления возле легких низки: примем, что избыточное давление в точках A и B равно нулю. Центральным элементом являются артерии, изменение объема которых определяются разницей входного и выходного потоков:

Предположим, что объем сердца изменяется во времени по синусоидальному закону, но кровь выпускается только в течение положительной полуволны:

График для восьми ударов:

Средний поток – это интеграл объема в течение одного удара, деленный на время удара:

Расширение артерий зависит от эластичности стенок и их геометрии, но мы не будем анализировать это здесь. Предположим, что объем линейно зависит от избытка давления:

Чем эластичнее стенки, тем больше значение k. Определим три значения:

Разность давлений следует из:

Баланс объемов артерий:

получаем дифференциальное уравнение для давления:

Решим его таким же образом, как и предыдущее, с той разницей, что k передадим в блок решения как параметр:

Максимумы давления зависят от эластичности артерий – чем больше эластичность, тем меньше давление:

Здесь мы использовали для примера одно дифференциальное уравнение первого порядка, но Mathcad этим не ограничивается.

Резюме

  1. Обыкновенное дифференциальное уравнение содержит два вида переменных: зависимые (y(x)) и независимые (x).
  1. Решение можно получить с помощью блока решения и функции odesolve().
  2. Используйте оператор дифференцирования или штрих в записи дифференциального уравнения. Штрих вводится с помощью [Ctrl+’].
  3. Введите необходимые граничные условия (они могут содержать запись производной через штрих).
  4. Функция odesolve() содержит зависимую переменную и независимую переменную.
  5. Зависимые переменные записываются как функции от независимых.
  6. В завершение присвойте выходной переменной функцию odesolve(). Выходная переменная не записывается как функция от независимой переменной.
  7. Однако, при использовании вывода нужно записывать его как функцию независимой переменной.
Ссылка на основную публикацию
Как полностью восстановить windows 10
Windows 10 предлагает множество функций восстановления системы, среди которых — возврат компьютера в исходное состояние и точки восстановления, создание полного...
Как перезагрузить айфон 8 plus если завис
iPhone 8 начал официально продаваться с конца прошлого месяца, за это время продажи смартфона превзошли ожидания большинства аналитиков. Если ты...
Как перезагрузить андроид до заводских настроек самсунг
Когда появляется необходимость сброса настроек до заводских в случае со смартфоном? Например, вы хотите видеть устройство точно таким, каким получили...
Как получить the crew 2 бесплатно
The Crew 2 Компания Ubisoft объявила о том, что игра The Crew 2 доступна бесплатно для геймеров на любой платформе,...
Adblock detector