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)))
结果