2013-09-10 61 views
0

編輯:功能複雜的數學公式是不工作

債務上限的部分實際上是要在我還沒有寫一個步驟中使用。它用於確定用戶的債務與收入比率是否過高,但不影響現在寫入的功能的結果。

但我仍然有一個問題,但非常感謝任何見解。我想我在javasctipt的下一部分中有一些不好的邏輯。這裏是我的新功能:

$(function(){ 

function calculate_affordability() { 

    var income = parseFloat($('#income').val()); 
    var debts = parseFloat($('#debts').val()); 
    var apr_decimal = parseFloat($('#apr').val())/100; 
    var monthly_interest = apr_decimal/12; 
    var down = parseFloat($('#down').val()); 
    var term = parseFloat($('#term').val()) * 12; 

    var debts_ceiling = (debts * .08).toFixed(2); 
    var mortgage_ceiling = (income * .28).toFixed(2); 

    var formula_numerator = Math.pow((1 + monthly_interest), term) -1; 
    var formula_denominator = monthly_interest * Math.pow((1 + monthly_interest), term); 
    var formula_result = (formula_numerator/formula_denominator); 

    var loan_amount = (mortgage_ceiling * formula_result).toFixed(2); 

    // the issue is in here somewhere: 
    var closing_costs = (loan_amount * .03).toFixed(2); 
    var actual_down = (down - closing_costs); 
    var max_purchase_price = (loan_amount + actual_down); 

    $('#monthly-payment').html('$' + mortgage_ceiling); 
    $('#loan-amount').html('$' + loan_amount); 
    $('#max-purchase-price').html('$' + max_purchase_price); 
    $('#actual-down').html('$' + actual_down); 
    $('#closing-costs').html('$' + closing_costs); 

} 


$('#term').keyup(calculate_affordability); 

$('#term').mouseup(calculate_affordability); 

}); 

再次感謝您的幫助!

ORIGINAL:

這實際上是一種抵押貸款計算。

我使用正常方式工作 - 也就是說,當用戶輸入四個變量(貸款金額,預付定金,利率和期限年)時確定每月付款。

但是,當我試圖改變公式來解決貸款額度(一個負擔能力計算器),我越來越壞的結果。

這裏是由按揭教授解釋原來的公式:

下面的公式來計算完全攤銷L的美元貸款所需的每月固定支付 (P)超過n的項 個月以c的月利率計算。 [如果報價率爲6%,對於 示例,c爲.06/12或.005]。

P = L [C(1個+ C)N]/[(1 + C)N - 1]

http://www.mtgprofessor.com/formulas.htm

我將首先得到的是正常工作的例子。

HTML:

<form> 
    <div class="col-md-4"> 
     <h4>Home Price</h4> 
      <input type="text" id="price"> 
     <h4>Down Payment</h4> 
      <input type="text" id="down"> 
    </div> 
    <div class="col-md-4"> 
     <h4>Rate (%)</h4> 
      <input type="text" id="apr"> 
     <h4>Term (Years)</h4> 
      <input type="text" id="term"> 
    </div> 
    <div class="col-md-4"> 
     Your Monthly Payment: 
     <div id="payment"></div> 
    </div> 
</form> 

的jQuery:

$(function(){ 

function calculate_monthly_payment() { 

    var price = parseFloat($('#price').val()); 
    var down = parseFloat($('#down').val()); 
    var apr_decimal = parseFloat($('#apr').val())/100; 
    var monthly_interest = apr_decimal/12; 
    var term = parseFloat($('#term').val()) * 12; 

    var loan_amount = parseFloat(price - down); 

    var formula_numerator = monthly_interest * Math.pow((1 + monthly_interest), term); 
    var formula_denominator = Math.pow((1 + monthly_interest), term) -1; 

    var monthly_payment = parseFloat(loan_amount * (formula_numerator/formula_denominator)).toFixed(2); 

    if (!isNaN(monthly_payment)) { 
     $('#payment').html('$' + monthly_payment); 
    } else { 
     $('#payment').html('Calculating...'); 
    } 

} 

$('#price').keyup(calculate_monthly_payment); 
$('#down').keyup(calculate_monthly_payment); 
$('#apr').keyup(calculate_monthly_payment); 
$('#term').keyup(calculate_monthly_payment); 

$('#price').mouseup(calculate_monthly_payment); 
$('#down').mouseup(calculate_monthly_payment); 
$('#apr').mouseup(calculate_monthly_payment); 
$('#term').mouseup(calculate_monthly_payment); 

}); 

