问题描述
我有一个关于格式化 PL/pgsql 的数学公式的问题。我正在尝试使用给定的公式创建抵押付款计算器。我一直在进行大量搜索,但无法弄清楚为什么我的原始代码不起作用。我做了一些搜索,发现数学公式是如何在 Python 中完成的。我插入了公式并将其转换为正确的语法,得到了我想要的答案。
我试图表示的数学公式附在底部。 python 教程中的数学公式在语义上是不同的,所以我试图弄清楚如何修复我的公式以使其在给定数学公式的参数下工作。
我发现有效的代码是:
monthly_Payment = P * ((i * ((1+i)^n)) / ((1+i)^n - 1));
我编写的代码是:
monthly_Payment := (P*i) + (i/(1+i)^n - 1);
我试图了解它们有何不同,以及如何使我的原始代码适合我给定的数学公式的参数。
下面附上我试图表示的数学方程。
解决方法
表达式 (P*i) + (i/(1+i)^n - 1)
的解释如下:(记住:乘法/除法前加括号/减法)
最上面的运算符是中间的 +
,因为两个操作数周围都有括号。
(P*i)
就是它的样子,“P
次 i
”。
请注意,P
仅在此子表达式中起作用,而它与原始公式中的所有其余部分相乘。
(i/(1+i)^n - 1)
被视为 1
从 i/(1+i)^n
中减去,因为乘法/取幂发生在减法之前。
但是你不想从分数中减去,你想在它里面做减法。
i/(1+i)^n
是 i
除以 (1+i)^n
(因为求幂也是在乘法/除法之前)。
所以这就是你的表情。现在我想简单解释一下为什么你发现的表达式有效。它与您显示的公式的表示不同,但会给出完全相同的结果。请注意,i
与 i * ((1+i)^n - 1) / ((1+i)^n - 1)
相同。现在它的分母与图片中的分数相同,因此我们可以添加枚举数:
i * ((1+i)^n - 1) + i
= i * ((1+i)^n - 1) + i * 1
= i * (((1+i)^n - 1) + 1)
= i * ((1+i)^n)
完整的分数现在是 i * ((1+i)^n) / ((1+i)^n - 1)
。现在我们只需要将 P
乘以它,我们就得到了与您找到的公式相同的公式(最多是他们添加了一些不必要的括号):
P * i * ((1+i)^n) / ((1+i)^n - 1)
如果你只想按照你在图片中看到的方式来写,请这样做:
P * (i + i / ((1+i)^n - 1))