魏尔斯特拉斯函数(Weierstrass function) 是一个处处连续但处处不可微的函数,它是一个经典的反例,颠覆了人们对连续性和可微性之间关系的直觉。 它的一般形式为:
f(x) = Σ (aⁿ cos(bⁿπx)) , n = 0 to ∞
其中:
- 0 < a < 1: 控制函数的振幅衰减速度。a 越接近 1,函数的震荡越剧烈。
- b 是正奇数: 控制函数的频率。b 越大,函数震荡越快。
- ab > 1 + (3π/2): 这是魏尔斯特拉斯证明其处处不可微的条件。 这个条件保证了函数在任何点都无法找到一个确定的切线。
函数的性质:
-
处处连续: 可以通过逐项求和证明其连续性。每个项都是连续的,并且级数在任何点上都一致收敛。
-
处处不可微: 这是魏尔斯特拉斯函数最令人惊奇的性质。 在任何点上,函数图像的局部变化都过于剧烈,以至于无法定义一个确定的切线斜率。 证明过程比较复杂,通常需要用到三角恒等式和级数的性质。
-
自相似性: 在不同的尺度下,魏尔斯特拉斯函数的图像都表现出相似的特征。这是分形几何的重要特征。
import numpy as np
import matplotlib.pyplot as plt
def weierstrass(x, a=0.5, b=3, N=10):
"""
计算魏尔斯特拉斯函数的近似值。
Args:
x: x坐标值
a: 振幅参数 (0 < a < 1)
b: 频率参数 (正奇数)
N: 级数求和项数
Returns:
魏尔斯特拉斯函数在 x 处的近似值。
"""
sum = 0
for n in range(N):
sum += a**n * np.cos(b**n * np.pi * x)
return sum
# 生成数据点
x = np.linspace(-2, 2, 500) # 调整区间和点数
y = weierstrass(x)
# 绘制图像
plt.plot(x, y)
plt.title("Weierstrass Function (a=0.5, b=3, N=10)")
plt.xlabel("x")
plt.ylabel("f(x)")
plt.grid(True)
plt.show()