Isolar variável de uma fórumula - Ajudem please

35 respostas
A

Estou criando um software financeiro, mas estou empacado num problema matemático.

Nem mesmo nos livros sobre matemática financeira achei solução para o seguinte problema:

f = p*i / (1 - (1+i)^-t)

Como isolar a variável i ?

f = ((p*i) / (1 - (1+i)^-t) )    
        
        
           p * i    
    ------------------    
      1 - (1+i)^(-t)    
        
        
           p * i    
    ----------------------    
        1  -     1    
             --------    
               (1 + i )^t

Já isolei todas as outras com facilidade, tentei inclusive isolar esse i com log, mas não dá assim mesmo. Isso é matemática avançada demais para mim.

Alguém aí com intelecto superior para me ajudar?

35 Respostas

C

putz… coloca parentes na divisão do p*i -> senão vai pensar que é I dividido pelo todo resto…

f = (b[/b] / (1 - (1+i)^-1) )

A

charleston10:
putz… coloca parentes na divisão do p*i -> senão vai pensar que é I dividido pelo todo resto…

f = (b[/b] / (1 - (1+i)^-1) )

Charleston, obrigado por isso, foi muito importante para evitar confusão

Apesar de que

p*i / (1 - (1+i)^-1)

=

((p*i) / (1 - (1+i)^-1) )

=

p* (i / (1 - (1+i)^-1) )

A

Acho (por incrível que pareça) que fica:

i = ( f / p) -1
C

Oxii… nao é não…

Apesar de que

p*i / (1 - (1+i)^-1)

=

((p*i) / (1 - (1+i)^-1) )

=

p* (i / (1 - (1+i)^-1) )

pi / (1 - (1+i)^-1) -> ((pi) / (1 - (1+i)^-1) ) [aqui é igual]

p* (i / (1 - (1+i)^-1) ) é diferente de pi / (1 - (1+i)^-1)
Imaginemos 3
(10/(1+2)^-1) em matemática a primeira conta a ser feita é entre parenteses (10/(1+2)^-1) seria 3*(10/3^-1) = 3*3,33^-1 => 9,99^-1
Da outro resultado…

G

Fui simplificando…
Talvez esteja super errado…
Algum matemático por aí?

f = ((p*i) / (1 - (1+i)^-1) )


       p * i
 ------------------
  1 - (1+i)^(-1)



       p * i
----------------------
    1  -     1
         --------
           1 + i

       p * i
----------------------
  1 + i  -  1
  -----    -----
  1 + i    1 + i


       p * i
----------------------
    1 + i - 1
   -----------
      1 + i



   p * i * (1 + i)
----------------------
         i


f / p = (1 + i)

i = (f / p) - 1
C
//simplificando 
f = ((p*i) / (1 - (1+i)^-1) ) 


p * i 
------------------ 
1 - (1+i)^(-1) 

p * i 
------------------ 
1 - (1+i)^(-1) //corta o 1 pq 1-1 = 0 

p * i 
------------------ // p*i / i elevado a potencia de -1 -obs: i^-1 é zero.. todo numero elevado a 1 ou-1 
i^(-1) 

//formula pronta 
******************** 
P*I 
*******************
R
gmoenik:
Fui simplificando.... Talvez esteja super errado.... Algum matemático por aí?
f = ((p*i) / (1 - (1+i)^-1) )


       p * i
 ------------------
  1 - (1+i)^(-1)



       p * i
----------------------
    1  -     1
         --------
           1 + i

       p * i
----------------------
  1 + i  -  1
  -----    -----
  1 + i    1 + i


       p * i
----------------------
    1 + i - 1
   -----------
      1 + i



   p * i * (1 + i)
----------------------
         i


f / p = (1 + i)

i = (f / p) - 1

Bom, eu não encontrei nenhum erro não. Me parece correto.

R
charleston10:
//simplificando   
  
p * i   
------------------   
1 - (1+i)^(-1) //corta o 1 pq 1-1 = 0

Isso tá errado, a expressão (1+i)^-1 está toda elevada a -1, você não pode fazer essa subtração.

C

charleston10 wrote:
view plaincopy to clipboardprint?
//simplificando

p * i

1 - (1+i)^(-1) //corta o 1 pq 1-1 = 0

Isso tá errado, a expressão (1+i)^-1 está toda elevada a -1, você não pode fazer essa subtração.

Posso sim, pq nao estou subtraindo o valor da potencia… rsrs pense comigo…

