Пиши Дома Нужные Работы

Обратная связь

Решение дифференциальных уравнений.

 

 

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

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

 

1. Решение ОДУ с помощью группы решения.

 

Дифференциальное уравнение первого порядка может по определению содержать помимо самой искомой функции y(t) только ее первую производную y'(t).

В подавляющем большинстве случаев дифференциальное уравнение можно записать в стандартной форме (форме Коши): у' (t)=f (y(t),t)

Вычислительный блок для решения одного ОДУ, реализующий численный метод Рунге-Кутты, состоит из трех частей:

Given - ключевое слово;

ОДУ и начальное условие, записанное с помощью логических операторов, причем начальное условие должно быть в форме y(t0)=b;

odesolve(t,t1) - встроенная функция для решения ОДУ относительно переменной t на интервале (t0,t1). Например,



 

Для того, чтобы визуализировать полученную функцию можно построить ее график:

 

Обыкновенное дифференциальное уравнение с неизвестной функцией y(t),в которое входят производные этой функции вплоть до y(N) (t), называется ОДУ N-ГО порядка.

Если имеется такое уравнение, то для корректной постановки задачи Коши требуется задать N начальных условий на саму функцию y(t) и ее производные от первого до (N-l)-ro порядка включительно. В MathCAD 2001 можно решать ОДУ высших порядков как с помощью вычислительного блока Given/odesolve, так и путем сведения их к системам уравнений первого порядка. Внутри вычислительного блока:

- ОДУ должно быть линейно относительно старшей производной, т. е. фактически должно быть поставлено в стандартной форме;

- начальные условия должны иметь форму y(t)=b или у (t)=b

Например,

 

2. Решение систем дифференциальных уравнений.

 

Систему дифференциальных уравнений можно решить используя тот же блок Given/odesolve . При этом количество начальных условий равно сумме порядков всех уравнений, входящих в систему.

Например:

 

3. Решение дифференциальных уравнений без помощи блока решений.

 

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

- rkfixed – метод Рунге-Кутта с фиксированным шагом интегрирования;

- Rkadapt – метод Рунге-Кутта с переменным шагом интегрирования (величина шага адаптируется к скорости изменения функции решения);

- Bulstoer – метод Булирша-Штера (более эффективен в случае если решение является плавной функцией).

 

Эти функции имеют сходные параметры (y, a, b, n, D):

- y – вектор начальных значений неизвестных функций, входящих в систему (в случае одного уравнений и одной неизвестной функции – это просто число);

- a – начало отрезка, на котором ищется решение (именно в этой точке находятся значения вектора y);

- b – конец отрезка интегрирования;

- n – количество частей, на которые разбивается отрезок интегрирования;

- D(x, y) – векторная функция, элементы которой содержат правые части уравнений системы в нормальной записи (когда левые части – производные от соответствующих функций, а в правых частях производные отсутствуют)

 

Например:

 

 

Рассмотрим решение системы дифференциальных уравнений на примере системы Вольтерра-Лотки. Эта система описывает динамику численности хищников и жертв на замкнутой территории и задается следующими уравнениями:

 

где N1 – количество хищников,

N2 – количество жертв,

- параметры системы

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

Программирование в MathCAD.

 

 

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

Все операторы вставляются только щелчком на соответствующей кнопке и ни в коем случае не набираются с клавиатуры.

 

1. Создание программы.

 

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

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

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

 

2. Условный оператор.

 

Для проверки условий в MathCAD служит оператор if. Этот оператор имеет 2 поля ввода (справа и слева от слова if). В правое поле ввода вводится условие, а в левое поле ввода вводится команда или последовательность команд, которые следует выполнить в случае истинности условия. Если невыполнение условия должно привести к выполнению какого-либо другого программного кода, можно в строке, следующей за оператором if, вставить оператор otherwise. В поле ввода слева от этого оператора необходимо ввести строку программы, которая будет выполняться только в том случае, если не выполнилось условие, заданное в операторе if.

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

Рассмотрим, например, описание кусочно-заданной функции:

 

3. Цикл с условием (while).

 

Оператор while имеет 2 поля ввода (справа и снизу).

· В поле ввода справа от слова while следует ввести условие, при истинности которого выполняется цикл..

· В поле ввода ниже слова while следует ввести тело цикла – одна или несколько строк программы (для введения нескольких строк используется оператор Add Line), выполнение которых нужно повторить несколько раз.

Рассмотрим использование цикла while для вычисления приближенного значения квадратного корня (методом касательных):

 

4. Цикл с параметром (for).

 

Оператор for имеет три поля ввода :

· В поле ввода между словом for и знаком , следует указать имя переменной-счетчика.

· В поле ввода после знака следует указать диапазон значений, которые будет принимать переменная-счетчик (вместо диапазона можно указать имя массива, из которого должны браться значения переменной-счетчика).

· В поле ввода под словом for следует ввести тело цикла.

Рассмотрим функцию, вычисляющую факториал.

 

5. Рекурсия.

 

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

 

 

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

 

6. Обработка ошибок.

 

Система MathCAD предоставляет пользователю возможность перенаправлять программу в случае возникновения ошибки (деление на 0, выход за пределы массива). Для этого существует оператор on error, который содержит 2 поля ввода (справа и слева):

- Справа вводится выражение, которое следует вычислить

- Слева вводится выражение, которое следует вычислить, если в правом выражении окажется ошибка.

Например, рекурсивная программа вычисления факториала выдает ошибку для вычисления факториала нецелых и отрицательных чисел. Изменим программу так, чтобы в таких случаях факториал был равен 0:

 

Иногда возникает обратная ситуация: система MathCAD не видит никакой стандартной ошибки, но необходимо, чтобы появлялась надпись об ошибке. Например, в нерекурсивной программе вычисления факториала выдается ответ для отрицательных значений, а хотелось бы, чтобы возникала ошибка. В таких случаях используется конструкция следующего вида:

error (“[текст ошибки]”) if [условие]

Например:

 

 

7. Программы, составленные из нескольких операторов.

 

MathCAD имеет возможность написания различных программ, содержащих несколько операторов, при этом операторы могут быть вложены друг в друга, если в какой-то оператор вложено несколько операторов, то их нужно объединять вертикальной линией (Add Line).

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

 

 






ТОП 5 статей:
Экономическая сущность инвестиций - Экономическая сущность инвестиций – долгосрочные вложения экономических ресурсов сроком более 1 года для получения прибыли путем...
Тема: Федеральный закон от 26.07.2006 N 135-ФЗ - На основании изучения ФЗ № 135, дайте максимально короткое определение следующих понятий с указанием статей и пунктов закона...
Сущность, функции и виды управления в телекоммуникациях - Цели достигаются с помощью различных принципов, функций и методов социально-экономического менеджмента...
Схема построения базисных индексов - Индекс (лат. INDEX – указатель, показатель) - относительная величина, показывающая, во сколько раз уровень изучаемого явления...
Тема 11. Международное космическое право - Правовой режим космического пространства и небесных тел. Принципы деятельности государств по исследованию...



©2015- 2024 pdnr.ru Все права принадлежат авторам размещенных материалов.