数学物理方法的matlab解法及可视化(一)复变函数图形
数学物理方法的matlab解法及可视化(一)复变函数图形
本节是本专栏的第一节,更是后续学习的基础。
说明:复变函数和实变函数的计算在matlab中是相同的,但是,对于多值函数,matlab仅仅是对主值进行计算。
matlab表现四维数据的方法是在三维数据的基础上加上颜色,具体的画法是以xy平面表示自变量所在的复平面,以z轴表示复变函数的实部,用颜色表示复变函数值的虚部。为了能明确表示颜色和数值的对应关系,一般还需要用指令colorbar表示各种颜色所代表的数值。
matlab画复变函数图形的指令有以下3个
(1)CPLXGRID 构建一个极坐标的复数数据网络
格式:Z=CPLXGRID(m)
这是一个(m+1)*(2*m+1)的复数的极坐标下的数据网络
在指令窗口输入:edit cplxgrid,将显示该指令的源程序
function z = cplxgrid(m)
%CPLXGRID Polar coordinate complex grid.
% Z = CPLXGRID(m) is an (m+1)-by-(2*m+1) complex polar grid.
% See CPLXMAP.
% Copyright 1984-2014 The MathWorks, Inc.
r = (0:m)'/m;
theta = pi*(-m:m)/m;
z = r * exp(i*theta);
(2)CPLXMAP 对复变函数作图
格式:CPLXMAP(z,f(z),(optional bound))
这将画出复变函数
的图像,选项optional bound用来选择变量的范围
源程序如下:
function cplxmap(z,w,B)
%z,w,B分别是自变量,函数值和函数值的作图范围
%CPLXMAP Plot a function of a complex variable.
% CPLXMAP(z,f(z),(optional bound))
% Used by CPLXDEMO.
%
% See also CPLXGRID.
% Copyright 1984-2014 The MathWorks, Inc.
blue = 0.2;
x = real(z);
y = imag(z);
u = real(w);
v = imag(w);
%如果输入变量数大于两个,即指定了函数值的范围,就将不需要的函数值去掉
if nargin > 2%指令nargin是输入的变量数目
k = find((abs(w) > B) | isnan(abs(w)));
%找出绝对值大于B或者为非数的函数值的元素足标
if length(k) > 0%如果存在这样的数,则作如下处理
u(k) = B*sign(u(k));%将范围以外的函数值的实部都设为B
v(k) = zeros(size(k));%将范围以外的函数值的虚部都设为0
v = v/max(max(abs(v)));%函数值虚部归一化
v(k) = NaN*ones(size(k));%设为非数就可以不对他们作图
end
end
M = max(max(u));%求出函数值的大小范围