柯西辐角定理(Cauchy Argument Principle)及其可视化

Cauchy Argument Principle(柯西辐角定理)

定义

Cauchy Argument Principle 是复分析中的一个重要原理,它描述了一个全纯函数(meromorphic function)在一个闭合路径内的零点与极点的关系。具体来说,对于一个有理函数 f ( z ) f(z) f(z),如果 f ( z ) f(z) f(z) 在一个简单闭合路径 Γ \Gamma Γ 内外全纯(除了一些孤立奇点),则有以下关系:

1 2 π i ∮ Γ f ′ ( z ) f ( z ) d z = Z − P \frac{1}{2\pi i} \oint_{\Gamma} \frac{f'(z)}{f(z)} dz = Z - P 2πi1Γf(z)f(z)dz=ZP

其中:

  • Z Z Z f ( z ) f(z) f(z) Γ \Gamma Γ 包围的区域内的零点个数(计重数)。
  • P P P f ( z ) f(z) f(z) Γ \Gamma Γ 包围的区域内的极点个数(计重数)。

直观理解
该原理说明,函数的 相位变化(即路径积分)与它在路径内的奇点(零点和极点)的分布直接相关。

基本性质
  1. 积分形式与相位变化

    • 函数 f ( z ) f(z) f(z) f ′ ( z ) f ( z ) \frac{f'(z)}{f(z)} f(z)f(z) 是其对数导数,描述了 f ( z ) f(z) f(z) 的相位变化速率。
    • 路径积分的结果反映了 f ( z ) f(z) f(z) 在路径 Γ \Gamma Γ 上完成的相位绕转数。
  2. 零点与极点的平衡

    • 如果 Γ \Gamma Γ 内零点和极点数量相同,则积分结果为零。这对应于 f ( z ) f(z) f(z) 的相位不发生净变化。
  3. 闭合路径方向影响正负

    • Γ \Gamma Γ 按逆时针方向绕转,则零点 Z Z Z 和极点 P P P 按正计数;若顺时针方向,则结果取相反符号。
  4. 适用于有理函数和一般全纯函数

    • 对于有理函数 f ( z ) = P ( z ) Q ( z ) f(z) = \frac{P(z)}{Q(z)} f(z)=Q(z)P(z),可以通过分子和分母分别分析其零点与极点。
    • 对于一般的全纯函数,只需考虑零点,极点为零。
  5. 路径上的条件

    • 函数 f ( z ) f(z) f(z) 在路径 Γ \Gamma Γ 上必须无零点或极点(即路径不可跨越奇点)。
应用
  1. 判断区域内的零点与极点个数
    通过路径积分直接计算 Z − P Z - P ZP,得出路径内零点和极点的差值。

  2. 稳定性分析
    在控制理论中,Cauchy Argument Principle 用于判断系统的特征方程是否具有右半平面的根,从而判断系统的稳定性。

  3. 复变函数的相位变化
    研究函数 f ( z ) f(z) f(z) 的相位如何随复平面变化,例如在信号处理和滤波器设计中。

  4. 与 Nyquist 稳定判据的关系
    Nyquist 稳定性判据本质上是 Cauchy Argument Principle 的工程应用,判断系统反馈的闭环稳定性。

与其他定理的关系
  1. Cauchy-Goursat 定理

    • f ( z ) f(z) f(z) 在闭合路径内全纯,则积分为零。Cauchy Argument Principle 是这一定理的推广,考虑了奇点的情况。
  2. Rouché 定理

    • 如果两个函数在路径 Γ \Gamma Γ 上满足 ∣ f ( z ) − g ( z ) ∣ < ∣ f ( z ) ∣ |f(z) - g(z)| < |f(z)| f(z)g(z)<f(z),则它们在 Γ \Gamma Γ 内零点数量相同。这是 Argument Principle 的一个推论。
  3. 留数定理

    • Argument Principle 的积分形式与留数定理密切相关, f ′ ( z ) f ( z ) \frac{f'(z)}{f(z)} f(z)f(z) 的积分本质上是围绕零点和极点计算的总留数。

柯西辐角定理可视化

s平面包含极点和零点数目相同
  • 在这种情况下,W平面上的函数值经过Cauchy积分变换后,其闭合路径的环绕(0,j0)次数为0。
% 生成GIF的文件名
filename = 'cauchy_principle.gif';

for bin = 1:m
    s = pt(1,bin)+ pt(2,bin)*1i;
    
    % S平面绘图
    subplot(1, 2, 1);
    plot(real(s), imag(s), 'r.');
    title('S-plane Contour');
    axis([-3 2 -2 2]);
    hold all;
    plot([-1, -.8] , [0 0], 'bx', 'MarkerSize', 10);
    plot([-0.75 -0.75], [.5 -.5], 'bo', 'MarkerSize', 10);
    
    % W平面绘图
    tnf = (s^2 + 1.5*s + 0.8125)/((s + 1)*(s + 0.8)); 
    subplot(1, 2, 2);
    plot(real(tnf), imag(tnf), 'g.');
    plot(0, 0, 'k*', 'MarkerSize', 10)
    title('W-plane Plot');
    axis([-3 2 -3 3]);
    hold all;
    
    % 捕获帧并保存为GIF
    frame = getframe(gcf); % 获取当前帧
    im = frame2im(frame); % 转换为图像
    [imind, cm] = rgb2ind(im, 256); % 转换为索引图像
    if bin == 1
        imwrite(imind, cm, filename, 'gif', 'Loopcount', inf, 'DelayTime', 0.02);
    else
        imwrite(imind, cm, filename, 'gif', 'WriteMode', 'append', 'DelayTime', 0.02);
    end
    
    pause(0.02);
end
s平面包含零点数大于极点数
  • 当零点数多于极点数时,W平面上会出现环绕原点的闭合路径,其环绕次数等于零点数与极点数的差值(零极点余数)。这说明零点的贡献大于极点,使得W平面路径围绕原点(0,j0)顺时针。P-Z=N,此时P=1,Z=2,N=-1,即顺时针围绕(0,j0)一圈。
% 生成GIF的文件名
filename = 'cauchy_principle_clockwise.gif';

% 将路径点改为顺时针
angles = linspace(0, -2*pi, m); % 顺时针方向
pt = [cos(angles) + xoff; sin(angles) + yoff];

for bin = 1:m
    s = pt(1, bin) + pt(2, bin) * 1i;
    
    % S平面绘图
    subplot(1, 2, 1);
    plot(real(s), imag(s), 'r.');
    title('S-plane Contour');
    axis([-3 2 -2 2]);
    hold all;
    % 设置两个极点位置:-1 和 -0.8
    plot([1, -0.8], [0, 0], 'bx', 'MarkerSize', 10);
    % 设置一个零点位置:-0.75 + 0.5i
    plot([-0.75, -0.75], [0.5, -0.5], 'bo', 'MarkerSize', 10);
    
    % W平面绘图
    tnf = (s - (-0.75 + 0.5i)) * (s - (-0.75 - 0.5i)) / ((s - 1) * (s + 0.8));
    subplot(1, 2, 2);
    plot(real(tnf), imag(tnf), 'g.');
    plot(0, 0, 'k*', 'MarkerSize', 10);
    title('W-plane Plot');
    axis([-3 2 -3 3]);
    hold all;
    
    % 捕获帧并保存为GIF
    frame = getframe(gcf); % 获取当前帧
    im = frame2im(frame); % 转换为图像
    [imind, cm] = rgb2ind(im, 256); % 转换为索引图像
    if bin == 1
        imwrite(imind, cm, filename, 'gif', 'Loopcount', inf, 'DelayTime', 0.02);
    else
        imwrite(imind, cm, filename, 'gif', 'WriteMode', 'append', 'DelayTime', 0.02);
    end
    
    pause(0.02);
end
s平面包含极点数大于零点数
  • 此时,W平面上出现了多余极点的影响,导致路径的环绕方向和次数发生变化。P-Z=N,此时P=2,Z=1,N=1,即逆时针围绕(0,j0)一圈。
% 生成GIF的文件名
filename = 'cauchy_principle_clockwise.gif';

% 将路径点改为顺时针
angles = linspace(0, -2*pi, m); % 顺时针方向
pt = [cos(angles) + xoff; sin(angles) + yoff];

for bin = 1:m
    s = pt(1, bin) + pt(2, bin) * 1i;
    
    % S平面绘图
    subplot(1, 2, 1);
    plot(real(s), imag(s), 'r.');
    title('S-plane Contour');
    axis([-3 2 -2 2]);
    hold all;
    % 设置两个极点位置:-1 和 -0.8
    plot([-1, -0.8], [0, 0], 'bx', 'MarkerSize', 10);
    % 设置一个零点位置:-0.75 + 0.5i
    plot([-0.75, 0.75], [0.5, -0.5], 'bo', 'MarkerSize', 10);
    
    % W平面绘图
    tnf = (s - (-0.75 + 0.5i)) * (s - (0.75 - 0.5i)) / ((s + 1) * (s + 0.8));
    subplot(1, 2, 2);
    plot(real(tnf), imag(tnf), 'g.');
    plot(0, 0, 'k*', 'MarkerSize', 10);
    title('W-plane Plot');
    axis([-10 10 -10 10]);
    hold all;
    
    % 捕获帧并保存为GIF
    frame = getframe(gcf); % 获取当前帧
    im = frame2im(frame); % 转换为图像
    [imind, cm] = rgb2ind(im, 256); % 转换为索引图像
    if bin == 1
        imwrite(imind, cm, filename, 'gif', 'Loopcount', inf, 'DelayTime', 0.02);
    else
        imwrite(imind, cm, filename, 'gif', 'WriteMode', 'append', 'DelayTime', 0.02);
    end
    
    pause(0.02);
end

s平面包含只包含极点
  • 在仅有极点的情况下,W平面的闭合路径完全受极点的影响。路径会围绕原点,并表现出一个负的环绕次数(通常为极点数的负值)。此情形表明W平面上的轨迹由极点的贡献主导。P-Z=N,此时P=2,Z=0,N=2,即逆时针围绕(0,j0)转2圈。具体转两圈是如何转动的看下面的图
% 生成GIF的文件名
filename = 'cauchy_principle_clockwise.gif';

% 将路径点改为顺时针
angles = linspace(0, -2*pi, m); % 顺时针方向
pt = [cos(angles) + xoff; sin(angles) + yoff];

for bin = 1:m
    s = pt(1, bin) + pt(2, bin) * 1i;
    
    % S平面绘图
    subplot(1, 2, 1);
    plot(real(s), imag(s), 'r.');
    title('S-plane Contour');
    axis([-3 2 -2 2]);
    hold all;
    % 设置两个极点位置:-1 和 -0.8
    plot([-1, -0.8], [0, 0], 'bx', 'MarkerSize', 10);
    % 设置一个零点位置:-0.75 + 0.5i
    plot([0.75, 0.75], [0.5, -0.5], 'bo', 'MarkerSize', 10);
    
    % W平面绘图
    tnf = (s - (0.75 + 0.5i)) * (s - (0.75 - 0.5i)) / ((s + 1) * (s + 0.8));
    subplot(1, 2, 2);
    plot(real(tnf), imag(tnf), 'g.');
    plot(0, 0, 'k*', 'MarkerSize', 10);
    title('W-plane Plot');
    axis([-10 10 -10 10]);
    hold all;
    
    % 捕获帧并保存为GIF
    frame = getframe(gcf); % 获取当前帧
    im = frame2im(frame); % 转换为图像
    [imind, cm] = rgb2ind(im, 256); % 转换为索引图像
    if bin == 1
        imwrite(imind, cm, filename, 'gif', 'Loopcount', inf, 'DelayTime', 0.02);
    else
        imwrite(imind, cm, filename, 'gif', 'WriteMode', 'append', 'DelayTime', 0.02);
    end
    
    pause(0.02);
end
s平面包含只包含零点
  • 在仅有零点时,W平面上的路径仅受到零点影响。路径围绕原点的环绕次数等于零点的数目,方向由零点的排列决定。此情形下,零点的贡献完全主导了W平面轨迹。P-Z=N,此时P=0,Z=2,N=-2,即顺时针围绕(0,j0)转2圈。具体转两圈是如何转动的看下面的图
% 生成GIF的文件名
filename = 'cauchy_principle_clockwise.gif';

% 将路径点改为顺时针
angles = linspace(0, -2*pi, m); % 顺时针方向
pt = [cos(angles) + xoff; sin(angles) + yoff];

for bin = 1:m
    s = pt(1, bin) + pt(2, bin) * 1i;
    
    % S平面绘图
    subplot(1, 2, 1);
    plot(real(s), imag(s), 'r.');
    title('S-plane Contour');
    axis([-3 2 -2 2]);
    hold all;
    % 设置两个极点位置:-1 和 -0.8
    plot([1, 0.8], [0, 0], 'bx', 'MarkerSize', 10);
    % 设置一个零点位置:-0.75 + 0.5i
    plot([-0.75, -0.75], [0.5, -0.5], 'bo', 'MarkerSize', 10);
    
    % W平面绘图
    tnf = (s - (-0.75 + 0.5i)) * (s - (-0.75 - 0.5i)) / ((s - 1) * (s - 0.8));
    subplot(1, 2, 2);
    plot(real(tnf), imag(tnf), 'g.');
    plot(0, 0, 'k*', 'MarkerSize', 10);
    title('W-plane Plot');
    axis([-3 2 -3 3]);
    hold all;
    
    % 捕获帧并保存为GIF
    frame = getframe(gcf); % 获取当前帧
    im = frame2im(frame); % 转换为图像
    [imind, cm] = rgb2ind(im, 256); % 转换为索引图像
    if bin == 1
        imwrite(imind, cm, filename, 'gif', 'Loopcount', inf, 'DelayTime', 0.02);
    else
        imwrite(imind, cm, filename, 'gif', 'WriteMode', 'append', 'DelayTime', 0.02);
    end
    
    pause(0.02);
end

以下是用CSDN的Markdown格式给出的内容,已按照要求格式化:

总结

通过Cauchy积分原理,零极点分布对复平面的路径积分有直接影响。零点和极点的数目差(零极点余数)决定了W平面路径环绕原点的次数和方向。代码的实现展示了不同分布下,S平面路径变换至W平面的动态过程,有助于理解复变函数和路径积分之间的关系。

你可能感兴趣的:(MATLAB,算法,复变函数,Nyquist,柯西辐角定理,matlab)