是無法正常工作的一部分:

HTML:

<form> 
    <div class="col-md-6"> 
     <h4>Income (Monthly)</h4> 
      <input type="text" id="income"> 
     <h4>Debts (Monthly, not including housing costs)</h4> 
      <input type="text" id="debts"> 
     <h4>Down Payment</h4> 
      <input type="text" id="down"> 
     <h4>Rate (%)</h4> 
      <input type="text" id="apr"> 
     <h4>Term (Years)</h4> 
      <input type="text" id="term"> 
    </div> 
    <div class="col-md-6"> 
     Monthly Payment: 
     <div id="monthly-payment"></div> 
     Loan Amount: 
     <div id="loan-amount"></div> 
     Purchase Price: 
     <div id="purchase-price"></div> 
     Down Payment: 
     <div id="actual-down"></div> 
     Closing Costs: 
     <div id="closing-costs"></div> 
    </div> 
</form> 

的jQuery:

$(function(){ 

function calculate_affordability() { 

    var income = parseFloat($('#income').val()); 
    var debts = parseFloat($('#debts').val()); 
    var down = parseFloat($('#down').val()); 
    var apr_decimal = parseFloat($('#apr').val())/100; 
    var monthly_interest = apr_decimal/12; 
    var term = parseFloat($('#term').val()); 

    var debt_ceiling = income * .08; 
    var monthly_payment = (income * .28).toFixed(2); 

    var formula_numerator = monthly_interest * Math.pow((1 + monthly_interest), term); 
    var formula_denominator = Math.pow((1 + monthly_interest), term) -1; 

    var loan_amount = parseFloat(monthly_payment/(formula_numerator/formula_denominator)).toFixed(2); 
    var closing_costs = (loan_amount * .03).toFixed(2); 
    var actual_down = (down - closing_costs).toFixed(2); 
    var purchase_price = (loan_amount - actual_down).toFixed(2); 


    $('#monthly-payment').html('$' + monthly_payment); 
    $('#loan-amount').html('$' + loan_amount); 
    $('#purchase-price').html('$' + purchase_price); 
    $('#actual-down').html('$' + actual_down); 
    $('#closing-costs').html('$' + closing_costs); 

} 


$('#term').keyup(calculate_affordability); 

$('#term').mouseup(calculate_affordability); 

}); 

以上是基於查看公式並重新排列它。

原文:X = Y(A/B)

求解Y:Y = X /(A/B)

不知怎的,我已經走了錯誤的新配方,但我不確定在哪裏以及如何解決它。

謝謝你的幫助!

回答

0

您的每月付款未正確計算,但代碼無法正常工作。如果你看看它,你會發現你並沒有考慮到你的債務。

我不知道你到底如何選擇計算月還款額,但我的猜測是,你需要從你的收入中減去你的債務,然後做你的天花板數學,也許是這樣的:

var debt_ceiling = (income - debts) * .92; 
var monthly_payment = (debt_ceiling * .28).toFixed(2); 

或者類似的東西......但是在我看來,這是你的錯誤。

0

半解決:

的問題是我的公式和他的同事和我想通了大問題。當我轉換原始公式(這裏我沒有詳細列出)時,我沒有執行正確的代數方法來逆轉在另一方的方程式中做了什麼。基本上,原始公式的分數位需要翻轉和相乘。因此,這裏的新配方,求解對於L,而不是病人:

L = P [(1個+ C)^ N -1]/[C(1 + C)^ N]

而原來用胡蘿蔔來表示「上升到n的冪」:P = L [c(1 + c)^ n]/[(1 + c)^ n - 1]

仍有問題儘管如此,我添加到我原來的問題。

1

新配方成爲L = P/[(1 + C)^ N-1]/[C(1 + C)^ N]

讓我工作了這一點爲您服務。要將L添加到另一面,您必須以1/L倍數。所以現在等式的左邊是P/L。擺脫P你必須多個1/P。現在離開L單獨使L變成1/L的比率。爲了擺脫那個你必須在右側顛倒這個方程。所以你得到了上面的新公式。