Python实验5

实验五 常用的算法设计方法

有更好的程序请留言哦,可以一起交流

1.从键盘输入N的值,求 ∑ i = 1 N ( X i − Y i 2 ) \displaystyle\sum_{i=1}^{N}(X_i-Y_i^2) i=1N(XiYi2)的值。其中, X i = { i 2 ( i 为偶数 ) i ( i 为奇数 ) X_i=\lbrace^{i(i为奇数)}_{\frac{i}{2}(i为偶数)} Xi={2i(i为偶数)i(i为奇数) Y i = { i 3 ( i 为偶数 ) i 2 ( i 为奇数 ) Y_i=\lbrace^{i^2(i为奇数)}_{i^3(i为偶数)} Yi={i3(i为偶数)i2(i为奇数)

N=int(input())
sum1=sum2=0
i=1
for i1 in range (1,N+112):
    if i<=N:
        sum1+=(i1-pow(i1,4))
        i+1
print(sum1)
for i2 in range (2,N+1,2):
    if i<=N:
        sum2+=((i2)/2-pow(i2,6))
        i+1
print(sum2)

结果演示:

5
-4291728792
-4157.0


6
-4479117396
-50810.0

2.设 s = 1 + 1 2 + 1 3 + ⋯ + 1 n s=1+\frac{1}{2}+\frac{1}{3}+\dots+\frac{1}{n} s=1+21+31++n1,求与8最接近的s的值及与之对应的n值。

n=int(input("请输入n值:"))
s=0
for i in range (1,n+1):
    s+=1/i
    i+1
print(float(s))

结果演示:

请输入n值:1673
7.999888200430668

3. [1,100]间有奇数个不同因子的整数共有多少个?其中最大的一个是什么数?

m=0
for i in range (1,101):
    n=0
    for j in range(1,i):
        if i%j==0:
            n+=1
    if n%2!=0:
        max=i
        m+=1
        print("{0}的因子个数为{1}.".format(i,n))
print(m,max)

结果演示:

省略了部分结果
2的因子个数为1.
3的因子个数为1.
5的因子个数为1.
...
96的因子个数为11.
97的因子个数为1.
98的因子个数为5.
99的因子个数为5.
90 99

4.梅森尼数是指 2 n − 1 2^n-1 2n1为素数的数n,求[1,21]内有多少个梅森尼数以及最大的梅森尼数。

def sushu(n):
    for i in range(2, n):
        if n % i ==0:
            return False
    return True
def meiNumber(n):
    list = []
    for i in range(2, n):
        if sushu(i):
            if sushu(2**i-1):
                list.append(2**i-1)
    return list
print (meiNumber(21))
print("最大的梅森尼数为:",max(meiNumber(21)))

结果演示:

[3, 7, 31, 127, 8191, 131071, 524287]
最大的梅森尼数为: 524287

5.已知A>B>C,且A+B+C<100,求满足 1 A 2 + 1 B 2 = 1 C 2 \frac{1}{A^2}+\frac{1}{B^2}=\frac{1}{C^2} A21+B21=C21的解共有多少组。

for A in range (1,100):
    for B in range(1, 100):
        for C in range(1, 100):
            if A>B>C:
                if A+B+C<100:
                    if 1/(A*A)+1/(B*B)==1/(C*C):
                        print(A,B,C)

结果演示:

20 15 12
40 30 24

6.已知 f ( t ) = c o s t + 4 s i n ( 2 t ) + 5 f(t)=\sqrt {cost+4sin(2t)+5} f(t)=cost+4sin(2t)+5 ,利用矩形法和梯形法求 s = ∫ 0 2 π f ( t ) d t s=\int^{2\pi}_{0}f(t)dt s=02πf(t)dt

#矩形法
import math

n=100           #分成100份
a=0             #上限
b=2*math.pi     #下限
s=0             #面积
d=0             #边长

w=(b-a)/n
for i in range(1,101):
    d=i*w
    s+=math.sqrt(math.cos(d) + 4 * math.sin(2 * d) + 5)*w
print(s)


#梯形法
import math
n=100           #分成100份
a=0             #上限
b=2*math.pi     #下限
s=0             #面积
d=0             #边长

w=(b-a)/n
for i in range(1,101):
    d=i*w       #右横坐标
    D=(i-1)*w   #左横坐标
    s+=((math.sqrt(math.cos(d) + 4 * math.sin(2 * d) + 5))+(math.sqrt(math.cos(D) + 4 * math.sin(2 * D) + 5)))*w/2
print(s)

结果演示:

13.261247839372379
13.261247839372386

7.用牛顿迭代法求方程 e − x − x = 0 e^{-x}-x=0 exx=0 x = − 2 x=-2 x=2附近的一个实根,直到满足 ∣ x n + 1 ∣ − ∣ x n ∣ ≤ 1 0 − 6 \lvert x_{n+1}\rvert-\lvert x_n\rvert\leq10^{-6} xn+1xn106为止。

import math
def f(x):
    return(math.exp(-x)-x)
def g(x):
    return(-(math.exp(-x))-1)

x=-2
while (1):
    a=x
    x=x-f(x)/g(x)
    if (abs(x-a)<(1e-6)):
        break
print(x)

结果演示:

0.5671432904097837

8.设 f ( x ) = x 3 − a f(x)=x^3-a f(x)=x3a,用牛顿迭代法推导方程 f ( x ) = 0 f(x)=0 f(x)=0的根的迭代公式,显然方程的根为 x = a 3 x=\sqrt[3]{a} x=3a ,据此可以得到求 a 3 \sqrt[3]{a} 3a 的迭代公式。从键盘输入a,利用迭代公式求 a 3 \sqrt[3]{a} 3a ,其中初始值 x 0 = a x_0=a x0=a,误差要求 1 0 − 5 10^{-5} 105

a=int(input("请输入a值:"))
def f(x):
    return(x**3-a)
def g(x):
    return(3*(x**2))

x=a
while (1):
    b=x
    x=x-f(x)/g(x)
    if (abs(x-b)<(1e-5)):
        break
print(x)

结果演示:

请输入a值:27
3.0
  • 37
    点赞
  • 136
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值