【发布时间】:2021-05-20 19:53:36
【问题描述】:
我有这些数学方程式,我必须将它们转换成 Python 代码。我已经尝试了几个小时,但无法得到正确的结果。 以下是我目前编写的数学方程及其代码。
class Mortgage:
def __init__(self,L,Y,p,k):
self.L = L
self.Y = Y
self.p = p
self.k = k
self.equation1()
def equation1(self):
self.p = self.L * ((1 + (self.p/365)) ** (365 * self.Y))
p2 =(((1 + (self.p/365)) ** (self.k)) - 1) / (((1 + (self.p/365)) ** (365 * self.Y)) -1)
print(p2)
self.p *= p2
def equation2(self,n):
self.b = self.L * ((1 + (self.p/365)) ** (365 * n))
b1 = ((1 + self.p/365) ** (365 * n)) -1
b2 = ((1 + self.p/365) ** (self.k)) -1
b3 = b1/b2
p = self.p * b3
self.b -= p
def show_outputs(self):
n = 0
b = self.equation2(n)
x = []
y = []
y.append(b)
x.append(0)
while b > 0:
n += 1
b = self.equation2(n)
x.append(n)
y.append(b)
print(x)
print(y)
m = Mortgage(200000, 10, 4.8, 14)
m.show_outputs()
现在,当我创建上述类的对象并执行程序时,我收到以下错误:
**OverflowError: (34, 'Result too large')**
我们将不胜感激!
【问题讨论】:
-
请修正缩进,并提供实际调用该方法的代码。
-
请注意,在等式1 中,您使用语句
self.p = self.L * ((1 + (self.p/365)) ** (365 * self.Y))覆盖 self.p 的值,并再次使用语句self.p *= p2 -
@trincot 我已经更新了代码。你能再回顾一下吗?谢谢!
-
请注意,在方程 2 中,方程的结果应随着 n 的增加而减小。但方程式并没有这样做..
标签: python python-3.x math syntax equation