MATLAB 求解释这一题 划红线的地方需要着重讲解😭

编程 MATLAB

这个是复变函数的知识点,第一个画红线的地方的表达式需要根据复数的欧拉定理进行理解:

复数的欧拉定理的内容是:exp(i*theta)=cos(theta)+i*sin(theta)

MATLAB等软件也是在这一定理的基础上定义了exp函数对复数参数的处理。

所以

x=r*exp(i*t);

就是

x=r*(i*sin(t)+cos(t));

不过在表达上比前者简洁了而已,效果是一样的。有了该定理,复数可以用更简单的表达上实现向量的功能。

多看MOOC,期末不挂

第二处红线的问题是,nargout的作用是什么,什么是输出变量:

nargout是一个matlab风格十足的函数,别的语言的函数是根据形式参数/实际参数确认返回值,最多也只能根据右值(rvalue)确认;而matlab偏偏可以利用nargout根据左值(lvalue)确认返回值.

简单说:直接调用fun(123),它的nargout只能是0;

将fun函数的值返给ret变量,ret=fun(123),此时,nargout==1;

而当调用[ret1,ret2]=fun(123)时,fun就有nargout==2;

这个即不用事先约定的,灵活变通的返回值。

于是,开始调试这个函数:

可以看到

circle(12);

的输出结果是画一个空心的圆,半径是12

那么circle(2);

就是画一个空心的,半径为2的圆

第二题,输入s=circle(2);

得到一个实心圆,填充为蓝色,半径为2

第三题,fill和最后一行代码,fill函数是在返回值或者说是输出变量个数不小于1时被调用的,其功能是,fill(x,y,color)即填充一系列x坐标和y坐标围成的图形。前面说复数实现了向量的功能即是plot(z)即plot(real(z),imag(z)),而对于fill不能直接用复数,则fill(real(z),imag(z),'b')

追答

书上写的代码也许不合matlab2021版本,所以,调试过程中,我调整了一下。

function f = circle(r,varargin)

if nargin>1
error('Too many input aguemnsl!')
elseif nargin==0
error('must have one input arguments!');
end;
%r=cell2mat(varargin(1));
t=0:pi/100:2*pi;
i=complex(0,1);
x=r.*exp(i*t);
figure
if nargout==0

plot(x,'g');
else
f=pi*r*r;
fill(real(x),imag(x),'b')
end

axis('square')

end

温馨提示:答案为网友推荐,仅供参考
相似回答