Специальные методы вычислений при помощи пакета Maple

Автор работы: Пользователь скрыл имя, 19 Мая 2014 в 04:32, курсовая работа

Краткое описание

Для управляющих предприятиями важно знать теорию и владеть практическими навыками в расчетах. За счет развития наук и техники сейчас все расчеты занимают меньше времени нежели ранее. Сильная продвинутость математических теорий (линейная алгебра, математический анализ, теория вероятностей, корреляционный и регрессионный анализ, дифференциальные уравнения и т.д.) предоставляет к нашим услугам очень мощный и развитый математический аппарат.

Вложенные файлы: 1 файл

специальные методы вычислений при помощи пакета Maple.doc

— 503.50 Кб (Скачать файл)

> subs([x=0,y=1],f);

-1

Таким образом, функция имеет следующие локальные экстремумы: fmax=f(0,0)=0 и fmin =f =f =- 9/8.

2.Найти наибольшее и наименьшее значения функции в прямоугольнике x=0, y=0, x=1, y=2.

Замечание: заданную область удобнее записывать в виде неравенств: 0<x<1, 0<y<2.

> restart: readlib(maximize):readlib(minimize):

> f:=x^2+2*x*y-4*x+8*y:

> maximize(f,{x,y},{x=0..1,y=0..2});

17

> minimize(f,{x,y},{x=0..1,y=0..2});

-4

 

Таким образом, функция имеет наибольшее значение fmax=17 и наименьшее значение fmin=- 4.

3.Найти условные экстремумы функции f(х,у)=xy+yz при x2+y2=2, y+z=2, x>0, y>0, z>0.

> restart: readlib(extrema): f:=x*y+y*z:

> assume(x>0);assume(y>0);assume(z>0);

> simplify(extrema(f,{x^2+y^2=2,y+z=2},{x,y,z},'s'));

 

Несмотря на предварительное использование команды упрощения выражения simplify, полученный результат имеет не аналитический вид, однако это можно исправить, если воспользоваться командой convert.

> convert(%,radical);

{min

, max
}

> convert(s,radical);

{{x~=1,z~=1,y~=1},{x~=-1,z~=1,y~=1},

{x~=

, y~ =
, z~=
}

В этом случае команда extrema сама определила характер экстремумов, однако, в каких точках функция имеет экстремумы, можно определить подстановкой.

> subs(s[1],f);

2

> subs(s[2],f);

0

> subs(s[3],f):convert(%,radical):simplify(%);

Таким образом, функция имеет следующие условные экстремумы: fmax=f(1,1,1)=2 и fmin=f(- 1,1,1)=0; третья критическая точка является седловой.

 

4. При каких значениях  переменных функция f(x,y,z)=- x+2y+3z имеет максимум, если требуется выполнение условий x+2y- 3zЈ 4, 5x- 6y+7zЈ 8, 9x+10zЈ 11, а все переменные неотрицательные?

> restart: with(simplex):

Warning, new definition for maximize

Warning, new definition for minimize

> f:=-x+2*y+3*z:

> cond:={x+2*y-3*z<=4, 5*x-6*y+7*z<=8, 9*x+10*z<=11}:

> maximize(f,cond,NONNEGATIVE );

{x=0, y=

, z=
}

 

3.3 Интегрирование

 

Аналитическое и численное интегрирование.

Неопределенный интеграл вычисляется с помощью 2-х команд:

  1. прямого исполнения – int(f, x), где f – подынтегральная функция, x – переменная интегрирования;
  2. отложенного исполнения – Int(f, x) – где параметры команды такие же, как и в команде прямого исполнения int. Команда Int выдает на экран интеграл в аналитическом виде математической формулы.

Для вычисления определенного интеграла в командах int и Int добавляются пределы интегрирования, например,

> Int((1+cos(x))^2, x=0..Pi)=int((1+cos(x))^2, x=0..Pi);

Если в команде интегрирования добавить опцию continuous: int(f, x, continuous), то Maple будет игнорировать любые возможные разрывы подынтегральной функции в диапазоне интегрирования. Это позволяет вычислять несобственные интегралы от неограниченных функций. Несобственные интегралы с бесконечными пределами интегрирования вычисляются, если в параметрах команды int указывать, например, x=0..+infinity.

Численное интегрирование выполняется командой evalf(int(f, x=x1..x2), e), где e – точность вычислений (число знаков после запятой).  

 

Интегралы, зависящие от параметра. Ограничения для параметров.

Если требуется вычислить интеграл, зависящий от параметра, то его значение может зависеть от знака этого параметра или каких-либо других ограничений. Рассмотрим в качестве примера интеграл , который, как известно из математического анализа, сходится при а>0 и расходится при а<0. Если вычислить его сразу, то получится:

> Int(exp(-a*x),x=0..+infinity)=int(exp(-a*x),x=0..+infinity);

.

Таким способом интеграл с параметром не вычислить. Для получения явного аналитического результата вычислений следует сделать какие-либо предположения о значении параметров, то есть наложить на них ограничения. Это можно сделать при помощи команды assume(expr1), где expr1 – неравенство. Дополнительные ограничения вводятся с помощью команды additionally(expr2), где expr2 – другое неравенство, ограничивающее значение параметра с другой стороны.

После наложения ограничений на параметр Maple добавляет к его имени символ (~), например параметр a, на который были наложены некоторые ограничения, в сроке вывода будет иметь вид: a~.

Описание наложенных ограничений параметра a можно вызвать командой about(a). Пример: наложить ограничения на параметр a такие, что a>-1, a< 3:

 

> assume(a>-1); additionally(a<=3);

> about(a);

Originally a, renamed a~:

is assumed to be: RealRange(Open(-1),3)

 

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

> assume(a>0);

> Int(exp(-a*x),x=0..+infinity)=int(exp(-a*x),x=0..+infinity);

Основные методы интегрирования.

В Maple имеется пакет student, предназначенный для обучения математике. Он содержит набор подпрограмм, предназначенных для выполнения расчетов шаг за шагом, так, чтобы была понятна последовательность действий, приводящих к результату. К таким командам относятся интегрирование по частям inparts и замена переменной changevar.

Формула интегрирования по частям:

Если обозначить подынтегральную функцию f=u(x)v’(x), то параметры команды интегрирования по частям такие: intparts(Int(f, x), u), где u – именно та функция u(x), производную от которой предстоит вычислить по формуле интегрирования по частям.

Если в интеграле требуется сделать замену переменных x=g(t) или t=h(x), то параметры команды замены переменных такие: changevar(h(x)=t, Int(f, x), t), где t - новая переменная.

Обе команды intparts и changevar не вычисляют окончательно интеграл, а лишь производят промежуточную выкладку. Для того, чтобы получить окончательный ответ, следует, после выполнения этих команд ввести команду value(%); где % - обозначают предыдущую строку.

Не забудьте, перед использованием описанных здесь команд обязательно загрузить пакет student командой with(student).

 

  1. Найти неопределенные интегралы: а) ;

