用python做几道简单的数学问题

1.杨辉三角

运行代码

from sympy import *
x=symbols('x')
for n in range(9):
    expr=(x+1)**n
    s_expr=expand(expr)
    print(s_expr)

结果

2. 展示多项式 (x+1)^n 展开后的系数

eg:n取6和9

运行代码

from sympy.abc import x,a             #用于导入符号变量
from sympy import Poly                #用于处理多项式
import matplotlib.pyplot as plt       #用于绘图和数值计算
import numpy as np

for n in [6,9]:
    expr = (x+1)**n
    expr_expand = expr.expand()
    expr_expand = Poly(expr_expand)
    poly_coeffs = expr_expand.coeffs()         #获取多项式的系数
    print(expr_expand)

    degrees = np.linspace(n,0,n + 1)           #生成度数
    fig,ax = plt.subplots()
    plt.stem(degrees, np.array(poly_coeffs, dtype=float))        #绘制系数作为“茎图”
    plt.xlim(0,n)
    plt.xticks(np.arange(0,n+1))

    y_max = max(poly_coeffs)
    y_max = float(y_max)
    plt.ylim(0,y_max)

    ax.spines['right'].set_visible(False)
    ax.spines['top'].set_visible(False)

    plt.rcParams['font.sans-serif']=['SimHei']
    plt.rcParams['axes.unicode_minus']=False       #与上一行一同使用,起在图中表示汉语的作用

    plt.xlabel('多项式的度数(从0到n)/Degree')
    plt.ylabel('对应的系数/Coefficient')
    plt.show()

 结果

 

 

3. 割圆术

运行代码

import matplotlib.pyplot as plt
from matplotlib.patches import RegularPolygon, Circle
import numpy as np

for num_vertices in [6,8,12,16,20,24]: 
    fig, ax = plt.subplots()
    ax.set_aspect('equal')                 # 确保x轴和y轴的比例相同

    hexagon_inner = RegularPolygon((0,0), numVertices=num_vertices, radius=1, alpha=0.2, edgecolor='k') 
    ax.add_patch(hexagon_inner)            # 绘制内部多边形

    hexagon_outer = RegularPolygon((0,0), numVertices=num_vertices, radius=1/np.cos(np.pi/num_vertices), alpha=0.2, edgecolor='k') 
    ax.add_patch(hexagon_outer)            # 绘制外部多边形

    circle = Circle((0,0), radius=1, facecolor = 'none', edgecolor='k') 
    ax.add_patch(circle)                   # 绘制中心圆

    plt.axis('off')                        # 关闭坐标轴

    plt.xlim(-1.5,1.5)
    plt.ylim(-1.5,1.5)                     # 设置x轴和y轴的显示范围

    plt.show()                             # 显示图形

结果 

 

 

 

 

4.鸡兔同笼

eg:头:35         脚:94         鸡:12         兔:23 

 运行代码1

import numpy as np
a = np.array([[1,1],[2,4]])
b = np.array([35,94])
x = np.linalg.solve(a,b)
print('二元一次方程组的解\n',x)

结果

 

运行代码2

import numpy as np        #前面用过可省略
chicken = 0
while True:                  
    if 2 * chicken + 4 * (35 - chicken) == 94:         # 脚的总数 
        rabbit = 35 - chicken                          # 头的总数
        print('鸡有 {} 只, 兔有 {} 只'.format(chicken, rabbit))
        break
    chicken += 1

结果

 运行代码3

import numpy as np
a = np.array([[3,2,1],[2,3,1],[1,2,3]])
b = np.array([39,34,26])
x = np.linalg.solve(a,b)
print('三元一次方程组的解\n',x)

结果

 

运行代码4

import numpy as np
h = eval(input('请输入头的数量 : '))
f = eval(input('请输入脚的数量 : '))
rabbit  = f / 2 - h
chicken= 2 * h - f / 2
print('鸡有 {} 只, 兔有 {} 只'.format(int(chicken), int(rabbit)))

结果

  • 15
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值