Уральский государственный экономический университет
Опубликован: 24.04.2013 | Доступ: свободный | Студентов: 2241 / 706 | Длительность: 06:24:00
Специальности: Математик, Физик
Лекция 4:

Решение уравнений

< Лекция 3 || Лекция 4: 1234 || Лекция 5 >

4.4. Задачи оптимизации

В программе MathCAD с успехом решаются задачи оптимизации. Задача оптимизации (линейного программирования) - определение значений аргументов функции, при которых функция имеет экстремальное (минимальное, максимальное) значение. Условия, налагаемые на аргументы функции - заданные ограничения. Используется методика решения системы уравнений помощью блока Given. При этом вместо функции Find используется функция Maximize(), если определяется максимум, и функция Minimize() , если определяется минимум оптимизируемой функции. Последовательность действий следующая:

  • ввести оптимизируемую функцию,
  • определить начальные значения аргументов,
  • в блоке Given ввести уравнения (неравенства) ограничений,
  • ввести функцию Maximize () (Minimaze() ),
  • определить решение.

Задача решается в алгебраическом и матричном виде. В матричном виде начальное значение корней, ограничения задаются в виде матриц. Решение в обоих случаях получается в виде матрицы.

Пример 4.11

Найти максимум функции

f=500y1+800y2+400y3+200y4

при ограничениях \left\{
\begin{aligned}
3y1+3y2+6y3\le30000\\
4y1+8y2+3y3+2y4\le24000\\
4y1+3y3+5y4\le12000\\
y1\ge0\\
y2\ge0\\
y3\ge0\\
y4\ge0
\end{aligned}
\right.

Листинги решения в алгебраическом и матричном виде.

ORIGIN:=1

Оптимизируемая функция – поиск максимума, f(y1,y2,y3,y4):=500y1+800y2+400y3+200y4

Начальные значения:

y1:=1, y2:=1, y3:=1, y4:=1

Given

3y1+y2+6y3\le30000

4y1+8y2+y3+2y4\le24000

y1+3y2+5y4\le12000

Ограничения:

y1\ge0, y2\ge0, y3\ge0, y4\ge0

y:=Maximize(f,y1,y2,y3,y4)

Решение:

y=\begin{pmatrix} 4.168\times10^3 \\ 1.827\times10^3 \\ 3.511\times10^3 \\ 0 \end{pmatrix}

Максимальное значение функции: f(y1,y2,y3,y4)=3.6\times10^6

ORIGIN:=1

Матрица коэффициентов функции: C:=\begin{pmatrix} 500 \\ 800 \\ 400 \\ 200 \end{pmatrix}

Матрица левых частей ограничений: A:=\begin{pmatrix} 3 & 1 & 6 & 0 \\ 4 & 8 & 1 & 2 \\ 1 & 0 & 3 & 5\end{pmatrix}

Матрица правых частей ограничений: B:=\begin{pmatrix} 30000 \\ 24000 \\ 12000 \end{pmatrix}

Начальные значения: x:=\begin{pmatrix} 1 \\ 1 \\ 1 \\ 1 \end{pmatrix}

f(x):=C\cdot x

Given

A\cdot x\le B

x\ge 0

x:=Maximize(f,x)

Решение:

x=\begin{pmatrix} 4.168\times10^3 \\ 1.827\times10^3 \\ 3.511\times10^3 \\ 0 \end{pmatrix}

Максимальное значение функции:

f(x)=3.6\times10^6

Основные итоги

В лекции представлены методы численного решения уравнений и систем уравнений с использованием функций MathCAD. Рассмотрены функция Root (), функция для поиска корней полинома polyroots(), вычислительные блоки Given .Find() и Given Minerr().. Описано численное решение систем линейных уравнений, а также способы аналитического решения : с помощью матриц, функции lsolve(), символьного оператора solve. Показано решение задач оптимизации.

Задания для самостоятельного выполнения

  1. Построить графики функций. Решить уравнения с применением функции root()

    а) \frac{\sin{(2x)}}{1-\cos{(2x)}} для -5 \le x \le 5

    б) 2\ln{(y+4)}-3\ln{(y+2)}+\ln{(y+1)}=0

    в) e^{z-8}-8z=0 (2 корня)

  2. Решить с применением функции polyroots() следующие уравнения

    а) x^3-6x^2-52=0

    б) x^5+23x^3-3x^2+15=0

  3. Решить системы уравнений с использованием блока Given Find(.)

    а) \left\{
\begin{aligned}
e^{\frac{x}{2}}-y=0\\
x^2-y+1=0
\end{aligned}
\right.
найти 3 корня

    б) \left\{
\begin{aligned}
\frac{2}{x}+3y=16\\
-x^2+2\sqrt{y}=2
\end{aligned}
\right.
найти 2 корня

    в) \tan{x}+\sin{x}=3x+3

    г) \left\{
\begin{aligned}
x^3-y^3=61(x-y)\\
(x-1)(y-1)=12
\end{aligned}
\right.

    д) \left\{
\begin{aligned}
x1+x2+x3=0\\
x1^2+x2^2+x3^2=20\\
x1^4+x2^4+x3^4=220
\end{aligned}
\right.

  4. Решить систему уравнений тремя способами. \left\{
\begin{aligned}
6x_1+8x_2-5x_3=7\\
x_1+3x_2+9x_3=6\\
3.8x_1+2x_2-8.8x_3=5
\end{aligned}
\right.

Ключевые термины

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

polyroot() - функция для численного поиска корней полинома. Возвращает вектор длиной n+1 всех корней полинома степени n.

Given Find() – вычислительный блок для численного решения нелинейных уравнений и систем уравнений.

Given Minerr() вычислительный блок для приближенного численного решения нелинейных уравнений и систем уравнений.

Maximize () функция для поиска значений переменных функции, при которых функция имеет максимальное значение.

Minimaze() - , функция для поиска значений переменных функции, при которых функция имеет минимальное значение.

lsolve(A,B) - функция аналитического решения системы линейных уравнений, представленной в виде AX=B.

< Лекция 3 || Лекция 4: 1234 || Лекция 5 >
Юрий Билоус
Юрий Билоус
Украина
Григорий Русских
Григорий Русских
Россия, Омск, Омский государственный технический университет, 2006