Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Wd0000019.doc
Скачиваний:
23
Добавлен:
14.04.2019
Размер:
663.55 Кб
Скачать

13.Ска Maple. Библиотека Optimization.

Библиотеиа Optimization позволяет отыскивать оптимальные решения для задач следующего вида:

-линейного программирования LPSolve

-квадратического программирования QPSolve

-нелинейного программирования NLPSolve

-среднеквадратического отклонения LSSolve

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

Фирма производит три вида продукции (A, B, C), для выпуска каждого требуется определенное время обработки на всех четырех устройствах.

Вид продукции

Время обработки, ч.

Прибыль, у.е.

I

II

III

IV

A

1

3

1

2

3

B

6

1

3

3

6

C

3

3

2

4

4

Пусть время работы на устройствах I, II, III, IV составляет соответственно 84, 42, 21 и 42 часа.

Целевая функция:

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

  • A, B, C – неотрицательные (> =0)

A, B, C – целочисленные.

Приведем решение в системе Maple:

>restart;

>with(Optimization);

ImportMPS, Interactive, LPSolve, LSSolve, Maximize, Minimize, NLPSolve, QPSolve]

>func:=3*A+6*B+4*C;

3A+6B+4C

>organ:={1*A+6*B+3*C<=84, 3*A+1*B+3*C<=42, 1*A+3*B+2*C<=21,

2*A+3*B+4*C<=42};

{1A+6B+3C<=84, 3A+1B+3C<=42, 1A+3B+2C<=21, 2A+3B+4C<=42};

>LPSolve(func, organ, assume={nonnegative, integer}, maximize);

[54., [A=12, B=3, C=0]]

Результаты полностью совпадают с результатами, полученными в Excel.

17.Анализ и решение задач оптимизации плана производства в Maple.

Вид продукции

Время обработки, ч.

Прибыль, у.е.

I

II

III

IV

A

1

3

1

2

3

B

6

1

3

3

6

C

3

3

2

4

4

Пусть время работы на устройствах I, II, III, IV составляет соответственно 84, 42, 21 и 42 часа.

Целевая функция:

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

A, B, C – неотрицательные (> =0)

A, B, C – целочисленные.

Приведем решение в системе Maple:

>restart;

>with(Optimization);

[ImportMPS, Interactive, LPSolve, LSSolve, Maximize, Minimize, NLPSolve, QPSolve]

>func:=3*A+6*B+4*C;

3A+6B+4C

>organ:={1*A+6*B+3*C<=84, 3*A+1*B+3*C<=42, 1*A+3*B+2*C<=21,

2*A+3*B+4*C<=42};

{1A+6B+3C<=84, 3A+1B+3C<=42, 1A+3B+2C<=21, 2A+3B+4C<=42};

>LPSolve(func, organ, assume={nonnegative, integer}, maximize);

[54., [A=12, B=3, C=0]]

14.Ска Maple. Линейная алгебра. Матричные операции.

Основная часть команд для решения задач линейной алгебры содержится в библиотеках linalg и LinearAlgebra. Поэтому перед решением задач с матрицами и векторами следует загрузить эту библиотеку командой with(linalg) и/или with(LinearAlgebra).

Для определения матрицы в Maple можно использовать команду matrix(n, m, [[a11,a12,…,a1n], [a21,a22,…,a2m],…, [an1,an2,…,anm]]), где n - число строк, m – число столбцов в матрице. Эти числа задавать необязательно, а достаточно перечислить элементы матрицы построчно в квадратных скобках через запятую. Например:

>A:=matrix([[1,2,3],[-3,-2,-1]]);

В Maple матрицы специального вида можно генерировать с помощью дополнительных команд. В частности диагональную матрицу можно получить командой diag. Например:

>J:=diag(1,2,3);

Единичную матрицу можно получить используя ключевое слово identity: >E:=Matrix(4,4,shape=identity);

или >E:=array(identity,1..4,1..4):

>E:=evalm(E);

Число строк в матрице А можно определить с помощью команды rowdim(A), а число столбцов – с помощью команды coldim(A).

>rowdim(A);

>coldim(3);

Сложение двух матриц одинаковой размерности осуществляется теми же командами, что и сложение векторов: evalm(A+B) или matadd(A,B).

>A:=matrix([[1,0],[0,-1]]);

>B:=matrix([[-5,1],[7,4]]); >evalm(A+B):

>matadd(A,B);

Произведение двух матриц может быть найдено с помощью двух команд: evalm(A&*B); multiply(A,B).

В качестве второго аргумента в командах, вычисляющих произведение, можно указывать вектор, например:

>A:=matrix([[1,0],[0,-1]]):

>B:=matrix([[-5,1],[7,4]]):

>v:=vector([2,4]);

>multiply(A,v):

>evalm(A&*v);

>multiply(A,B):

>evalm(A&*B);

Команда evalm позволяет также прибавлять к матрице число и умножать матрицу на число. Например:

>C:=matrix([[1,1],[2,3]]);

>evalm(2+3*C);

Создадим квадратную матрицу:

>A:=matrix([[4,0,5],[0,1,-6],[3,0,4]]);

Определитель матрицы А вычисляется командой det(A). >det(A);

Команда minor(A,i,j) возвращает матрицу, полученную из исходной матрицы А вычеркиванием i-ой строки и j-ого столбца.

>minor(A,3,2);

След матрицы А, равный сумме ее диагональных элементов, вычисляется командой trace(A).

>trace(A);

Обратную матрицу А-1 , такую что А-1А=АА-1=Е, где Е - единичная матрица, можно вычислить двумя способами: evalm(1/A) или inverse(A).

>evalm(1/A):

>inverse(A);

Проверка. Должна получиться единичная матрица.

>multiply(A,%);

Транспонирование матрицы А – это замена местами строк и столбцов. Полученная в результате этого матрица называется транспонированной и обозначается А'. Транспонированную матрицу А' можно вычислить командой transpose(A).

>transpose(A);

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]