Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Решение задач математического моделирования в системе MathCAD. Учебное пособие
.pdf
возвращает окошко с надписью, хранящиеся в символьной переме-
BBA =⋅
щенной S.
1.6. Решение задач вычислительной математики в MathCAD
1.6.1.Решение систем линейных уравнений
Векторные и матричные операторы и функции системы MathCAD
позволяют решать широкий круг задач линейной алгебры. К примеру,
если задана матрица А и вектор Вдля системы линейных уравнений в
матричной форме
очевидного выражения X=A
, то вектор решения можно получить из
-1
B.Для решения этой задачи есть и встро-
енная функция lsolve(A,B),которая возвращает вектор Х для системы
линейных уравнений А·Х=В
1.6.2.Решение нелинейных уравнений и систем
1.6.2.1. Функция поиска корня нелинейного уравнения root
Многие уравнения, например трансцендентные, и системы из них
не имеют аналитических решений. Однако они могут решаться численными методами с заданной погрешностью (не более значения, заданного системной переменной TOL). Встречная функция поиска
корня root используется для решения одного уравнения с одним неиз-
вестным. Функция имеет вид root(f(x), x), где f(x)=0 -решаемое уравнение. В документе это управление может быть представлено как левая часть уравнения f(x) =0 или как функция пользователя. Функция
root(f(x),x) должна возвращать скалярное значение. х–имя переменной, изменение которой должно обратить выражение f(x) в ноль.
Переменная х обязательно должна получить числовое значение
перед использованием функции root. Задание начального приближения является важным этапом при реализации итерационных процессов. От выбора начального приближения зависят время решения
задачи и сам результат(если решений несколько).Поэтому, прежде чем
задавать начальное приближение, рекомендуется провести анализ исходного уравнения. Это обычный прикидочный расчет или графическое представление исходного уравнения. Последний вариант более
31

