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)dxv(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)dxy0y1v(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),(t0tt1),
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+it0t1Im{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

欢迎网友批评指正。

  • 15
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值