数值计算方法:龙贝格算法

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)

写这段代码遇到的问题:

  1. 2**2与2^2的区别·。
  2. 列表的范围,注意range(0,k)不包括k,下次写类似列表的时候注意。
  3. 定义类中的方法时要加self,类中的方法调用类中的方法时要加self.方法。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值