Juros compostos usando bc

Publicado por Augusto 05/02/2006

[ Hits: 8.566 ]

Download jrcomp.Ah




um scriptzinho bem simples para o cálculo de juros usando o comando linguagem bc,...

sintese:         M=C(1+T)^i
              jrcomp.Ah <M> <C> <T> <i>
              entre com os valores conhecidos e x para o valor a ser cálculado,...
     No próprio script tem + info,...

  bjunda a tds,.

  



Esconder código-fonte

#!/bin/bash
# cálculo de juros composto usando bc


# Cálculo do Montante

# M = C (1+T)^i

# Cálculo do Capital

# C = M / (1+T)^i

# Cálculo da Taxa

# Acompanhe o raciocínio

# M = C (1+T)^i
# M/C = (1+T)^i
# ln(M/C) = ln((1+T)^i)
# ln(M/C) = i ln(1+T) # Eq (I)
# ln(M/C)/i = ln(1+T)
# ln(1+T) = ln(M/C)/i
# 1+T = e^(ln(M/C)/i)

# T = e^(ln(M/C)/i) - 1

# Cálculo do índice

# da Eq (I) temos:
# ln(M/C) = i ln(1+T) de onde teremos:
# i ln(1+T) = ln(M/C)
# i = ln(M/C)/ln(1+T)

# função

Sintase-f () {
        echo "Sintase jrcomp.Ah <M>  <C>  <T>  <i>"
        echo "onde: M = C (1+T)^i"
        echo "coloque todos os três valores conhecidos e x para o valor a ser calculado."
        echo Formato
        echo "M e C XX.XX - valor de moeda"
        echo "T XX - em percentual com ponto como divisor decimal"
        echo "i XX - número natural"
        echo
}


# setando as váriáveis caso os valores existam.

M=$1
C=$2
T=$3
i=$4

if [ -z $1 ]  # -z indica que $1 é nulo
    then
        Sintase-f
        echo "por favor informe o montante(M)"
        read M
fi

if [ -z $2 ]
    then
        Sintase-f
        echo "M=$M"
        echo
        echo "por favor informe o capital(C)"
        read C
fi

if [ -z $3 ]
    then
        Sintase-f
        echo "M=$M"
        echo "C=$C"
        echo
        echo "por favor informe a taxa(T)"
        read T
        echo
fi

if [ -z $4 ]
    then
        Sintase-f
        echo "M=$M"
        echo "C=$C"
        echo "T=$T"
        echo
        echo "por favor informe o índice(i)"
        read i
fi

if [ $M = x ]
    then
        # calcula o montante com a equação M = C (1+T)^i
        R=`bc -l << fim  # R recebe o resultado para podermos acertar o número de casas decimais logo abaixo,. usamos 50 casas decimais para fazermos um bom calculo.

scale=50

$C*(1+$T/100)^$i

fim`

CS=2  # retorna resultado com 2 casas decimais.

    elif [ $C = x ]
        then
       # calcula o capital com a equação C = M / (1+T)^i
         R=`bc -l << fim # R recebe o resultado para podermos acertar o número de casas decimais logo abaixo,. usamos 50 casas decimais para fazermos um bom calculo.
scale=50

$M/(1+$T/100)^$i

fim`

CS=2

    elif [ $T = x ]
        then
        # calcula a taxa com a equação T = e^(ln(M/C)/i) - 1
        R=`bc -l << fim  # R recebe o resultado para podermos acertar o número de casas decimais logo abaixo,. usamos 50 casas decimais para fazermos um bom calculo.

scale=50

100*(e(l($M/$C)/$i)-1)

fim`

CS=2

    elif [ $i = x ]
        then
        R=`bc -l << fim  # R recebe o resultado para podermos acertar o número de casas decimais logo abaixo,. usamos 50 casas decimais para fazermos um bom calculo.

scale=50

l($M/$C)/l(1+$T/100)

fim`

CS=0

fi


bc -l << fim  #esta parte é apenas para acertar o número de casas decimais a multiplicação e divisão por 100 serve apenas para enganar o bc.

scale=$CS

100*$R/100

fim

Scripts recomendados

GTransset

Enviar mensagem para os terminais ltsp

Juntando páginas separadas num único PDF

Compartilhamento NAT

"Integrando" nslookup ao ping


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts