1. Laplace 变换及其反变换
1.Laplace 变换及其反变换的定义域性质
2. Laplace 变换的计算机求解
求解已知函数的 Laplace 变换用数值编程的方式是无法实现的,如果需要采用计算机来求解这样的问题,必须借助于计算机数学语言.MATLAB语言的符号运算工具箱可以轻松地求解 Laplace 变换问题。具体的变换及反变换问题的求解步骤为:
(1)用 syms 命令申明符号变量 t,这样就能描述时域表达式 f 了。
(2)直接调用 laplace() 函数,就可以得出所需的时域函数 Laplace 变换式子:
F = laplace(f ) % 采用默认的 t 为时域变量;
F = laplace(f ,v,u) % 用户指定时域变量 v 和复域变量名 u。
如果已知 Laplace 变换式子,则应该首先给出 Laplace 变换式子 f ,然后采用符号运算工具箱中的 ilaplace() 函数对其进行反变换。该函数的调用格式为:
f = ilaplace(F ) % 采用默认的 s 为时域变量;
f = ilaplace(F ,u,v) % 用户指定时域变量 v 和复域变量名 u。
3. Laplace 变换问题的数值求解
Juraj Valsa 开发了基于数值方法的 Laplace 反变换的 MATLAB 函数 INVLAP(),该函数的调用格式为 [t,y] = INVLAP(f ,t0,tf ,N ,其他参数) ,其中原函数由含有字符 s的字符串表示, (t0, tf) 为感兴趣的区间, N 为用户选择的计算点数,用户可以选择不同的 N值来检验运算的结果。
2. Fourier 变换及其反变换
1. Fourier变换及其反变换的定义域性质
2. Fourier 变换的计算机求解
和 Laplace 变换一样,应该先申明符号变量,并定义出原函数为 f ,这样就可以按如下的格式调用 Fourier 变换求解函数 fourier(),得出该函数的 Fourier 变换式:
F = fourier(f ) % 按默认变量进行 Fourier 变换;
F = fourier(f ,v,u) % 将 v 的函数变换成 u 的函数。
给出了 Fourier 变换表达式,则可以通过 ifourier() 函数求解该函数的 Fourier 反变换问题。该函数的具体调用格式为:
f = ifourier(F ) % 按默认变量进行 Fourier 反变换;
f = ifourier(F ,u,v) % 将 u 的函数变换成 v 的函数。
从上面的语句可以看出,如果定义了已知函数,则可以用一个语句求解出其 Fourier 变换或反变换式,变换函数的调用和 Laplace 变换一样简单。如果已知的是 MATLAB 得出的Fourier 变换式,则可以直接使用 ifourier() 函数进行变换。
3.连续、离散 Fourier 正弦和余弦变换
MATLAB 语言的符号运算工具箱中并未直接提供余弦 Fourier 变换的函数,所以可以
考虑采用符号积分的方法直接求取余弦 Fourier 变换。另外,早期版本的 MATLAB 中,可以
调用底层 Maple 函数直接计算给定函数的 Fourier 正弦、余弦变换,具体格式为
F = maple('fouriersin',f ,t,ω) % 求解 Fourier 正弦变换;
F = maple('fouriercos',f ,t,ω) % 求解 Fourier 余弦变换;
f = maple('invfouriersin',F ,ω,t) % 求解 Fourier 反正弦变换;
f = maple('invfouriercos',F ,ω,t) % 求解 Fourier 反余弦变换。
其中, maple() 函数是 MATLAB 符号运算工具箱中的函数,允许用户直接调用 Maple 中的有关函数, 'fouriersin' 等是 Maple 中的函数名,其余参数是 Maple 中参数的格式。
3. 其他积分变换问题及求解
1. Mellin 变换
早期版本的 MATLAB 可以调用 Maple 下的底层函数直接求取 Mellin 正反变换问题,相应的函数为 mellin() 和 invmellin(),这些函数在符号运算工具箱中未给出 MATLAB实现,但可以通过其支持的语句直接调用 Maple 语言中现成的函数得出所需的结果。这两个函数的具体调用格式为:
F = maple('mellin',f ,t,z) % 求解 Mellin 变换;
f = maple('invmellin',F ,z,t) % 求解 Mellin 反变换。
2. Hankel 变换及求解
早期版本的 MATLAB 可以借助于 Maple 语言中的 hankel() 和 invhankel() 函数求取给定函数的 Hankel 正反变换,其调用格式为:
F = maple('hankel',f ,t,ω,ν ) % 求解 Hankel 变换;
f = maple('invhankel',F ,ω,t,ν ) % 求解 Hankel 反变换。
4. Z变换及其反变换
1. z 变换及反变换定义与性质
2. z 变换的计算机求解
利用 MATLAB 的符号运算工具箱,则 z 变换及其反变换可以很容易地求取出来,掌握这样的工具可以免除复杂问题的手工推导,既节省时间也能避免底层的低级错误。利用符号运算工具箱中提供的 ztrans() 和 iztrans() 函数可以得出给定函数的正反 z 变换。这两个函数的调用格式为:
F = ztrans(f ,k,z) % z 变换,将 k 的函数变换成 z 的函数;
F = iztrans(f ,z,k) % z 反变换,将 z 的函数变换成 k 的函数。
若原函数只有一个变量,则调用时无需给出 k 和 z。
5. 复变函数问题的计算机求解
1 复数矩阵及其变换
前面介绍过, MATLAB 可以用来直接表示复数矩阵。假设已知一个复数矩阵 Z,则可以使用简单函数对该矩阵进行如下变换:
(1) 共轭复数矩阵 Z1 = conj(Z) 。
(2) 实部、虚部提取 R = real(Z) , I = imag(Z) 。
(3) 幅值、相位表示 A = abs(Z) , P = angle(Z) ,其中相位的单位为弧度。
2. 复变函数的映射与Riemann 面绘制
复变函数映射的三维图形表示和实函数是不一致的,复变函数映射应该首先采用cplxgrid() 函数生成极坐标网格,用户可以根据给定的单值复变函数公式计算出变量 f ,然后由 cplxmap() 函数绘制该复变函数的映射曲面,这类曲面又称为 Riemann 面。这些函数具体调用格式为:
z = cplxgrid(n); 给出语句计算 f ; cplxmap(z,f )。
3. 留数的概念与计算
利用 MATLAB 的符号运算工具箱求留数的方法很简单。假设已知奇点 a 和重数 m,则用下面的 MATLAB 语句自然可以求出相应的留数。
c = limit(F *(z − a),z,a) % 单奇点;
c = limit(diff(F *(z −a)^m,z,m−1)/prod(1:m−1),z,a) % m 重奇点。
4. 有理函数的部分分式展开
利用 MATLAB 符号运算工具箱中的 gcd() 函数可以直接求出两个多项式的最大公约数。该函数的调用方法为C = gcd(A,B) ,其中, A 和 B 分别表示两个多项式,该函数将得出这两个多项式的最大公约数 C,若得出的 C 为多项式,则两个多项式为非互质的多项式,这时两个多项式可以约简为 A/C 和 B/C。
5. 基于部分分式展开的 Laplace 反变换
符号运算工具箱中提供的 Laplace 反变换函数 ilaplace() 可以较好地解决一般函数
的 Laplace 反变换问题。但带有复特征值的有理函数的 Laplace 反变换问题不适合由该函数直接求解,直接用该函数求解出的解可读性很差。
利用MATLAB编写算法,其调用格式为 [r,p,K] = pfrac(num,den)。
6. 封闭曲线积分问题计算
6. 差分方程的求解
1 一般差分方程的解析求解方法
对 Y (z) 进行 z 反变换则可以得出差分方程的解析解 y(t)。根据前面的算法,可以编写出一般差分方程的通用求解函数:
function y=diff_eq(A,B,y0,U,d)
E=0; n=length(A)-1; syms z; if nargin==4, d=0; end
m=length(B)-1; u=iztrans(U); u0=subs(u,0:m-1);
for i=1:n, E=E+A(i)*y0(1:n+1-i)*[z.^(n+1-i:-1:1)].'; end
for i=1:m, E=E-B(i)*u0(1:m+1-i)*[z.^(m+1-i:-1:1)].'; end
Y=(poly2sym(B,z)*U*z^(-d)+E)/poly2sym(A,z); y=iztrans(Y);
其调用语句为 y = diffeq(A,B,y0,U ,d) ,其中, A、 B 向量分别表示差分方程左侧和右侧的系数向量, U 为输入信号的 z 变换表达式, y0 给出输出信号的初值向量, d 为延迟步数,其默认值为 0。调用该函数可以直接获得差分方程的解析解。该函数也可用于非首一化的差分方程。
2.复平面映射分型迭代与图形绘制