应用MATLAB符号积分实现复变函数积分运算
应用MATLAB符号积分运算实现复变函数积分计算
本文简单介绍如何应用MATLAB的符号运算功能,来实现复变函数积分。主要方法是将复变函数的积分问题化为定积分,然后应用MATLAB的符号运算完成有关定积分的计算。
1. 解析函数的积分
设解析函数(满足Cauchy-Riemann条件)为
f
(
z
)
=
u
(
x
,
y
)
+
i
v
(
x
,
y
)
f(z)=u(x,y)+{\rm i} v(x,y)
f(z)=u(x,y)+iv(x,y),其中
z
=
x
+
i
y
z=x+{\rm i} y
z=x+iy ,积分上下限分别为
z
0
=
x
0
+
i
y
0
,
z
1
=
x
1
+
i
y
1
z_0=x_0 +{\rm i}y_0, z_1=x_1+{\rm i}y_1
z0=x0+iy0,z1=x1+iy1,此时复变函数积分
I
=
∫
z
0
z
1
f
(
z
)
d
z
=
∫
(
x
0
,
y
0
)
(
x
1
,
y
1
)
(
u
(
x
,
y
)
+
i
v
(
x
,
y
)
)
d
(
x
+
i
y
)
I=\int_{z_0}^{z_1}f(z){\rm d}z=\int_{(x_0,y_0)}^{(x_1,y_1)}(u(x,y)+{\rm i}v(x,y)) {\rm d}(x+{\rm i} y)
I=∫z0z1f(z)dz=∫(x0,y0)(x1,y1)(u(x,y)+iv(x,y))d(x+iy)
将上式右边的实部和虚部分开,可得
I
=
∫
(
x
0
,
y
0
)
(
x
1
,
y
1
)
u
(
x
,
y
)
d
x
−
v
(
x
,
y
)
d
y
+
i
∫
(
x
0
,
y
0
)
(
x
1
,
y
1
)
v
(
x
,
y
)
d
x
+
u
(
x
,
y
)
d
y
I=\int_{(x_0,y_0)}^{(x_1,y_1)}u(x,y){\rm d}x-v(x,y){\rm d}y+{\rm i}\int_{(x_0,y_0)}^{(x_1,y_1)}v(x,y){\rm d}x+u(x,y){\rm d}y
I=∫(x0,y0)(x1,y1)u(x,y)dx−v(x,y)dy+i∫(x0,y0)(x1,y1)v(x,y)dx+u(x,y)dy
因为
f
(
z
)
f(z)
f(z)为解析函数,积分与路径无关,将积分路径取为折线路径。上式可化为4个定积分。
I
=
∫
x
0
x
1
u
(
x
,
y
0
)
d
x
−
∫
y
0
y
1
v
(
x
1
,
y
)
d
y
+
i
(
∫
x
0
x
1
v
(
x
,
y
0
)
d
x
+
∫
y
0
y
1
u
(
x
1
,
y
)
d
y
)
I=\int_{x_0}^{x_1}u(x,y_0){\rm d}x-\int_{y_0}^{y_1}v(x_1,y){\rm d}y+{\rm i}\left(\int_{x_0}^{x_1}v(x,y_0){\rm d}x+\int_{y_0}^{y_1}u(x_1,y){\rm d}y\right)
I=∫x0x1u(x,y0)dx−∫y0y1v(x1,y)dy+i(∫x0x1v(x,y0)dx+∫y0y1u(x1,y)dy)
以上过程应用MATLAB符号运算实现,其代码如下
%创建符号变量x,y
syms x real;
syms y real;
z=x+i*y; % 创建复变量
f=z^2; % 定义复变函数,注意要求是解析函数
z0=0; %给出积分下限
z1=3+3*i; %给出积分上限
complex_int(f,z0,z1) %应用积分函数complex_int进行积分运算
%定义积分求解函数complex_int
function v_int=complex_int(f,z0,z1)
% 本积分计算函数求解符号积分
% f被积分函数
% z0,z1分别为积分上限和积分上限
%定义函数内部的积分变量x,y
syms x real;
syms y real;
u=real(f); %提出被积函数实部
v=imag(f); %提出被积函数虚部
%提取积分上限和下限的实部及虚部
x0=sym(real(z0));
x1=sym(real(z1));
y0=sym(imag(z0));
y1=sym(imag(z1));
real_part=simplify(int(subs(u,y,y0),x,x0,x1)-int(subs(v,x,x1),y,y0,y1));%积分值的实部
imag_part=simplify(int(subs(v,y,y0),x,x0,x1)+int(subs(u,x,x1),y,y0,y1));%积分值的虚部
v_int=real_part+i*imag_part;% 返回得到的积分值
end
计算结果为
ans =
- 18 + 18i
2. 一般复变函数的曲线积分
设有向曲线C:
z
=
z
(
t
)
=
x
(
t
)
+
i
y
(
t
)
,
(
t
0
≤
t
≤
t
1
)
,
z=z(t)=x(t)+{\rm i}y(t), (t_0\leq t \leq t_1),
z=z(t)=x(t)+iy(t),(t0≤t≤t1),
f
(
z
)
f(z)
f(z)在曲线C上连续,则有
∫
C
f
(
z
)
d
z
=
∫
t
0
t
1
f
[
z
(
t
)
]
z
′
(
t
)
d
t
\int_C f(z) {\rm d}z=\int_{t_0}^{t_1} f[z(t)]z'(t){\rm d}t
∫Cf(z)dz=∫t0t1f[z(t)]z′(t)dt
或者
∫
C
f
(
z
)
d
z
=
∫
t
0
t
1
R
e
{
f
[
z
(
t
)
]
z
′
(
t
)
}
d
t
+
i
∫
t
0
t
1
I
m
{
f
[
z
(
t
)
]
z
′
(
t
)
}
d
t
\int_C f(z) {\rm d}z=\int_{t_0}^{t_1}{\rm Re}\{ f[z(t)]z'(t)\}{\rm d}t+{\rm i}\int_{t_0}^{t_1}{\rm Im}\{ f[z(t)]z'(t)\}{\rm d}t
∫Cf(z)dz=∫t0t1Re{f[z(t)]z′(t)}dt+i∫t0t1Im{f[z(t)]z′(t)}dt
这样,就可以将复积分化为两个定积分来表示。应用MATLAB符号积分,代码如下:
syms t real; %定义符号变量
%积分曲线C参数方程为
x=t;
y=t^2;
z=x+i*y;
dz=diff(z,t);
f=z^2; % 定义复变函数
%曲线C中参数t的变化范围tspan=[t0,t1]=[0,1]
complex_int(f,dz,[0,1])
function v_int=complex_int(f,dz,tspan)
% 本积分函数实现复变函数在积分曲线C上积分计算
% f被积分函数,dz为导数dz/dt
% tspan为曲线C的参数方程中参数的取值区间
syms t real;% 定义符号变量
ref=real(f*dz);
imf=imag(f*dz);
t0=sym(tspan(1)); % 取出积分上限
t1=sym(tspan(2)); % 取出积分上限
real_part=simplify(int(ref,t,t0,t1)); %符号积分结果的实部
imag_part=simplify(int(imf,t,t0,t1)); %符号积分结果的虚部
v_int=real_part+i*imag_part;
end
计算结果为
ans =
- 2/3 + 2i/3
欢迎网友批评指正。