информативен, так как позволяет также судить о количестве
T
V )14362(:=
+−
−−
−
−
=
i
i
Vpolyroots
225.1021.0
225.1021.0
371.0
587.3
)(
корней и их взаимном расположении.
Функция реализует вычисления итерационным методом, причем
можно задать начальное значение переменной:
х:= -10 root(x
х:= 10 root(x
Можно также (только в MathCAD 2000/2001) задать интервал по-
иска корня от а до b, где ищутся корни функции, заданной как функция пользователя.
1.6.2.2. Функция поиска всех корней многочлена polyroots
Для поиска корней обычного полинома р(х) степени п MathCAD
содержит очень удобную функцию polyroots(V). Она возвращает вектор всех корней многочлена (полинома) степени n, коэффициенты которого находятся в векторе V, имеющем длину, равную п+1. Пример:
2
-x-21,x) = -4.11
2
-x-21,x) = 5.11
Здесь найдены корни многочлена 4-й степени. Из них два корня действительные, два другие - комплексно-сопряженные.
1.6.2.3. Директива Given для подготовки блока решения си-
стемы уравнений
При решении систем нелинейных уравнений используется специальный вычислительный блок, открываемый служебным слогом —
директивой Given, и имеющий следующую структуру:
- начальные условия (вида переменная:= численное значение)
Given;
- уравнения (вида выражение слева=выражение справа);
32

- ограничительные условия (вида х>0 и т.д.);
- выражения с функциями Find, Minerr, Maximizeи Minimize;
- возможно задание уравнений и ограничительных условий в век-
торной форме.
1.6.2.4. Функции Find и Minerr для решения систем
нелинейных уравнений
В блоке используется одна из следующих двух функций: Find(vl,
v2,… vn) — возвращает значение одной или ряда переменных для
точного решения и Minerr(vl, v2, …. vn) — возвращает значение од-
ной или ряда переменных для приближенного решения методом
наименьших квадратов.
При использовании функции Minerr для решения систем нели-
нейных уравнений надо проявлять известную осторожность и обязательно предусматривать проверку решений. Нередки случаи, когда
решения могут оказаться ошибочными, чаще всего из-за того, что из
нескольких корней система предлагает нереальный (или не представляющий интереса) корень. Полезно как можно точнее указывать
начальные приближения к решению.
1.6.2.5. Реализация итерационных вычислений
Система MathCAD позволяет реализовать вычисления, осущест-
вляемые итерационным соотношением — когда значение некоторой
функции находится по одному или нескольким предшествующим ее
значениям. Приведём пример на числа Фибоначчи:
ORIGIN:=1 x
T
X
=(1 0 1 1 2 3 5 8 13 21)
:= 1 i := 3.. 10 Xi :=X
1
(i-2)
+ X
(i-1)
Как известно, два первых числа Фибоначчи определены как 1,а последующие есть сумма двух предыдущих. Результат задан как векторстрока чисел Фибоначчи.
Более актуальна задача реализации вычислений, в том числе ите-
рационных, с их окончанием по некоторому заданному условию. Для
этого система MathCAD содержит специальную функцию
until(Выражение 1, Выражение_2). Она позволяет повторять вы-
числения с возвратом значения Выражения 2, до тех пор, пока Вы-
33

ражение 1 больше или равно 0. В противном случае вычисления прекращаются.
1.6.3. Сплайн-интерполяция
Сплайн-аппроксимация отрезками кубических полиномов, про-
ходящих через три смежные узловые точки, дает гораздо лучшие результаты, чем линейная интерполяция. Коэффициенты полиномов
рассчитываются так, чтобы непрерывными были первая и вторая производные. Линия, которую описывает сплайн-функция, напоминает по
форме гибкую линейку, закрепленную в узловых точках. Для осуществления сплайновой аппроксимации система MathCAD предлагает
следующие функции:
cspline(VX, VY) — возвращает вектор VS вторых производных
при приближении в опорных точках к кубическому полиному;
pspline(VX, VY) — возвращает вектор VS вторых производных
при приближении к опорным точкам параболической кривой;
lspline(VX, VY) — возвращает вектор VS вторых производных
при приближении к опорным точкам прямой;
interp(VS, VX, VY, х)— возвращает значение у(х)для заданных
векторов VS, VX, VY и значения х.
Сплайн-аппроксимация проводится в два этапа. Вначале с помощью функций cspline, pspline или lspline отыскивается вектор вторых производных функции у(х),заданной векторами VX и VY ее абсцисс и ординат. Затем для каждой точки вычисляется у(х)с помощью
функции interp.
1.6.4. Аппроксимация функций, заданных таблично
Другой широко распространенной задачей обработки данных является представление их совокупности некоторой функцией y(x). Задача аппроксимации заключается в получении параметров этой функции такими, чтобы функция приближала облако исходных точек (заданных векторами VX и VY) с наименьшей среднеквадратичной погрешностью.
34

Часто используется линейная регрессия, при которой функция
у(х)имеет вид у(х)=а+bх и описывает отрезок прямой. Для проведе-
ния линейной аппроксимации в систему встроен ряд функций:
corr(VX, VY) — возвращает скаляр — коэффициент корреляции
Пирсона,
intercept(VX, VY) — возвращает значение параметра а(смещение
линии регрессии по вертикали);
slope(VX, VY) — возвращает значение параметра b(угловой ко-
эффициент линии регрессии).
В MathCAD реализована возможность выполнения линейной аппроксимации общего вида. При ней заданная совокупность точек приближается функцией вида.
F(x,K1,K2...,Kn) = K1·F
(x)+K2·F2(x)+..+Kn·Fn(x).
l
Таким образом, функция аппроксимации является линейной комбинацией функций F
(x), F2(x),...,Fn(x), причем сами эти функции
1
могут быть нелинейными. Для реализации линейной аппроксимации
общего вида используется функция linfit(VX,VY,F). Она возвращает
вектор коэффициентов линейной регрессии общего вида К, при котором среднеквадратичная погрешность приближения «облака» исходных точек, координаты которых хранятся в векторах VX и VY, оказывается минимальной. Вектор F должен содержать функции F
F
(x), ... , Fn(x),записанные в символьном виде. Вектор VX должен
2
(x),
1
содержать координаты, упорядоченные по возрастанию, а вектор
VY— ординаты, соответствующие абсциссам в векторе VX.
Под нелинейной аппроксимацией общего вида подразумевается
нахождение вектора К параметров произвольной функции
F(x,K1,K2,...,Kn\, при котором обеспечивается минимальная среднеквадратичная погрешность приближения «облака» исходных точек.
Для проведения нелинейной аппроксимации общего вида используется функция genfit(VX,VY,VS,F). Она возвращает вектор К параметров функции F, дающий минимальную среднеквадратичную погрешность приближения функцией F(х,К1,К2,...,Кп) исходных данных. F должен быть вектором с символьными элементами, причем они
должны содержать аналитические выражения для исходной функции
и ее производных по всем параметрам. Вектор VS должен содержать
начальные значения элементов вектора К, необходимые для решения
системы нелинейных уравнений регрессии итерационным методом.
35

Начиная с версии MathCAD2000 PRO в систему MathCAD был
введен ряд новых функций регрессии:
expfit(vx,vy,vg) — возвращает вектор, содержащий коэффици-
енты (a, b и с) аппроксимирующего выражения вида а·е
(bх)+с
, которое
лучшим образом приближается к точкам, координаты которых хранятся в векторах vx и vy(вектор vgсодержит первое приближение к
решению);
lgsfit(vx,vy,vg) — то же для выражения а/( 1 +b·е
(-с·х)
);
logfit(vx,vy) — тоже для выражения a·ln(x+b)+c (начального при-
ближения не требуется);
medfit(vx,vy) — то же для выражения a+b·х (начального приближения не требуется);
pwrfit(vx,vy, g) — то же для выражения а·х
b
+с вектор vg со-
держит первое приближение к решению;
sinfit(vx,vy,vg) — то же для выражения a·sin(x+b)+c .
1.6.5. Решение задач оптимизации нелинейного
программирования
Решение задач оптимизации – одна из важнейших сфер применения математических методов. Такое решение легко дается с помощью функции Minner, однако, в Mathcad 2000/2001 имеются специальные функции для решения задач оптимизации и линейного программирования. Так, для поиска значений переменных x1,x2,…,xn, при
которых некоторая функция f(x1,x2,…,xn) имеет максимальное или
минимальное значения используются функции maximize(f,x1,x2,…,xn)
и minimize(f,x1,x2,…,xn).Обе эти функции реализованы достаточно
универсальными алгоритмами оптимизации, которые не требуют вычисления производственных функцииf(x1,x2,…,xn), что не только
упрощает запись алгоритмов, но и позволяет решать задачи, в которых
вычисление производных по тем или иным причинам невозможно.
Пример на поиск минимума и максимума с применением функций Maximize и Minimize:
f (x, y):=100·(y-x
2)2
+(1-x)2
x:=0 y:=0
36

Given
=
1
1
P
=
0
0
R
P := Minimize(f, x, y)
f(P0,P1) = 2.004×10
Given
x ≥ 0 y ≥ 0 y ≤ 9-x
R := Minimize(f, x, y)
f(R0,R1)=1
Функции Maximize и Minimize могут успешно применяться при
решении задач линейного программирования, которые широко используются в экономических и производственных расчётах. Выше
представлен пример решения такой конкретной задачи с соответствующим описанием ее постановки. Решается довольно актуальная для
химического производства и практики применения горючих материалов задача подготовки смеси веществ.
Приведенные примеры показывают, что введение в Mathcad
8/2000 новых функций оптимизации Maximize и Minimize расширяет
круг решаемых системой задач при минимальных затратах времени на
подготовку средств их решения.
• Задача о смесях
Согласно стандарту, октановое число бензина А-76 должно быть
не ниже 76, а содержание серы – не более 0.3%. Для изготовления
бензина используется смесь из четырех компонентов. Требуется определить, сколько тонн каждого компонента следует использовать для
получения 1000 т автомобильного бензина А-76, чтобы его себестоимость была минимальной.
Целевая функция
F(x):= 40·x
x
:=10 x2 :=10 x3 :=10 x4 :=10
1
+ 45·x2 + 60·x3 + 90·x4
1
-10
37

Given
×−
=
−
714.285
857.142
10842.2
429.571
0
14
R
dx
dy
x
+ x2 + x3 + x4 =1000
1
Условие получения заданного количества бензина
68·x
+ 72·x2 + 80·x3 +90· x4 ≥ 76·1000
1
Ограничение по октановому числу бензина
0.35· x
+ 0.35·x2 + 0.3·x3 + 0.2· x4 ≤ 0.3·1000
1
Ограничение по содержанию серы
0 ≤ x
≤ 700 0≤ x2 ≤ 600 0≤ x3 ≤500 0≤ x4 ≤300
1
Ограничениепо числу компонентов
R:=Minimize(f,x)
4
Минимальная себестоимость f(R) = 5.7143×10
1.6.5.1. Решение дифференциального уравнения первого
порядка
Решение дифференциального уравнения вида
= -2 · y + 3 · x
c начальными условиямиx
=0, y0(0)=5 на интервале [0,3] методом
0
Рунге-Кутта приведено ниже. Тут же приведены результаты сравнения двух методов. Результаты получены на отрезке
Решение на отрезке
[
xn,xk] найдено функцией rkfixed(y, x1,x2,n,D) с
[
xn ,xk] в точке xk.
постоянным шагом. Для определения конечного результата в точке xk
использовалась функция rkadapt(y,x1,x2,acc,D,kmax,save) с автоматическим выбором шага.
xn : = 0 xk : =3 n :=7 y0 :=5
acc := 0.001 k := 2 s :=10
D(x,y) := -2 · y + 3 · x
38

yrr := rkfixed(y0,xn,xk,n,D )
=
764.35
30
T
yr
=
76.3142.3547.2014.2629.1588.1352.25
3571.2143.2714.1286.1857.0429.00
yrr
yr := rkadapt(y0,xn,xk,acc,D,k,s
1.6.5.2. Решение систем обыкновенных дифференциальных
уравнений
Решение систем дифференциальных уравнений базируется на
численных методах. В версиях MathСАD используется более десяти
встроенных методов для численного решения таких систем [1,2].
Все функции предназначены для решения задачи Коши для обык-
новенных дифференциальных уравнений
’
y
= f1(x,y1,y2 ,…,yn)
1
’
y
= f2(x,y
2
………………………… ,
‘
y
= fn(x,y1 ,y2 ,…,yn)
n
1 , y2
,…,yn)
с начальными условиями
y
)=y
1(x0
y2(x0)=y
0,1
0,2
……………...
Y
)=y
n(x0
0,n
Результат решения получается в виде таблицы приближённых
значений
y
,…, y
i,1,yi,2
чены на отрезке [x
для i= 1,2,…, n, где решения y1(x),y2(x),…,yn(x) полу-
i,n
,xn] в точках x0 ,x1 , x2 ,… xn, которые называются
0
узлами сетки. Результат содержит (n +1) строку.
Дифференциальные уравнения в обыкновенных производных
высшего порядка:
y
(n)
= f(x,y,y’,…,y
(n-1)
).
39

с начальными условиями также могут быть решены с помощью чис-
05
.0
2
2
=
+
+
+
x
y
dx
dy
dx
xd
dx
dy
1
0
y
dx
dy
−=
( )
5.0
01
1
+
−
=
x
yy
dx
dy
05.0
2
2
=+
+
+
x
y
dx
dy
dx
xd
ленных методов, однако предварительно такое уравнение должно
быть преобразовано в систему уравнений первого порядка путем замены переменных:
y = Y
0
y’= Y
1
y’’=Y2
………
(n-1)
y
=Y
n-1
Аналогичным образом должны быть преобразованы и начальные
условия.
Рассмотрим решение дифференциального уравнения второго по-
рядка вида
c начальными условиямиx
=0.1, y0 =1,
0
=1 на интервале [0,1]
Исходное уравнение второго порядка необходимо преобразовать
в систему из двух уравнений первого порядка:
с соответствующими начальными условиями.
Решение системы уравнений на отрезке
[
xn ,xk]получим, исполь-
зуя метод Рунге-Кутта. Транспонированные матрицы yr и yrr содер-
жат решения, найденные в конечной точке с автоматическим выбором
шага (yr) и во всех точках отрезка
[
xn ,xk] с постоянным шагом (yrr).
Решение уравнения второго порядка вида
40
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
