zoukankan      html  css  js  c++  java
  • 作业

    这个网页可以更新东西,凑合用吧

    1、第6题

    1.1 python源代码

    # -*- coding:utf-8 -*-
    # @Time    : 2018/9/6 10:48
    # @Author  : yuanjing liu
    # @Email   : lauyuanjing@163.com
    # @File    : question_6.py
    # @Software: PyCharm
    
    import math
    
    # 计算级数不同方法求和的精度
    # 参数要求n必须为大于1的正整数
    def series_sum(n):
        # 第一种方法:按正常次序相加
        Sn1, Sn2, Sn3, Sn4 = 0, 0, 0, 0
        for i in range(1, n+1):
            Sn1 = Sn1 + ((-1)**(i+1))*(1/i)
        # 第二种方法:按相反次序相加
        for j in range(n, 0, -1):
            Sn2 += ((-1)**(j+1))*(1/j)
        # 第三种方法:按成对组合数相加
        k = 1
        while k <= n:
            tmp3 = ((-1)**(k+1))*(1/k) + ((-1)**(k+2))*(1/(k+1))
            Sn3 += tmp3
            k = k + 2
        # 第四种方法:按成对组合的通分后结果相加
        l = 1
        while l <= n:
            Sn4 += 1/(l * (l+1))
            l += 2
    
        bz = math.log(2, math.e)
        result = {'Sn1': Sn1, 'Sn2': Sn2, 'Sn3': Sn3, 'Sn4': Sn4}
        # 是求绝对值
        result_jingdu = {'Sn1': abs(bz-Sn1), 'Sn2': abs(bz-Sn2), 'Sn3': abs(bz-Sn3), 'Sn4': abs(bz-Sn4)}
        result_sort = sorted(result_jingdu.items(), key=lambda e: e[1])
    
        print('第一种方法:按正常次序相加Sn1: %.16f' % Sn1)
        print('第二种方法:按相反次序相加Sn2: %.16f' % Sn2)
        print('第三种方法:按成对组合数相加Sn3: %.16f' % Sn3)
        print('第四种方法:按成对组合的通分后结果相加Sn4: %.16f' % Sn4)
        print('精度排序:%s > %s > %s > %s' %
              (result_sort[0][0], result_sort[1][0], result_sort[2][0], result_sort[3][0]))
        return result, result_jingdu, result_sort
    
    
    # 测试
    result0, result_jingdu0, result_sort0 = series_sum(10**6)

    1.2 输出结果

    第一种方法:按正常次序相加Sn1: 0.6931466805602525
    第二种方法:按相反次序相加Sn2: 0.6931466805601953
    第三种方法:按成对组合数相加Sn3: 0.6931466805602322
    第四种方法:按成对组合的通分后结果相加Sn4: 0.6931466805602324
    精度排序:Sn1 > Sn4 > Sn3 > Sn2

     

    2、第2题

    2.1 python源代码

    # -*- coding:utf-8 -*-
    # @Time    : 2018/9/5 22:42
    # @Author  : yuanjing liu
    # @Email   : lauyuanjing@163.com
    # @File    : question_2.py
    # @Software: PyCharm
    
    
    # 此函数计算向量x长度为s的滑动和
    def vector_sum(x, s):
        n = len(x)
        vector_sum = []
        if s <= n:
            i = 0
            while i <= n-s:
                tmp = 0
                for j in range(i, s+i):
                    tmp += x[j]
                vector_sum.append(tmp)
                i += 1
            print('向量x长度为%d的滑动和: ' % s)
            print(vector_sum)
        else:
            print('错误:s必须小于等于n')
        return vector_sum
    
    
    # 测试
    x1 = [1, 2, 3, 4, 5, 6, 7, 8]
    sum1 = vector_sum(x1, 3)
    sum2 = vector_sum(x1, 4)
    sum3 = vector_sum(x1, 5)
    # sum2 = vector_sum(x1, 15)  # 会返回错误,s>n

    2.2 输出结果

  • 相关阅读:
    51nod 1113 矩阵快速幂 如题目
    poj Raising Modulo Numbers 快速幂模板(取膜)
    bzoj 1503: [NOI2004]郁闷的出纳员 平衡树
    codevs 1063 合并果子 优先队列相关
    bzoj 3224: Tyvj 1728 普通平衡树 Treap模版
    快排模板
    hdu 4353 统计点在三角形内的个数
    hdu 3264 圆的交+二分
    hdu 3685 多边形重心+凸包
    hdu 3992 AC自动机上的高斯消元求期望
  • 原文地址:https://www.cnblogs.com/Yuanjing-Liu/p/9597881.html
Copyright © 2011-2022 走看看