1 - (1+i)^(-1) = 1-1+i^-1 -> a variavel i tem um valor somando entao eu posso subtrair com o outro 1 da frente, sendo que tem um sinal de subtração… ou seja, todo numero que esta atras da subtração eu subtraio com q esta na frente, logo subtraio com o 1 que esta somando com o i… que nao tem importancia…

A

Affff que droga !! Desculpem o palavreado... mas estava errado a fórmula que passei, mil desculpas.

f = p*i / (1 - (1+i)^-1) <-- errado

f = p*i / (1 - (1+i)^-t) <-- certo

Ou seja, o expoente é uma incógnita (-t) e não (-1)

Aproveitando a simplicação do rmendes08:

f = ((p*i) / (1 - (1+i)^-t) )  
  
  
       p * i  
------------------  
  1 - (1+i)^(-t)  
  
  
       p * i  
----------------------  
    1  -     1  
         --------  
           (1 + i )^t
C

kkkkkkkk

estranhei pq… base elevado a potencia a 1 ou-1 é 0…

G

charleston10:
kkkkkkkk

estranhei pq… base elevado a potencia a 1 ou-1 é 0…

Só para tira teima…

X^0 = 1 //Qualquer numero elevado a zero é igual a 1.

X^1 = X //Qualquer numero elevado a 1 é igual a ele mesmo.

X^(-n) = 1/(X^n)  //Um teorema. nao sei de onde vem ao certo mas. Numero elevado negativamente igual seu inverso. (mas nao pode esquecer a ordem n)
A

charleston10:
kkkkkkkk

estranhei pq… base elevado a potencia a 1 ou-1 é 0…

Elevar a 1 não muda em nada, a -1 inverte-se numerador e denominador.

R

charleston10:
charleston10 wrote:
view plaincopy to clipboardprint?
//simplificando

p * i

1 - (1+i)^(-1) //corta o 1 pq 1-1 = 0

Isso tá errado, a expressão (1+i)^-1 está toda elevada a -1, você não pode fazer essa subtração.

Posso sim, pq nao estou subtraindo o valor da potencia… rsrs pense comigo…

1 - (1+i)^(-1) = 1-1+i^-1 -> a variavel i tem um valor somando entao eu posso subtrair com o outro 1 da frente, sendo que tem um sinal de subtração… ou seja, todo numero que esta atras da subtração eu subtraio com q esta na frente, logo subtraio com o 1 que esta somando com o i… que nao tem importancia…

Cara, você não pode fazer isso! Quando você coloca uma expressão entre parênteses e eleva a uma potência, você não pode tirar nenhum fator de dentro dela. Você mesmo disse, operações entre parênteses precisam ser feitas antes. Veja só:

Segundo você:

1 - (1+i)^(-1)  = 1 -1 + i^ -1

Generalizando:

c - (a + b)^n = c - a + b^n   //(1)

Então:

-(a+b)^n = -a + b^n

a - b^n = (a + b)^n

a = (a + b)^n + b^n

Agora, se a hipótese (1) é verdadeira, então eu também posso fazer:

a = a + b^n + b^n

a = a + 2b^n  //válido se e somente se b = 0

De fato, 

1 - (1 + 0)^-1 = 1 - 1 + 0^-1

1 - (1)^-1 = 1 - 1 

1 - 1 = 1 -1 

0 = 0 // OK

Agora, para qualquer i <> 0 a coisa não funciona:

1 - (1 + 2)^-1 = 1 - 1 + 2^-1

1 - (3)^-1 = 2^-1

1 - 1/3 = 1/2

2/3 = 1/2

2 * 2 = 3 * 1

4 = 3 (absurdo)
R

charleston10:
kkkkkkkk

estranhei pq… base elevado a potencia a 1 ou-1 é 0…

Tá errado!

b^1 = b, b^-1 = 1/b

http://www.brasilescola.com/matematica/potenciacao-numeros-reais.htm

C

kkkkkkkkkkkk pegaram eu pra Cristo agora…

A

Vamos esperar pelo herói que vai isolar a variável i !

L

Isso parece cair em um polinomio de grau t+1

f=(p*i)/(1-(1+i)^t)

//vou substituir i+1 por a: a=i+1

f=[p*(a-1)]/[1-a^-t]
f-f(a^-t) = pa-p
pa+f(a^-t) = p+f
//multiplicando tudo por a^t:
pa^(t+1) - (p+f)a^t + f = 0
// se conseguir encontrar a solução disso basta fazer:
i = a-1
R

