09_Mathcad уравнения

advertisement
09. Mathcad. Решение уравнений
09.1. Нелинейное уравнение
Для решения уравнения вида F(x)=0 предназначена функция:
09.1
root(выражение, имя переменной)
Корень.
Функция ищет один корень в окрестности
начального значения, которое должно быть
предварительно задано.
Если решения нет, то надо изменить начальное
значение. Для его выбора можно нарисовать
график.
Если корней много, то после нахождения очередного корня выражение можно упростить, исключая корень xi делением выражения на (x-xi).
Для нового выражения можно искать очередной
корень.
a3
1
a3  x
3
F( x)
x
x1
x
x2
a2
a2  x
2
a1
21
a1  x
a0
a0
52
root ( F( x)  x)
1
x1  4
Поиск первого корня.
x2  1  3.464i
Новое начальное значение (со старым решения
не найдено).
Исключение первого корня и поиск второго корня.
Исключение первого и второго корней и поиск
третьего корня.
i
root
F( x)
root
(x
x
x1
F( x)
x1 )  ( x
x
x2 )
Коэффициенты полинома.
Задано выражение - кубический полином, он
имеет три корня.
Начальное значение х.
0
x
x3
6
x3  1
3.464i
09.2. Полином
Для поиска корней полинома степени n предназначена функция:
09.2
polyroots(V)
Корни полинома.
V - вектор длиной (n+1) c коэффициентами полинома.
Коэффициенты должны располагаться в порядке увеличения степеней (начиная с a0).
Функция ищет все корни полинома.
Не рекомендуется при n>5…6, при этом точность невысока.
a3
1
a2
6
a1
21
a0
52
Коэффициенты полинома.
a0
V
a1
Они же в форме вектора.
a2
a3
1  3.464i
X
polyroots ( V)
X
1
4
3.464i
Поиск корней.
09.3. Системы нелинейных уравнений
Используется специальный вычислительный
блок:
Given
Уравнения
Ограничительные условия
Выражения с функциями find или iner.
09.3
Функции Find и Minerr используют разные алгоритмы.
Рекомендуется после нахождения решения сделать проверку подстановкой.
Find(v1,v2,…,vn) - найти,
Minerr(v1,v2,…,vn) - минимальная ошибка.
Возвращает точные значения перечисленных
переменных.
Возвращает приближенные значения перечисленных переменных.
Эти функции могут применяться только после
блока Given.
Имена этих функций можно писать и строчными
буквами.
Пример с одним уравнением без ограничений.
X:=10
Given
X2:=3
x0:=find(x)
x0=
Начальное значение х.
Начало блока.
Уравнение несовместимо с начальным x.
Точное решение поэтому найти невозможно.
x1=1.732
Начальное значение х.
Начало блока.
Уравнение. Оно совместимо с начальным значением х, так как задано приближенно.
Точное решение поэтому найти возможно.
x2=1.732
Начальное значение х.
Начало блока.
Уравнение.
Приближенное решение так же возможно.
x:=10
Given
X2=3
x1:=find(x)
x:=10
Given
X2:=3
x2:=find(x)
Пример с двумя уравнениями с ограничениями.
X:=0 y:=0
Начальные значения х и y.
То же в векторной форме
x 
V :  
y
Начало блока.
Уравнение 1.
Уравнение 2.
Ограничение на х.
Given
y=x2
y=8+3x
x<0
V1:=find(x,y)
 1.702
V1 : 

2.895 
x:=3 y:=0
Первое решение.
Начальные значения х и y.
То же в векторной форме
x 
V :  
y
Given
y=x2
y=8+3x
x>0
V2:=Minerr(x,y)
09.4
4.702 
V 2 : 

