|
Para resolver equações de diferenças, você tem que chamar o pacote differ.mac. Você faz isso com o seguinte comando:
batch(differ);
Você verá uma mensagem dizendo a você que esse pacote redefine o sistema funcional do Maxima. Isso é uma surpresa, mas para a maioria das aplicações isso não causará problemas.
A função para resolver uma equação de diferença ou um sistema de equações de diferença é difference, e é chamada com dois argumentos. O primeiro argumento é ou a equação de diferença ou uma lista de equações de diferença; o segundo argumento é ou a desconhecida ou uma lista de desconhecidas.
deq1: g[n+1] = g[n]*3/2;
3 g
n
(%o19) g = ----
n + 1 2 difference (deq1, g[n]); n
g 3
0
(%o20) g = -----
n n
2
**
(%i27) deq2: h[n+2]=h[n + 1]*2 + 3*h[n];
(%o27) h = 2 h + 3 h
n + 2 n + 1 n
(%i28) sol: difference(deq2, h[n]);
3 h 3 h
1 0 n
(---- + ----) 3 h 3 h
4 4 1 0 n
(%o28) h = ---------------- - (-- - ----) (- 1)
n 3 4 4
Para obter uma expressão para um dado valor de n, e.g para 5, você pode avaliar:
ev(sol, n = 5);
A mesma função
A função difference não é muito flexível, para usá-la, você tem que concordar com essas regras:
Economistas usam duas aprocimaços essencialmente diferentes para escolher modelos de processos econômicos:
Um modelo muito simples:
eq1: y[t + 1] = z[t];
eq2: z[t]=c[t] + i[t];
eq3: c[t]=c*y[t];
eq4: i[t]=a;
eliminate([eq1, eq2, eq3, eq4], [ z[t], c[t], i[t]]);
[y - c y - a]
t + 1 t result: difference (first(%), y[t]); t
t a (c - 1)
y = y c + ----------
t 0 c - 1
As letras do modelo seguem convenções estabelecidas da teoria de macro-economia. Os significados são:
O modelo assume um investimento constante, e um consumo que é proporcional à entrada. A equação eq2 estabelece que a demanda total é o somatório do consumo e do investimento, eq1 é também algo presumido, nomeadamente que a entrada do período t se iguada ao total da demanda do período anterior t-1. (as despesas de um período são a entrada disponível para o próximo período. (Essa suposição prévia postula um sistema inteiramente fechado.)
Podemos imediatamente explorar o resultado:
(%i25) assume (c < 1);
(%o25) [c < 1] (%i26) limit(result, t, inf); Is abs(c) - 1 positive, negative, or zero? negative; Is c positive, negative, or zero? positive; Is y positive, negative, or zero?
0 positive; Is a positive, negative, or zero? positive; a
limit y = - -----
t -> inf t c - 1
|