б) .

> Int(cos(x)*cos(2*x)*cos(3*x),x)=int(cos(x)*cos(2*x)*cos(3*x), x);

 

 

> Int((3*x^4+4)/(x^2*(x^2+1)^3),x)= int((3*x^4+4)/(x^2*(x^2+1)^3),x);

 

 

  1. Найти определенный интеграл , при условии a>0, b>0.

> assume (a>0); assume (b>0);

>Int(sin(x)*cos(x)/(a^2*cos(x)^2+b^2*sin(x)^2),x=0..Pi/2)=int(sin(x)*cos(x)/(a^2*cos(x)^2+b^2*sin(x)^2),x=0..Pi/2);

 

 

  1. Найти несобственный интеграл , при a>-1

> assume(a>-1);

> Int((1-exp(-a*x^2))/(x*exp(x^2)), x=0..+infinity)=int((1-exp(-a*x^2))/(x*exp(x^2)), x=0..+infinity);

 

  1. Численно найти интеграл

> Int(cos(x)/x, x=Pi/6..Pi/4)=evalf(int(cos(x)/x, x=Pi/6..Pi/4), 15);

 

  1. Полностью проделать все этапы вычисления интеграла по частям.

> restart; with(student): J=Int(x^3*sin(x),x);

> J=intparts(Int(x^3*sin(x),x),x^3);

> intparts(%,x^2);

> intparts(%,x);

> value(%);

  1. Вычислить интеграл с помощью универсальной подстановки .

> J=Int(1/(1+cos(x)), x=-Pi/2..Pi/2);

> J=changevar(tan(x/2)=t,Int(1/(1+cos(x)), x=-Pi/2..Pi/2), t);

> value(%);

J=2

 

3.4 Решение задач линейного  программирования с помощью программы MAPLE

Задачи линейного программирования решаются встроенными функциями minimize и maximize, входящими в пакет simplex, вызываемый обычным образом:

> with(simplex);

[basis, convexhull, cterm, define_zero, display, dual, feasible, maximize, minimize, pivot,

pivoteqn, pivotvar, ratio, setup, standardize]

Вызов пакета обязателен, так как входящие в ядро системы Maple встроенные функции minimize и maximize отличаются от рассматриваемых наборами параметров.

Будем придерживаться такой конструкции:

