Уравнения более высокого порядка 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Уравнения более высокого порядка



Упражнение. Решить дифференциальное уравнение четвертого порядка: y'''' - 18 y'' + 81 y = 0 с начальными условиями:

в 100 промежуточных точках на интервале [0, 5].

1. Введите начальные условия: y0:=0, y1:=1, y2:=2, y3;=3.

2. Введите y:= .

3. Тогда D находим следующим образом:

.

4. Решите дифференциальное уравнение высокого порядка с помощью функции rkfixed().

Результат представлен на рисунке 67.

Рис. 67. Решение дифференциальных уравнений высокого порядка

8.2 Решение дифференциальных уравнений с помощью блока решений Given/Odesolve

Для решения дифференциальных уравнений первого порядка, заданного в форме Коши: , нужно задать начальные значения функции y(t0) в точке t0. То есть найти функцию y(t) на интервале [t0, t].

Упражнение. Решить уравнение с начальными условиям y(0)=2, x задан на интервале [0, 100].

Для решения данного дифференциального уравнения необходимо:

1. Введите начальные значения для переменной: x:=0..100.

2. После слова Given задайте начальные условия (в форме y(t0)=b) и само дифференциальное уравнение через логическое равно: , y(0)=2.

3. Решите ОДУ с помощью функции Odesolve. Сравните результат с рисунком 68.

Рис. 68. Решение дифференциального уравнения с помощью блока решений Given\Odesolve

 

Контрольные вопросы

1. Какие встроенные функции используются для решения обычных дифференциальных уравнений?

2. Обязательно ли задавать начальные условия для решения обычных дифференциальных уравнений?

3. Влияет ли на результат количество точек разбивки интервала интегрирования обычных дифференциальных уравнений?

 

ОСНОВЫ ПРОГРАММИРОВАНИЯ

Цель: Научиться использовать программные модули при решении задач.

Основные инструменты работы в Mathcad – это математические выражения, переменные и функции. Нередко записать формулу, использующую ту или иную внутреннюю логику (например, возвращение различных значений в зависимости от условий), в одну строку не удается. Назначение программных модулей как раз и заключается в определении выражений, переменных и функций в несколько строк, часто с применением специфических программных операторов. Несмотря на принципиальную эквивалентность определения функций, и переменных через встроенные функции Mathcad или программные модули, программирование имеет ряд существенных преимуществ, которые в ряде случаев делают документ более простым и читаемым:

· возможность применения циклов и условных операторов;

· простота создания функций и переменных, требующих несколько простых шагов;

· возможность создания функций, содержащих закрытый для остального документа код, включая преимущества использования локальных переменных и обработку исключительных операций (ошибок).

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

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

· при необходимости вызвать на экран панель инструментов Programming (Программирование);

· нажать на этой панели кнопку Add Line (Добавить линию);

· если приблизительно известно, сколько строк кода будет содержать программа, можно создать нужное количество линий повторным нажатием кнопки Add Line (Добавить линию) соответствующее число раз;

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

Вставить строку программного кода в уже созданную программу можно в любой момент с помощью той же самой кнопки Add Line (Добавить линию). Для этого следует предварительно поместить на нужное место внутри программного модуля линии ввода. Если передвинуть вертикальную линию ввода из начала строки в ее конец, то новая линия появится после строки. Если выделить строку не целиком, а лишь некоторую ее часть, то это повлияет на положение в программе новой строки кода.

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

Язык программирования Mathcad не был бы эффективным, если бы не позволял создавать внутри программных модулей локальные переменные, которые «не видны» извне, из других частей документа. Присваивание в пределах программ, в отличие от документов Mathcad, производится с помощью оператора Local Definition (Локальное присваивание), который вставляется нажатием кнопки с изображением стрелки <- на панели Programming (Программирование).

Операторы присваивания := и вывода = в пределах программ не применяются.

Действие условного оператора if состоит из двух частей. Сначала проверяется логическое выражение (условие) справа от него. Если оно истинно, выполняется выражение слева от оператора if. Если ложно — ничего не происходит, а выполнение программы продолжается переходом к ее следующей строке. Вставить условный оператор в программу можно следующим образом (рис. 69):

· если необходимо, ввести левую часть выражения и оператор присваивания;

· создать новую строку программного кода, нажав на панели Programming (Программирование) кнопку Add Line (Добавить строку);

· нажать кнопку условного оператора if;

· справа от оператора if ввести условие, пользуясь логическими операторами, вводя их с панели Boolean (Булева алгебра);

· выражение, которое должно выполняться, если условие истинно, ввести слева от оператора if;

· если в программе предусматриваются дополнительные условия, добавить в программу еще одну строку нажатием кнопки Add Line и ввести их таким же образом, используя, оператор if или otherwise.

Рис. 69. Вставка условного оператора

 

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

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

· создать в программном модуле новую линию;

· вставить один из операторов цикла for или while нажатием одноименной кнопки на панели Programming (Программирование);

· если заранее точно известно необходимое число выполнений цикла, то целесообразно использовать цикл типа for;

· если цикл должен завершиться по выполнении некоторого условия, причем момент выполнения этого условия заранее не известен, то целесообразно использовать цикл типа while;

· в нижний местозаполнитель ввести тело цикла, т. е. выражения, которые должны выполняться циклически;

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

Циклы «while».

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

Чтобы записать цикл типа while, нужно:

· Щёлкнуть по кнопке “ while ” в панели программирования.

· Напечатать условие выполнения в верхнем поле ввода. Обычно это — логическое выражение, подобное показанному.

· Записать в оставшемся поле ввода выражение, подлежащее повторяющемуся вычислению. Введение дополнительных полей ввода осуществляется путем нажатия кнопки “ Add Line ” на панели программирования.

Обнаружив заголовок цикла типа while, Mathcad проверяет условие цикла. Если оно истинно, то Mathcad выполняет тело цикла и снова проверяет условие. Если оно ложно, то Mathcad заканчивает выполнение цикла.

Оператор «break».

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

Чтобы ввести оператор break, нужно щёлкнуть по кнопке “ break ” на панели программирования.

Циклы «for»

Цикл типа for является циклом, число выполнений которого определено заранее. Число выполнений определятся переменной цикла, задаваемой в его начале.

Для создания цикла типа for: looping; for loopfor loop

Щёлкните по кнопке «for» на панели программирования.

Напечатайте в поле ввода слева от знака ϵ имя переменной цикла.

Введите в поле справа от знака ϵ диапазон значений, в котором должна изменяться переменная цикла. Форма задания диапазона в точности такая же, как и для дискретного аргумента.

В оставшееся поле ввода впечатайте выражение, подлежащее повторяющимся вычислениям. Обычно оно включает в себя переменную цикла. Дополнительные поля ввода можно создать щелчком по кнопке «Add Line» в панели программирования.

Выражение справа от символа ϵ является обычно диапазоном, оно может быть также вектором или списком скаляров, диапазонов и векторов, разделенных запятыми.

Упражнение. Найти первый элемент вектора, превосходящий заданное значение.

1. Введите вектор: m:=0..2500.

2. Введите функцию fm:=1+sin(m).

3. Выведите таблицу значений fm=.

4. Задайте функцию, находящую первый элемент вектора, превосходящий заданное значение: .

5. Найдите первый элемент вектора, превосходящий значение 1.91. Введите t(f,.1.91)=.

Сравните результат с представленным на рисунком 70.

Рис. 70. Решение задачи с помощью цикла while

 

Упражнение. Измените предыдущее упражнение так, чтобы не случилось зацикливания.

Для программы на рис. 69 существует возможность зацикливания. Если каждый элемент из f меньше, чем thres, то условие никогда не станет ложным и поиск выйдет за пределы вектора, что приведет к сообщению об ошибке «индекс вне границ». Чтобы это не случилось, используйте оператор break.

1. Введите вектор: m:=0..2500.

2. Введите функцию fm:=1+sin(m).

3. Выведите таблицу значений fm=.

4. Задайте функцию, находящую первый элемент вектора, превосходящий заданное значение с проверкой условия «зацикливания». Чтобы ввести оператор break, нужно щёлкнуть по кнопке «break» на панели программирования. Сначала нужно щёлкнуть по кнопке «break» и только потом по кнопке «if». Введите

5. Найдите первый элемент вектора, превосходящий значение 1.91. Введите t(f,.1.91)=

Введите для проверки значение 9.

Сравните результат с представленным на рисунке 71.

Программа возвратит 0 в случае, если не будет найдено ни одного элемента, превосходящего thres. В противном случае она возвращает индекс и значение первого элемента, превосходящего thres.

Рис. 71. Решение задачи с проверкой зацикливания

 

Упражнение. Посчитайте сумму N первых членов последовательности, где N =32.

1. Введите функцию нахождения суммы N первых членов последовательности: .

2. Введите sum(32)=.

Сравните результат с представленным на рисунке 72.

Рис. 72. Нахождение суммы N первых членов последовательности

 

Контрольные вопросы

1. Когда используется оператор break?

2. Назовите синтаксис оператора for?

3. Назовите синтаксис оператора while?


СПИСОК ЛИТЕРАТУРЫ

1. Макаров, Е.Г. Инженерные расчеты в MathCad. Учебный курс / Е.Г. Макаров. – СПб.:Питер, 2003. – 448 с.

2. Поршнев, С.В. Численные методы на базе MathCad / С.В. Поршнев, И.В. Беленкова. – СПб.:Питер, 2005. – 464 с.

3. Очков В.Ф. MathCad 14 для студентов и инженеров: русская версия / В.Ф. Очков. – СПб.: БХВ-Петербург, 2009. – 512 с.

 

 



Поделиться:


Последнее изменение этой страницы: 2017-02-22; просмотров: 249; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.128.199.130 (0.03 с.)