import numpy as np
class longbeige():
def __init__(self, a, b):
self.a = a
self.b = b
def hanshu(self, x):
return np.sin(x) / x
def run(self, k):
t = []
s = []
c = []
r = []
for i in range(k + 1):
t.append(0)
for i in range(k + 1):
s.append(0)
for i in range(k + 1):
c.append(0)
for i in range(k + 1):
r.append(0)
t[0] = (self.b - self.a) / 2 * (self.hanshu(self.b) + 1) # python类里面的函数也是一个对象,需要加self
for i in range(1, k + 1):
sum = 0
for m in range(1, 2 ** (i - 1) + 1):
q = self.a + (2 * m - 1) * (self.b - self.a) / (2 ** i)
sum = sum + self.hanshu(q)
t[i] = t[i - 1] / 2 + (self.b - self.a) / (2 ** i) * sum
for i in range(1, k):
s[i] = 4 / 3 * t[i] - 1 / 3 * t[i - 1]
for i in range(2, k):
c[i] = 16 / 15 * s[i] - 1 / 15 * s[i - 1]
for i in range(3, k):
r[i] = 64 / 63 * c[i] - 1 / 63 * c[i - 1]
for i in range(k):
print("%.7f %.7f %.7f %.7f\n" % (t[i], s[i], c[i], r[i]))
long = longbeige(0, 1)
long.run(4)
写这段代码遇到的问题:
- 2**2与2^2的区别·。
- 列表的范围,注意range(0,k)不包括k,下次写类似列表的时候注意。
- 定义类中的方法时要加self,类中的方法调用类中的方法时要加self.方法。