7
votes

Python: moyen plus intelligent de calculer les paiements de prêt

Comment calculer les frais mensuels sur un prêt?

donné est: p>

  • a: un montant à prêt. li>
  • B: la période de prêt (nombre de mois). LI>
  • C: Le taux d'intérêt P.A. (Les intérêts sont calculés et ajoutés chaque mois, 1/12 de l'intérêt est ajouté. Donc, si l'intérêt est sur 12%, l'intérêt de 1% est ajouté chaque mois). Li>
  • D: la quantité d'argent dû après la fin de la période. li> ul>

    Ce problème est un peu différent de celui habituel depuis, l'objectif n'est pas de disposer du prêt payé après la fin de la période de prêt, mais de devoir toujours un montant donné. J'ai été en mesure de trouver un algorithme afin de résoudre le problème si je voulais payer tout le montant, mais ce ne sera bien sûr pas fonctionner pour ce problème lorsque l'objectif est de finir par un montant donné plutôt que de ne rien faire. P>

    J'ai réussi à faire une solution à ce problème en commençant par une supposition, puis continuez à améliorer ce devinant jusqu'à ce qu'il soit assez proche. Je me suis demandé cependant, s'il y a un meilleur moyen de simplement calculer cela, plutôt que de simplement deviner. P>

    EDIT: Voici comment je le fais maintenant. Strong> p> xxx pré>

    Evolution est juste une fonction qui affiche comment le prêt ressemblerait à un paiement de paiement et d'intérêt pour les intérêts, résumant le montant total des intérêts payés, etc. P>

    un exemple Soyez si je voulais connaître les paiements mensuels pour un prêt à partir de 100 000 $ et se terminant à 50 000 dollars avec un intérêt de 8% et une durée de 70 mois, appelez P>

    >>> find_payment(100000, 50000, 70, 0.08)
    payment is 1363
    


3 commentaires

Peut-être que si vous pouvez fournir votre solution de devinette, il devient plus clair sur ce que vous voulez faire.


N'est-ce pas juste une simple progression géométrique? en.wikipedia.org/wiki/geometric_progrresse


Quelle est la fonction "Evolution ()"? Où puis-je trouver cette fonction?


7 Réponses :


0
votes

Vous pouvez continuer à payer l'intérêt de chaque mois; Ensuite, vous devrez toujours la même chose d'Amont. XXX


0 commentaires

4
votes

Peut-être le moyen le plus simple de penser à cela est de scinder le prêt en deux parties, une partie à rembourser intégralement et une autre partie où vous ne payez rien. Vous avez déjà calculé les frais mensuels pour la première partie.


2 commentaires

+1, exactement! L'équivalence comptable la plus simple dans les livres, vraiment.


Intelligent pour diviser le prêt en deux parties, n'a pas pensé à cela.



10
votes

Ceci est fondamentalement un Calcul du remboursement hypothécaire .

