### 多元函数泰勒展开的概念
对于多元函数 \( f(x, y) \),如果该函数及其偏导数在某一点附近连续,则可以在这一点处进行泰勒展开。泰勒展开提供了一种方法,通过多项式来近似复杂函数的行为。
#### 一阶泰勒展开
在一阶情况下,给定点 \( (a,b) \),函数 \( f(x,y) \) 可以表示为:
\[ f(a+h, b+k) ≈ f(a,b)+f_x(a,b)h+f_y(a,b)k \]
这里 \( h=x-a,k=y-b \)[^1]。
#### 二阶泰勒展开
当考虑更高精度时,引入二次项得到更精确的结果:
\[ f(a+h, b+k) ≈ f(a,b)+f_x(a,b)h+f_y(a,b)k+\frac{1}{2}[f_{xx}(a,b)h^{2}+2f_{xy}(a,b)hk+f_{yy}(b,k)] \]。
其中下标代表对应变量的一阶或混合二阶偏导数值。
#### 泛化形式
一般而言,\( n \)-维空间中的向量值函数 \( F(\mathbf{x})=F(x_1,x_2,\ldots ,x_n)\) 在点 \( a=(a_1,a_2,...,a_n)^T\) 的邻域内可写成如下形式:
\[
F(\mathbf {a} +\Delta \mathbf {x} )=\sum _{|r|=0}^{m}\left({\frac {\partial ^{r}}{\partial x_{1}^{r_{1}}...\partial x_{n}^{r_{n}}}}F(\mathbf {a} )/{r!}\right)(\Delta x_{1})^{r_{1}}...(\Delta x_{n})^{r_{n}}
\]
这里的 \( r=(r_1,r_2,…,r_n), |r|=\sum_i^n ri \)
并且 \( Δxi=xi−ai \). 当 \( m→∞ \) 并且余项趋于零的时候上述表达即成为完整的泰勒级数。
```python
import sympy as sp
def taylor_expansion(f, variables, point, order):
from itertools import product
# 计算各阶导数并构建泰勒展开式
expansion = 0
for i in range(order + 1):
terms = []
indices = list(product(range(i + 1), repeat=len(variables)))
for idx in indices:
if sum(idx) == i:
term = sp.diff(f, *zip(variables, idx))
coefficient = term.subs(dict(zip(variables, point))) / sp.factorial(sum(idx))
powers = ''.join([f'*(v-{p})**{exp}' for v, exp, p in zip(variables, idx, point)])
terms.append(coefficient*powers)
expansion += sum(terms)
return expansion.expand()
# 定义符号和函数
x, y = sp.symbols('x y')
func = sp.sin(x)*sp.exp(y)
# 展开至二阶
point = [0, 0]
order = 2
result = taylor_expansion(func, [x, y], point, order)
print(result)
```