Em um livro de matemática financeira que li, do Samanez, ele aconselha o uso de interpolação linear para o cálculo da TIR, que possui semelhanças com a fórmula que você postou (o expoente “chato”). A desvantagem é que a interpolação dá apenas uma aproximação.

Acabei encontrando um material da Faculdade Objetivo (não sei se é boa, mas a explicação é didática) sobre o cálculo da TIR. Talvez te sirva de alguma coisa:
http://www.faculdadeobjetivo.com.br/arquivos/MetodoManual.pdf

A

Luiz Augusto Prado:
Isso parece cair em um polinomio de grau t+1

f=(p*i)/(1-(1+i)^t)

//vou substituir i+1 por a: a=i+1

f=[p*(a-1)]/[1-a^-t]
f-f(a^-t) = pa-p
pa+f(a^-t) = p+f
//multiplicando tudo por a^t:
pa^(t+1) - (p+f)a^t + f = 0
// se conseguir encontrar a solução disso basta fazer:
i = a-1


Não consegui. Usando esse artifício, cheguei nisso:

f/v = (a^(a+1) - 1)/(a^t -1)

Por logaritmo cheguei nisso:

log(a)[log(f) - t*log(a) - t*Log(p)] = log(f) - log(f)*log(p)

Se não fosse o " t*log(a) ", consguiria resolver … :frowning:

A

Tentando por logaritmo cheguei nisso:

