Fix bug #1848: taytorat leaks internal gensyms from multivar expansions
[maxima.git] / doc / info / pt / simplex.texi
blob15bdeb8c994b345265d87f2b28d3c3a8393880d2
1 @c /simplex.texi/1.2/Mon May 15 07:55:16 2006//
2 @menu
3 * Introdução a simplex::
4 * Definições para simplex::
5 @end menu
7 @node Introdução a simplex, Definições para simplex, simplex, simplex
8 @section Introdução a simplex
10 @code{simplex} é um pacote para optimização linear usando o algoritmo simplex.
12 Exemplo:
14 @c ===beg===
15 @c load("simplex")$
16 @c minimize_sx(x+y, [3*x+2*y>2, x+4*y>3]);
17 @c ===end===
18 @example
19 (%i1) load("simplex")$
20 (%i2) minimize_sx(x+y, [3*x+2*y>2, x+4*y>3]);
21                   9        7       1
22 (%o2)            [--, [y = --, x = -]]
23                   10       10      5
24 @end example
26 @node Definições para simplex,  , Introdução a simplex, simplex
27 @section Definições para simplex
29 @defvr {Variável de opção} epsilon_sx
30 Valor por omissão: @code{10^-8}
32 Epsilon usando para cálculos numéricos em @code{linear_program}.
34 Veja também: @code{linear_program}.
36 @end defvr
38 @deffn {Função} linear_program (@var{A}, @var{b}, @var{c})
40 @code{linear_program} é uma implementação do algoritmo simplex.
41 @code{linear_program(A, b, c)} calcula um vetor @var{x} para o qual @code{c.x} é o mínimo
42 possível entre vetores para os quais @code{A.x = b} e @code{x >= 0}. O argumento
43 @var{A} é uma matriz e os argumentos @var{b} e @var{c} são listas.
45 @code{linear_program} retorna uma lista contendo o vetor minimizado @var{x} e o
46 valor mínimo @code{c.x}. Se o problema for não associado, é retornado "Problem not bounded!" e
47 se o problema for não viável, é retornado "Problem not feasible!".
49 Para usar essa função primeiramente chame o pacote @code{simplex} com @code{load(simplex);}.
51 Exemplo:
53 @c ===beg===
54 @c A: matrix([1,1,-1,0], [2,-3,0,-1], [4,-5,0,0])$
55 @c b: [1,1,6]$
56 @c c: [1,-2,0,0]$
57 @c linear_program(A, b, c);
58 @c ===end===
59 @example
60 (%i2) A: matrix([1,1,-1,0], [2,-3,0,-1], [4,-5,0,0])$
61 (%i3) b: [1,1,6]$
62 (%i4) c: [1,-2,0,0]$
63 (%i5) linear_program(A, b, c);
64                    13     19        3
65 (%o5)            [[--, 4, --, 0], - -]
66                    2      2         2
67 @end example
69 Veja também: @code{minimize_sx}, @code{scale_sx}, e @code{epsilon_sx}.
71 @end deffn
73 @deffn {Função} maximize_sx (@var{obj}, @var{cond}, [@var{pos}])
75 Maximiza a função linear objetiva @var{obj} submetida a alguma restrição linear
76 @var{cond}. Veja @code{minimize_sx} para uma descrição detalhada de argumentos e valores de
77 retorno.
80 Veja também: @code{minimize_sx}.
82 @end deffn
84 @deffn {Função} minimize_sx (@var{obj}, @var{cond}, [@var{pos}])
86 Minimiza uma função linear objetiva @var{obj} submetida a alguma restrição
87 linear @var{cond}. @var{cond} é uma lista de equações lineares ou
88 desigualdades. Em desigualdades estritas @code{>} é  substituido por @code{>=}
89 e @code{<} por @code{<=}. O argumento opcional @var{pos} é uma lista de
90 variáveis de decisão que são assumidas como sendo positivas.
92 Se o mínimo existir, @code{minimize_sx} retorna uma lista que contém
93 o menor valor da função objetiva e uma lista de valores de variáveis de
94 decisão para os quais o mínimo é alcançado. Se o problema for não associado,
95 @code{minimize_sx} retorna "Problem not bounded!" e se o problema for
96 não viável, é retornado "Ploblem not feasible!".
98 As variáveis de decisão não são assumidas para serem não negativas por padrão. Se todas
99 as variáveis de dicisão forem não negativas, escolha @code{nonegative_sx} para @code{true}.
100 Se somente algumas das variáveis de decisão forem positivas, coloque-as então no argumento
101 opcional @var{pos} (note que isso é mais eficiente que adicionar
102 restrições).
104 @code{minimize_sx} utiliza o algoritmo simplex que é implementado na função
105 @code{linear_program} do Maxima.
107 Para usar essa função primeiramente chame o pacote @code{simplex} com @code{load(simplex);}.
109 Exemplos:
111 @c ===beg===
112 @c minimize_sx(x+y, [3*x+y=0, x+2*y>2]);
113 @c minimize_sx(x+y, [3*x+y>0, x+2*y>2]), nonegative_sx=true;
114 @c minimize_sx(x+y, [3*x+y=0, x+2*y>2]), nonegative_sx=true;
115 @c minimize_sx(x+y, [3*x+y>0]);
116 @c ===end===
117 @example
118 (%i1) minimize_sx(x+y, [3*x+y=0, x+2*y>2]);
119                       4       6        2
120 (%o1)                [-, [y = -, x = - -]]
121                       5       5        5
122 (%i2) minimize_sx(x+y, [3*x+y>0, x+2*y>2]), nonegative_sx=true;
123 (%o2)                [1, [y = 1, x = 0]]
124 (%i3) minimize_sx(x+y, [3*x+y=0, x+2*y>2]), nonegative_sx=true;
125 (%o3)                Problem not feasible!
126 (%i4) minimize_sx(x+y, [3*x+y>0]);
127 (%o4)                Problem not bounded!
128 @end example
131 Veja também: @code{maximize_sx}, @code{nonegative_sx}, @code{epsilon_sx}.
133 @end deffn
135 @defvr {Variável de opção} nonegative_sx
136 Valor por omissão: @code{false}
138 Se @code{nonegative_sx} for verdadeiro (true) todas as variáveis de decisão para @code{minimize_sx}
139 e @code{maximize_sx} são assumidas para serem positivas.
141 Veja também: @code{minimize_sx}.
143 @end defvr