minimize(целевая функция, {ограничения}, NONNEGATIVE).

Последний параметр показывает, что входящие переменные неотрицательны. Соответственно в такой конструкции включать условия неотрицательности переменных в ограничения не надо.

 

3.5 Примеры решения транспортных  задач в MAPLE

На складах хранится единиц одного и того же груза, соответственно. Требуется доставить его трем потребителям , заказы которых составляют единиц груза, соответственно. Стоимости перевозки единиц -го склада -му потребителю указаны в левых верхних углах клеток транспортной таблицы:

 

 

4

2

6

7

5

3

1

7

6


 

    1. Установить, является ли модель транспортной задачи, заданная таблицей, открытой или закрытой. Если модель является открытой, то ее необходимо закрыть.
    2. Составить план перевозок, обеспечивающий минимальную стоимость перевозок.
    3. Найти минимальную стоимость перевозок.

Решение. 1. Суммарные запасы груза 420, а суммарные потребности 370. Следовательно, задача является задачей открытого типа и ее необходимо закрыть, вводя фиктивного потребителя с потребностями 50 единиц груза, при нулевых стоимостях перевозок. Приходим к задаче:

 

4

2

6

0

7

5

3

0

1

7

6

0


 

2. Задаем матрицу перевозок, матрицу  стоимостей и целевую функцию:

> x:=matrix(3,4);

> C:=matrix([[4,2,6,0],[7,5,3,0],[1,7,6,0]]);

> z:=sum(sum(C[i,j]*x[i,j],i=1..3),j=1..4);

Решаем задачу линейного программирования:

> with(simplex);

[basis, convexhull, cterm, define_zero, display, dual, feasible, maximize, minimize, pivot,

pivoteqn, pivotvar, ratio, setup, standardize]

> minimize(z,{sum(x[1,j],j=1..4)=100,sum(x[2,j],j=1..4)=200,

sum(x[3,j],j=1..4)=120,sum(x[i,1],i=1..3)=190,sum(x[i,2],i=1..3)=120,sum(x[i,3],i=1..3)=60,sum(x[i,4],i=1..3)=50},NONNEGATIVE);

         

Матричный вид полученного решения:

> V:=([[0|100|0|0], [70|20|60|50], [120|0|0|0]]);

 

 

3. Минимальная стоимость перевозок:

 

> add(add(C[i,j]*V[i,j],i=1..3),j=1..4);

 

1090

 

Ответ: 1090, план перевозок

.

Если убрать требование перехода к задаче закрытого типа, то решение будет иметь вид:

> x:=matrix(3,3);

> C:=([[4 | 2 | 6], [7 | 5 | 3], [1 | 7 | 6]]);

> z:=add(add(C[i,j]*x[i,j],i=1..3),j=1..3);

> with(simplex):

> minimize(z,{sum(x[1,j],j=1..3)<=100,sum(x[2,j],j=1..3)<=200,

sum(x[3,j],j=1..3)<=120,sum(x[i,1],i=1..3)=190,sum(x[i,2],i=1.. 3)=120,sum(x[i,3],i=1..3)=60},NONNEGATIVE);

Рассмотрим транспортную задачу с ограничениями на пропускные способности.

Решить транспортную задачу по следующим исходным данным:

 

Символ ∞ в матрице указывает, что для данной коммуникации нет ограничений по пропускной способности.

Решение.

> x:=matrix(3,4);

 

> C:=matrix([[9,5,3,10],[6,3,3,2],[3,8,4,8]]);

 

> z:=sum(sum(C[i,j]*x[i,j],i=1..3),j=1..4);

 

> with(simplex);

[basis, convexhull, cterm, define_zero, display, dual, feasible, maximize, minimize, pivot,

pivoteqn, pivotvar, ratio, setup, standardize]

> minimize(z,{sum(x[1,j],j=1..4)=25,sum(x[2,j],j=1..4)=55,

sum(x[3,j],j=1..4)=20,sum(x[i,1],i=1..3)=45,sum(x[i,2],i=1..3)=

15,sum(x[i,3],i=1..3)=20,sum(x[i,4],i=1..3)=20,x[1,3]<=15,x[2,1]<=15,x[2,4]<=10},NONNEGATIVE);

Ответ: план перевозок

Транспортной задачей с фиксированными доплатами называется транспортная задача, в которой дополнительно задана матрица доплат dij за проезд от i-го поставщика к j-му потребителю и требуется минимизировать суммарные расходы. Математическая модель задачи:

    

Пусть числовые данные задачи:

Ввод данных:

> c:=([[7 | 5 | 12] , [4 | 6 | 8] , [10 | 9 | 6]]);

Информация о работе Специальные методы вычислений при помощи пакета Maple