log(f)*log(i)*log(p) - t(log(1)*log(i)*log(i)*log(p) = log(f)

Até fiquei feliz quando cheguei nisso:

Ia dar certo o caso o quadrado de log(i) tivesse propriedade determinante.

V

O próprio texto diz o que te falei em outro tópico: Não se resolve esse tipo de problema de forma algébrica.

Procure por métodos numéricos se você pretende continuar estudando computação financeira. Eles só são uma maneira de fazer o computador fazer o processo de tentativa e erro, que levaria tempo demais para um ser humano fazer.

M

Seu problema não me parece ser possível de ser resolvido analiticamente. Destrinchando a expressão, cheguei na seguinte fórmula:

Aplicar logarítmos na expressão não vai reduzir a expressão a nenhum formato interessante, por causa do denominador, já que você terá o logarítmo de uma substração, e não tem nenhuma propriedade para isso.
Você deve procurar algum método numérico para resolver isso. Como está desenvolvendo um software, uma solução numérica parece adequada ao caso.

L

Antropan:
Luiz Augusto Prado:
Isso parece cair em um polinomio de grau t+1

f=(p*i)/(1-(1+i)^t)

//vou substituir i+1 por a: a=i+1

f=[p*(a-1)]/[1-a^-t]
f-f(a^-t) = pa-p
pa+f(a^-t) = p+f
//multiplicando tudo por a^t:
pa^(t+1) - (p+f)a^t + f = 0
// se conseguir encontrar a solução disso basta fazer:
i = a-1


Não consegui. Usando esse artifício, cheguei nisso:

f/v = (a^(a+1) - 1)/(a^t -1)

Por logaritmo cheguei nisso:

log(a)[log(f) - t*log(a) - t*Log(p)] = log(f) - log(f)*log(p)

Se não fosse o " t*log(a) ", consguiria resolver … :frowning:

Não amigo. Quando vc cai em equações de graus maiores que 4, não tem como resolver utilizando formulas (nem baskara ou tartaglia irão lhe ajudar).
Uma sugestão pra vc resolver este problema é interpolação, como o amigo acima já informou.
Para equações de graus maiores que 4 não existem formulas de solução.
veja este vídeo. Com certeza ele pode lhe ajudar:

[youtube]http://www.youtube.com/watch?v=_-lteSa91PU[/youtube]

Interpolação de newton

Sucesso!

R

Luiz Augusto Prado:

Não amigo. Quando vc cai em equações de graus maiores que 4, não tem como resolver utilizando formulas (nem baskara ou tartaglia irão lhe ajudar).

Sucesso!

É possível resolver algumas equações de grau acima de 2. Exemplos:

x^3 + x^2 + x = 0

posso colocar x em evidência:

x*(x^2 + x + 1) = 0

Dessa forma, já sei que uma raiz é x = 0. Para achar as outras duas, basta resolver a equação de segundo grau dentro do parênteses.

Há ainda casos de equações de terceiro grau sem raízes imaginárias, onde é possível descobrir uma das raízes e chegar a uma equação de segundo grau com Briot Ruffini.

Há ainda casos em que é possível resolver por substituição. Ex:

x^4 - x^2 + 5 = 0

posso substituir x^2 por t, ficando:

t^2 - t + 5 = 0

Só resolver essa equação de segundo grau para achar os "t"s e depois resolver, para cada t, x = ±(t)^(1/2)

L

Isso não é possivel para o caso dele.

Se ele tiver trabalhando com tempo t<=3, poderá aplicar baskara ou tartáglia. Mas passando disso, a melhor forma é interpolação.
Veja que o t não é fixo e pode assumir qualquer valor. Se t<=3, que existe formula. Se t>=4 não existe formula.

// caso dele:
p[a^(t+1)] - (p+f)[a^t] + f = 0  

// supondo que t=7 teriamos esta formula pra resolver:
p[a^8]  - (p+f)[a^7] + f = 0  

// não é possivel por 'a' em evidência. 
// para t>1, não é possivel resolver por substituição, porque os graus do 1º e 2º termos nunca serão multiplos entre si. 

// se t=1 baskara
// se 1<t><=3 tartáglia
// se t>=4 interpolação
M
Luiz Augusto Prado:
regis_hideki:
É possível resolver algumas equações de grau acima de 2. Exemplos: x^3 + x^2 + x = 0 posso colocar x em evidência: x*(x^2 + x + 1) = 0 Dessa forma, já sei que uma raiz é x = 0. Para achar as outras duas, basta resolver a equação de segundo grau dentro do parênteses. Há ainda casos de equações de terceiro grau sem raízes imaginárias, onde é possível descobrir uma das raízes e chegar a uma equação de segundo grau com Briot Ruffini. Há ainda casos em que é possível resolver por substituição. Ex: x^4 - x^2 + 5 = 0 posso substituir x^2 por t, ficando: t^2 - t + 5 = 0 Só resolver essa equação de segundo grau para achar os "t"s e depois resolver, para cada t, x = +-(t)^(1/2)

Isso não é possivel para o caso dele.

Se ele tiver trabalhando com tempo t<=3, poderá aplicar baskara ou tartáglia. Mas passando disso, a melhor forma é interpolação.
Veja que o t não é fixo e pode assumir qualquer valor. Se t<=3, que existe formula. Se t>=4 não existe formula.

// caso dele:
p[a^(t+1)] - (p+f)[a^t] + f = 0  

// supondo que t=7 teriamos esta formula pra resolver:
p[a^8]  - (p+f)[a^7] + f = 0  

// não é possivel por 'a' em evidência. 
// para t>1, não é possivel resolver por substituição, porque os graus do 1º e 2º termos nunca serão multiplos entre si. 

// se t=1 baskara
// se 1<t><=3 tartáglia
// se t>=4 interpolação

A equação não é em t, é em i. Acho que vocês esqueceram desse fato.
O problema não possui solução analítica, somente solução numérica.

L

Sim, é em i e é o que quero dizer. T é um parametro necessário para encontrar i.
Recomendo ler todo o post.

R
Luiz Augusto Prado:
regis_hideki:
É possível resolver algumas equações de grau acima de 2. Exemplos: x^3 + x^2 + x = 0 posso colocar x em evidência: x*(x^2 + x + 1) = 0 Dessa forma, já sei que uma raiz é x = 0. Para achar as outras duas, basta resolver a equação de segundo grau dentro do parênteses. Há ainda casos de equações de terceiro grau sem raízes imaginárias, onde é possível descobrir uma das raízes e chegar a uma equação de segundo grau com Briot Ruffini. Há ainda casos em que é possível resolver por substituição. Ex: x^4 - x^2 + 5 = 0 posso substituir x^2 por t, ficando: t^2 - t + 5 = 0 Só resolver essa equação de segundo grau para achar os "t"s e depois resolver, para cada t, x = +-(t)^(1/2)

Isso não é possivel para o caso dele.

Se ele tiver trabalhando com tempo t<=3, poderá aplicar baskara ou tartáglia. Mas passando disso, a melhor forma é interpolação.
Veja que o t não é fixo e pode assumir qualquer valor. Se t<=3, que existe formula. Se t>=4 não existe formula.

// caso dele:
p[a^(t+1)] - (p+f)[a^t] + f = 0  

// supondo que t=7 teriamos esta formula pra resolver:
p[a^8]  - (p+f)[a^7] + f = 0  

// não é possivel por 'a' em evidência. 
// para t>1, não é possivel resolver por substituição, porque os graus do 1º e 2º termos nunca serão multiplos entre si. 

// se t=1 baskara
// se 1<t><=3 tartáglia
// se t>=4 interpolação

É que pensei que você estava afirmando o caso geral, e não especificamente o do tópico., por isso resolvi complementar.

M

Luiz Augusto Prado:
matheuslmota:

A equação não é em t, é em i. Acho que vocês esqueceram desse fato.
O problema não possui solução analítica, somente solução numérica.

Sim, é em i e é o que quero dizer. T é um parametro necessário para encontrar i.
Recomendo ler todo o post.

Perceba que t é o tempo, já que se trata de uma fórmula financeira, o que quer dizer que ele irá variar de 0 até qualquer valor. Sua abordagem de equacionar i em função de t só terá sucesso para t <= 4.

Bom, dada a situação, só existem duas formas de resolver o problema dele.

  1. Partir para uma solução numérica
  2. Usar outra equação que caracterize i. Como é um problema financeiro, existem várias fórmulas que relacionam os parâmetros básicos (tempo, juros, montante inicial etc.). Usando outra equação, talvez se possa obter i de uma forma mais simples.

Talvez o autor do tópico pudesse dar mais detalhes do que ele está tentando fazer com essa fórmula, para que nós possamos ajudá-lo a pensar em uma solução alternativa.

L

Sim, vc está certo em sua complementação.

L

matheuslmota:

Talvez o autor do tópico pudesse dar mais detalhes do que ele está tentando fazer com essa fórmula, para que nós possamos ajudá-lo a pensar em uma solução alternativa.

Ele quer isolar i… fica subentendido que ele possui todos os outros parametros (incluindo t) e que ele quer encontrar o valor de i.

M

Luiz Augusto Prado:
matheuslmota:

Talvez o autor do tópico pudesse dar mais detalhes do que ele está tentando fazer com essa fórmula, para que nós possamos ajudá-lo a pensar em uma solução alternativa.

Ele quer isolar i… fica subentendido que ele possui todos os outros parametros (incluindo t) e que ele quer encontrar o valor de i.

Pois é cara, mas é porque não me pareceu que todos os parâmetros são constantes e ele apenas quer determinar i. Parece que ele tem algo como i em função de t, por exemplo.

L

matheuslmota:

Pois é cara, mas é porque não me pareceu que todos os parâmetros são constantes e ele apenas quer determinar i. Parece que ele tem algo como i em função de t, por exemplo.

Entendi o que vc tá falando. Eu elaborei a equação supondo que ele já tem os parametros t, p e f. Nesse caso a solução é a raiz da equação, se existir, subtraido de 1.

// polinomio que cheguei:
pa^(t+1) - (p+f)a^t + f = 0 
// lembrando que o i=a-1

//isolar o x supondo a equação abaixo:
ax² + bx + c = 0
ax² + bx = -c
4a²x² + 4abx +  =  - 4ac
(2ax + b)² =  -4ac
2ax + b = (+ou-) raiz( -4ac)
2ax  = -b (+ou-) raiz( -4ac)
x  = [-b (+ou-) raiz( -4ac)]/2a  //  <== é a raiz da equação supondo que temos os parametros a, b e c
A

matheuslmota:
Luiz Augusto Prado:
matheuslmota:

A equação não é em t, é em i. Acho que vocês esqueceram desse fato.
O problema não possui solução analítica, somente solução numérica.

Sim, é em i e é o que quero dizer. T é um parametro necessário para encontrar i.
Recomendo ler todo o post.

Perceba que t é o tempo, já que se trata de uma fórmula financeira, o que quer dizer que ele irá variar de 0 até qualquer valor. Sua abordagem de equacionar i em função de t só terá sucesso para t <= 4.

Bom, dada a situação, só existem duas formas de resolver o problema dele.

  1. Partir para uma solução numérica
  2. Usar outra equação que caracterize i. Como é um problema financeiro, existem várias fórmulas que relacionam os parâmetros básicos (tempo, juros, montante inicial etc.). Usando outra equação, talvez se possa obter i de uma forma mais simples.

Talvez o autor do tópico pudesse dar mais detalhes do que ele está tentando fazer com essa fórmula, para que nós possamos ajudá-lo a pensar em uma solução alternativa.

A fórmula que passei é de financiamento com tabela price. No meu programa, o usuáirio quer achar o juros (variável i) quando já se tem todas as outras variáveis. Acho que não há outra fórmula já que é específica pra tabela price, ou talvez tenha uma outra arternativa?

Obrigado a todos pelas respostas, vou tentar resolver com interpolação e avaliação numérica como foi sugerido.

Criado 9 de novembro de 2012
Ultima resposta 12 de nov. de 2012
Respostas 35
Participantes 10