Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Решение задач математического моделирования в системе MathCAD. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
возвращает окошко с надписью, хранящиеся в символьной переме-
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
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]