金融数学和量化分析中,线性代数是最基础也最强大的数学工具之一。无论是投资组合优化、风险分析还是衍生品定价,都离不开线性代数和线性方程组求解。本文作为Python数值分析系列第一篇,将介绍核心数值方法并通过Python实现展示其在金融中的应用。
线性方程组可以简洁地表示为:$Ax = b$,其中A是系数矩阵,x是我们要求的未知向量,b是常数向量。
金融应用场景:
高斯消元法是最基本的求解方法,通过行变换将方程组转化为等价但更容易求解的形式。
核心思想:把复杂方程组转化为简单的上三角形式,然后逐个回代求解。
import numpy as np
def gaussian_elimination(A, b):
"""高斯消元法求解线性方程组"""
# 创建增广矩阵
n = len(b)
aug_matrix = np.column_stack((A, b))
# 前向消元
for i in range(n):
# 找主元(避免除以接近零的数)
max_row = i + np.argmax(abs(aug_matrix[i:, i]))
if max_row != i:
aug_matrix[[i, max_row]] = aug_matrix[[max_row, i]]
# 消元过程
for j in range(i+1, n):
factor = aug_matrix[j, i] / aug_matrix[i, i]
aug_matrix[j, i:] -= factor * aug_matrix[i, i:]
# 回代过程
x = np.zeros(n)
for i in range(n-1, -1, -1):
x[i] = (aug_matrix[i, -1] - np.sum(aug_matrix[i, i+1:n] * x[i+1:])) / aug_matrix[i, i]
return x
实际应用:假设我们需要求解满足特定风险和收益目标的投资组合权重,可以构建相应的线性方程组求解。
LU分解是高斯消元法的变体,将系数矩阵A分解为下三角矩阵L和上三角矩阵U的乘积:$A = LU$。
优点: