-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathexamples.py
More file actions
67 lines (59 loc) · 2.23 KB
/
Copy pathexamples.py
File metadata and controls
67 lines (59 loc) · 2.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import numpy as np
from core import solve_linear_system, eigen_analysis, multiply_matrices, transpose_matrix, trace_matrix, inverse_matrix, solve_ode
# 演示 1: 线性方程组求解 Ax = b
print("演示 1: 线性方程组求解")
A = np.array([[1, 2], [3, 4]], dtype=float)
b = np.array([5, 11], dtype=float)
x = solve_linear_system(A, b)
print(f"系数矩阵 A:\n{A}")
print(f"常数向量 b: {b}")
print(f"求解得到 x: {x}\n")
# 演示 2: 矩阵的特征值和特征向量
print("演示 2: 矩阵的特征值和特征向量")
B = np.array([[2, 0], [0, 3]], dtype=float)
eigvals, eigvecs = eigen_analysis(B)
print(f"矩阵 B:\n{B}")
print(f"特征值: {eigvals}")
print(f"特征向量:\n{eigvecs}\n")
# 演示 3: 矩阵乘法
print("演示 3: 矩阵乘法")
C = np.array([[1, 2], [3, 4]], dtype=float)
D = np.array([[5, 6], [7, 8]], dtype=float)
CD = multiply_matrices(C, D)
print(f"矩阵 C:\n{C}")
print(f"矩阵 D:\n{D}")
print(f"C 与 D 的乘积:\n{CD}\n")
# 演示 4: 矩阵转置
print("演示 4: 矩阵转置")
E = np.array([[1, 2, 3], [4, 5, 6]], dtype=float)
E_T = transpose_matrix(E)
print(f"矩阵 E:\n{E}")
print(f"E 的转置:\n{E_T}\n")
# 演示 5: 矩阵迹(主对角线元素之和)
print("演示 5: 矩阵迹")
F = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]], dtype=float)
tr = trace_matrix(F)
print(f"矩阵 F:\n{F}")
print(f"F 的迹: {tr}\n")
# 演示 6: 矩阵求逆
print("演示 6: 矩阵求逆")
G = np.array([[4, 7], [2, 6]], dtype=float)
G_inv = inverse_matrix(G)
print(f"矩阵 G:\n{G}")
print(f"G 的逆矩阵:\n{G_inv}")
print(f"G 与 G_inv 的乘积:\n{np.dot(G, G_inv)}\n")
# 演示 7: 使用 Runge-Kutta 方法求解常微分方程组
print("演示 7: 常微分方程组求解 (Runge-Kutta)")
# 定义方程组: y1' = y2, y2' = -y1 (简谐振荡器,如 y1 = cos(t), y2 = -sin(t))
def f(t, y):
y1, y2 = y
return [y2, -y1]
t_span = (0, 6.28) # 积分从 0 到 6.28 (约 2π)
y0 = [1, 0] # 初始条件 y1(0)=1, y2(0)=0
sol = solve_ode(f, t_span, y0, t_eval=np.linspace(0, 6.28, 5))
print("求解得到的时间节点:", sol.t)
print("对应解矩阵 y:")
print(sol.y)
print("列出各时间点的解:")
for ti, y1_val, y2_val in zip(sol.t, sol.y[0], sol.y[1]):
print(f" t={ti:.2f}, y1={y1_val:.4f}, y2={y2_val:.4f}")