En supposant que le démarrage est supérieur à la fin et que cet intérêt est compris entre 0 et 1 (c.-à-d. 0,1 pendant 10% d'intérêt de 10%) P>

Premièrement examiner la partie du paiement que vous souhaitez payer. P >

Start: 100000
End:  50000
Months: 70
Interest: 8% 
pay_a = 896.20
pay_b = 333.33
Payment = 1229.54


0 commentaires

0
votes

Code Python pour calculer EMI STRAND>

class EMI_CALCULATOR(object):
 # Data attributes
 # Helps to calculate EMI

  Loan_amount = None # assigning none values
  Month_Payment = None # assigning none values
  Interest_rate = None #assigning none values
  Payment_period = None #assigning none values

  def get_loan_amount(self):
 #get the  value of loan amount
      self.Loan_amount = input("Enter The Loan amount(in rupees) :")
      pass

  def get_interest_rate(self):
   # get the value of interest rate
      self.Interest_rate = input("Enter The Interest rate(in percentage(%)) : ")
      pass

  def get_payment_period(self):
   # get the payment period"
      self.Payment_period = input("Enter The Payment period (in month): ")
      pass


  def calc_interest_rate(self):
  # To calculate the  interest rate"
      self.get_interest_rate()

      if self.Interest_rate > 1:
         self.Interest_rate = (self.Interest_rate /100.0) 

      else:
         print "You have not entered The interest rate correctly ,please try again "
      pass

  def calc_emi(self):
  # To calculate the EMI"          

      try:

        self.get_loan_amount() #input loan amount 
        self.get_payment_period() #input payment period
        self.calc_interest_rate() #input interest rate and calculate the interest rate

      except NameError:
             print "You have not entered Loan amount (OR) payment period (OR) interest rate  correctly,Please enter and try again. "

      try:
        self.Month_Payment = (self.Loan_amount*pow((self.Interest_rate/12)+1,
                             (self.Payment_period))*self.Interest_rate/12)/(pow(self.Interest_rate/12+1,
                             (self.Payment_period)) - 1)

      except ZeroDivisionError: 
                    print "ERROR!! ZERO DIVISION ERROR , Please enter The Interest rate correctly and Try again."

      else:
         print "Monthly Payment is : %r"%self.Month_Payment
      pass


  if __name__ == '__main__':# main method 

        Init = EMI_CALCULATOR() # creating  instances


        Init.calc_emi() #to calculate EMI


0 commentaires

0
votes

Ceci plutôt un moyen détaillé mais donnera tout le paiement tout aussi

# Mortgage Loan that gives the balance and total payment per year

# Function that gives the monthly payment
def f1 (principle,annual_interest_rate,duration):
    r = annual_interest_rate/1200
    n = duration*12
    a=principle*r*((1+r)**n)
    b= (((1+r)**n)- 1)
    if r > 0 :
        MonthlyPayment = (a/b)
    else :
        MonthlyPayment = principle/n

    return MonthlyPayment

# Function that gives the balance
def f2 (principle,annual_interest_rate,duration,number_of_payments):
    r = annual_interest_rate/1200
    n = duration*12
    a= ((1+r)**n)
    b= ((1+r)**number_of_payments)
    c= (((1+r)**n)-1)
    if r > 0 :
        RemainingLoanBalance = principle*((a-b)/c)
    else :
        RemainingLoanBalance = principle*(1-(number_of_payments/n))

    return RemainingLoanBalance
# Entering the required values
principle=float(input("Enter loan amount: "))
annual_interest_rate=float(input("Enter annual interest rate (percent): "))
duration=int(input("Enter loan duration in years: "))

# Output that returns all useful data needed
print ("LOAN AMOUNT:",principle,"INTEREST RATE (PERCENT):",annual_interest_rate)
print ("DURATION (YEARS):",duration,"MONTHLY PAYMENT:",int(f1(principle,annual_interest_rate,duration)))


k=duration+1
BALANCE=principle
total=0
for i in range (1,k):
    TOTALPAYMENT= f1(BALANCE,annual_interest_rate,k-i)*12
    total+= TOTALPAYMENT
    BALANCE= f2(principle,annual_interest_rate,duration,12*i)
    print("YEAR:",i,"BALANCE:",int(BALANCE),"TOTAL PAYMENT",int(total))


0 commentaires

0
votes

Que diriez-vous de cela? XXX


1 commentaires

Bienvenue dans le débordement de la pile! Merci pour ce code Snippet, qui peut fournir une aide immédiate. Une explication appropriée améliorerait considérablement sa valeur éducative en montrant pourquoi c'est une bonne solution au problème, et le rendrait plus utile pour les futurs lecteurs avec des questions similaires, mais pas identiques. S'il vous plaît Modifier Votre réponse Pour ajouter une explication et donner une indication de quelles limitations et hypothèses s'appliquent.



0
votes

Voici un extrait de code à l'aide de fonctions numpées. Cela vous montre le paiement, le capital, l'intérêt, l'acompte et le montant total_amount chaque mois. Exécutez-le et voyez la sortie. Vous pouvez également vérifier la syntaxe pour Excel "ipmt ()" et "ppmt ()" fonctionne pour plus d'explication des arguments. HTTPS: // DOCS. scipy.org/doc/numpy-1.13.0/Reference/Generated/numpy.pmt.html#numpy.pmt XXX


0 commentaires