22.105
Начало блока.
Уравнение 1.
Уравнение 2.
Ограничение на х.
Второе решение.
09.4. Системы обыкновенных дифференциальных уравнений (ОДУ)
09.4.1. Основная функция rkfixed
09.5
Для краевых задач, в которых решение фиксируется в двух точках, начальной х1 и конечной
х2.
rkfixed(Y,x1,x2,n,F) - возвращает матрицу решения методом Рунге-Кутты с фиксированным шагом для системы ОДУ.
Y - вектор начальных условий размерности m,
x1, x2 - границы интервала,
n - число точек, не считая х1, в которых ищется
промежуточное решение,
F - символьный вектор размерности m, содержащий правые части уравнений в виде первых
производных.
Возвращаемая матрица содержит столбцы:
- точки, в которых ищется решение,
- значения y в этих точках,
- значения y’ в этих точках,
- значения y’’ в этих точках,.
- …
- значения ym-1 в этих точках,..
Имя функции от «Рунге-Кутта фиксированный
шаг».
Это основная функция.
Значения Y и ее производных (до m-1 ой).
m - порядок ДУ или число уравнений в системе.
Начальные условия в векторе y - точка x1.
09.4.2. Дополнительные функции
09.6
Bulstoer(Y,x1,x2,n,F) - возвращает матрицу реРекомендуется для гладких функций. Дает бошения методом Bulirsch-Stoer для системы ОДУ. лее точное решение, чем функция rkfixed.
Аргументы аналогичны функции rkfixed.
Rkadapt(Y,x1,x2,n,F)
- возвращает матрицу Имя функции от «Рунге-Кутта с адаптацией».
решения методом Рунге-Кутты с переменным
шагом для системы ОДУ.
В отличие от функции rkfixed здесь использован
переменный шаг. Когда промежуточное решение
изменяется медленно, шаг увеличивается.
09.4.3. Функции для жестких систем
Система ОДУ, записанная в виде:
Y=Ax,
является жесткой, если матрица А почти вырождена.
Использование описанных выше функций в
этом случае дает неустойчивое и сильно осциллирующее решение.
Рекомендуются специальные функции:
Рекомендуется для гладких функций. Дает более точное решение, чем функция rkfixed.
Stiffb(Y,x1,x2,n,F,J) - возвращает матрицу реше- Имя функции от «Жесткий Bulirsch-Stoer».
ния методом Bulirsch-Stoer, модифицированным
для жестких систем ОДУ.
J(x,Y) - функция, которая возвращает матрицу
размером m(m+1) содержит столбцы:
- первый - роизводные,
- остальные - матрицу Якоби системы ОДУ.
Stiffr(Y,x1,x2,n,F,J) - возвращает матрицу решения методом Розенброка, модифицированным
для жестких систем ОДУ.
Имя функции от «Жесткий Розенброк».
09.4.4. Укороченные функции
09.7
Применяются, когда достаточно найти приблиЧтобы подчеркнуть их сходство с основными
женное решение в одной единственной точке х2. функциями, разница в именах только в высоте
первой буквы.
Определены функции:
rkadapt(Y,x1,x2,acc,n,F,k,s) = Rkadapt(Y,x1,x2,n,F)
bulstoer(Y,x1,x2,acc,n,F,k,s) = Bulstoer(Y,x1,x2,n,F)
stiffb (Y,x1,x2,acc,n,F,J,k,s) = Stiffb (Y,x1,x2,n,F,J)
stiffr (Y,x1,x2,acc,n,F,J,k,s) = Stiffr (Y,x1,x2,n,F,J)
с дополнительными аргументами:
acc - точность решения,
k - число промежуточных точек решения,
s - минимальный интервал между точками.
acc=0.001 дает хорошую точность.
Ограничивает число строк матрицы решения.
09.4.5. Функции для двухточечных краевых задач
В этих задачах m начальных условий распределены: часть из них известна в точке х1, а часть в
х2.
Тогда для определения недостающих условий в
точке х1 следует использовать функцию:
sbval(V,x1,x2,F,load,score)
V - вектор недостающих приближений в точке
В load(x1,V).
х1,
x1, x2 - границы интервала,
F - символьный вектор размерности m, содержащий правые части уравнений в виде первых
производных.
load(x1,V) - векторная функция, возвращающая
значения начальных условий в точке х1,
Признак хорошего результата - нули.
score(x2,Y) - векторная функция, возвращающая
разницу значений, вычисленных в точке х2, с
заданными там изначально.
09.4.6. Функции для краевых задач с непрерывными производными
09.8
В этих задачах часть информации для использования функции Sbval неизвестна, но дополнительно известны значения решения первых (m1) производных в промежуточной точке x3.
Метод особенно полезен, когда производные
имеют точки разрыва.
Тогда следует использовать функцию:
Использует метод стрельбы. Из конечных точек
х1 и х2 выпускаются всевозможные траектории
решений, из которых выбираются те, которые
дают нужное значение в точке х3. выпускаются
В load1(x1,V).
bvalfit(V1,V2,x1,x2,x3,F,load1,load2,score)
V1 - вектор начальных приближений для
начальных условий, которые не заданы в точке
х1,
V2 - вектор начальных приближений для
начальных условий, которые не заданы в точке
х2,
x1, x2 - границы интервала,
х3 - промежуточная точка,
F - символьный вектор размерности m, содержащий правые части уравнений в виде первых
производных.
load1(x1,V) - векторная функция, возвращающая
значения начальных условий в точке х1.
load2(x2,V) - векторная функция, возвращающая
значения начальных условий в точке х2.
score(x3,Y) - векторная функция, возвращающая
разницу значений, вычисленных в точке х3,
начиная с точек х1 и х2.
В load2(x2,V).
В ней решения, начинающиеся в х1 и х2 должны
быть равны.
Отсутствующие компоненты должны браться из
V1.
Отсутствующие компоненты должны браться из
V2.
Для совпадения необходимо score(x3,Y)=Y..
09.5. ДУ с частными производными
В этих задачах решение краевой задачи фиксируется не в двух точках, а в целом континууме
точек. В физике часто встречается уравнение
Пуассона
09.9
 2u  2u

  ( x , y)
x 2 y 2
и его однородная форма - уравнение Лапласа.
Mathcad имеет две функции решения этих уравнений в области с квадратной границей.
Они возвращают квадратную матрицу, в которой:
- расположение элемента соответствует
расположению точки в квадрате,
- значение элемента аппроксимирует решение задачи в этой точке.
Для квадратной области уравнение Пуассона:
a j, k u j1, k  b j, k u j1, k  c j, k u j, k 1  d j, k u j, k 1  e j, k u j, k  f j, k
Если известны значения u(x,y) на границах
квадрата, то используется функция
relax(a,b,c,d,e,f,u,rjac)
Использует метод релаксации.
a, b, c, d, e - квадратные матрицы одинакового
размера, содержащие коэффициенты уравнения
Пуассона,
f - квадратная матрица, содержащая значения
правой части уравнения Пуассона в каждой точке по области, в которой ищется решение,
u - квадратная матрица, содержащая граничные
значения на границе области и начальное приЧисло в интервале 0.... Влияет на сходимость
ближение внутри области
итераций.
rjac - спектральный радиус итераций Якоби.
Если на границах квадрата u(x,y)=0, то используется функция
multigrid(M,n)
M - квадратная матрица области.
n - число циклов на каждом уровне итерации.
Содержит значения правой части уравнения
Пуассона в точках квадратной области.
Хороший результат дает n=2.
Download