Функции Mathcad, которые были описаны выше в этой главе, предназначены для решения задачи с начальными условиями — задачи Коши. Для этих задач задаются значения искомого решения и его производных в начальной точке интервала.
Однако часто встречаются задачи, в которых значения искомого решения известны в граничных точках интервала. Хороший пример такой задачи — натянутая струна, закрепленная на концах. Задачи такого типа называются краевыми задачами. В первой части раздела будут детально обсуждены двухточечные краевые задачи: задачи для системы обыкновенных дифференциальных уравнений, решение которых является функцией одной переменной, и известны значения решения в двух граничных точках интервала. Далее в разделе будет обсужден частный случай, касающийся дифференциальных уравнений в частных производных.
Двухточечные краевые задачи
Функции Mathcad, описанные выше, позволяют находить решение для дифференциального уравнения n-ого порядка при условии, что известны начальные условия для решения и его первых (n -1) производных в начальной точке интервала, на котором ищется решение. В этом разделе рассматривается следующая задача. Предположим, что известны не все начальные условия в начальной точке интервала, но зато известны дополнительно значения решения и/или некоторых его производных в другой точке интервала. В частности, если:
- Задано дифференциальное уравнение n-ого порядка.
- В начальной точке x1 интервала, на котором ищется решение, задана только часть информации о значении решения и первых(n -1) производных.
- В конце интервала x2 известны некоторые (но не все) значения решения и его первых (n -1) производных
- Общее количество условий, заданных в точках x1 и x2, равно n.
В этом случае необходимо использовать функцию sbval, чтобы найти недостающие начальные условия в x1. После того, как эти недостающие начальные условия будут получены, можно будет решать обычную задачу с начальными условиями — задачу Коши. В этом случае не нужно решать двухточечную краевую задачу. Для решения полученной задачи Коши можно использовать любую из функций, описанных ранее в этой главе.
Пример, приведенный на Рисунке 7, показывает, как использовать функцию sbval. Обратите внимание, что функция sbval не возвращает решение дифференциального уравнения. Она только вычисляет недостающие начальные условия. При этом они выбираются согласованными с теми значениями, которые были заданы в конечной точке интервала. Далее нужно использовать найденные начальные условия, возвращенные функцией sbval, и решать возникающую обычную задачу с начальными условиями при помощи тех функций, которые описаны ранее в этой главе.
Функция sbval возвращает вектор, содержащий недостающие начальные условия в точке x1. Аргументы функции sbval:
sbval ( v, x1, x2, D, load, score)
v = |
Вектор начальных приближений для искомых недостающих начальных значений в точке x1. |
x1, x2 = |
Граничные точки интервала, на котором ищется решение дифференциальных уравнений. |
D (x, y) = |
Функция, возвращающая значение в виде вектора из n элементов, которые содержат первые производные неизвестных функций. |
load (x1, v) = |
Векторозначная функция, возвращающая значения начальных условий в точке x1. Вектор состоит из n элементов. Они соответствуют вектору начальных условий в точке x1. Некоторые из этих элементов будут константами, определяемыми начальными условиями. Другие элементы будут неизвестными и будут найдены функцией sbval. Если значение начального условия неизвестно, необходимо использовать вектор, соответствующий вектору начальных приближений из v. |
score(x2, y) = |
Векторозначная функция, возвращающая вектор, количество элементов которого равно числу элементов вектора v. Каждый элемент вектора содержит разность между начальным условием, заданным в точке x2, и значением искомого решения в этой точке. Вектор score показывает, насколько значения найденного решения в точке x2 близки к значениям, заданным в x2. Значение 0 для любого элемента указывает на полное совпадение между заданным начальным условием и тем значением, которое возвращается функцией sbval. |
Рисунок 7: Использование функции sbval для получения недостающих начальных условий для дифференциального уравнения, соответствующих значениям, заданным в конечной точке интервала.
Рисунок 8: Использование функции bvalfit для согласовывания решений в середине интервала поиска решения.
Также возможно, что информация, необходимая для использования функции sbval, задана неполностью, но дополнительно известны значения решения первых (n-1) производных в некоторой промежуточной точке xf. В этой ситуации необходимо использовать функцию bvalfit. Эта функция решает двухточечную краевую задачу подобного типа методом стрельбы: из конечных точек интервала выпускаются всевозможные траектории решений, и из них выбирается та, которая принимает заданное значение в промежуточной точке xf.
bvalfit ( v1, v2, x1, x2, xf, D, load1, load2, score)
v1, v2 = |
Вектор v1 содержит начальное приближение для начальных условий, которые не заданы в точке x1. Вектор v2 содержит начальное приближение для начальных условий, которые не заданы в точке x2. |
x1, x2 = |
Граничные точки интервала, на котором ищется решение дифференциального уравнения. |
xf = |
Некоторая точка между x1 и x2. В этой точке решения, начинающиеся в точках x1 и x2, должны быть равны. |
D (x, y) = |
Функция, возвращающая значение в виде вектора из n элементов, содержащих первые производные неизвестных функций. |
load1 (x1, v1) = |
Векторозначная функция, возвращающая значения начальных условий в точке x1. Вектор состоит из n элементов. Они соответствуют вектору начальных условий в точке x1. Некоторые из этих элементов будут константами, определяемыми начальными условиями. Другие элементы будут неизвестными. Если значение начального условия неизвестно, то нужно использовать соответствующее значение из вектора начальных приближений v1. |
load2 (x2, v2) = |
Аналогичный load1, но для значений в точке x2. |
score(xf, y) = |
Векторозначная функция, возвращающая вектор из n элементов. Он определяет, насколько значения решений, начинающихся из точек x1 и x2, должны соответствовать в точке xf. Например, если необходимо, чтобы решения совпадали, определите score(xf, y):= y. |
Этот метод становится особенно полезным, когда производные имеют разрыв где-либо на интервале поиска решения. Пример этого приведен на Рисунке 8.
Дифференциальные уравнения с частными производными
Второй тип краевой задачи возникает при решении дифференциальных уравнений в частных производных. В этом случае значение решения фиксируется не в двух точках, а в целом континууме точек, представляющих собой границу некоторой области.
Два дифференциальных уравнения в частных производных, которые часто возникают при анализе физических явлений, — это уравнение Пуассона:
и его однородная форма — уравнение Лапласа.
Mathcad имеет две функции для решения этих уравнений в области с квадратной границей. Используйте функцию relax, если известны значения, принимаемые неизвестной функцией u(x, y), на всех четырех сторонах квадрата.
Если функция u(x, y) равна нулю на всех четырех сторонах квадрата, можно использовать функцию multigrid. Эта функция зачастую решает задачу быстрее, чем relax. Обратите внимание, что, если граничные условия одинаковы на всех четырех сторонах квадрата, можно достаточно просто преобразовать уравнение к эквивалентному виду, в котором граничное значение является нулем на всех четырех сторонах.
Функция relax возвращает квадратную матрицу, в которой:
- Расположение элемента в матрице соответствует расположению точки внутри квадрата, и
- Значение элемента аппроксимирует решение задачи в этой точке.
Эта функция использует метод релаксации для нахождения приближенного решения. Уравнение Пуассона на квадратной области представляется в виде:
aj,kuj+1,k + bj,kuj-1,k + cj,kuj,k+1 + dj,kuj,k-1 + ej,kuj,k = fj,k
Аргументы функции relax следующие:
relax(a, b, n, d, e, f, u, rjac) relax function
a, b, n, d, e = |
Квадратные матрицы одинакового размера, содержащие коэффициенты вышеупомянутого уравнения. |
f = |
Квадратная матрица, содержащая значения правой части уравнения в каждой точке по области, в которой ищется решение. |
u = |
Квадратная матрица, содержащая граничные значения решения на границе области и начальное приближение для решения внутри области. |
rjac = |
Спектральный радиус итераций Якоби. Это число между 0 и 1, которое управляет сходимостью алгоритма релаксации. Оптимальное значение зависит от деталей задачи. |
Если граничное условие — ноль на всех четырех сторонах квадрата, используйте функцию multigrid вместо функции relax. Пример приведен на Рисунке 9.
multigrid(M, ncycle)
M = |
Квадратная матрица размером 1 + 2n. Содержит значение правой части уравнения f в соответствующей точке квадратной области. |
ncycle = |
Число циклов в каждом уровне итерации multigrid. Значение 2 будет обычно давать хорошую аппроксимацию решения. |
Рисунок 9: Использование функции multigrid для решения уравнения Пуассона в квадратной области.
|