1

我正在自学 MatLab,我的书中有这个作业,我不太明白。基本上我正在编写一个函数,它将通过使用泰勒级数来计算正弦值。到目前为止,我的代码如下:

    function y = sine_series(x,n);
    %SINE_SERIES: computes sin(x) from series expansion
    % x may be entered as a vector to allow for multiple calculations simultaneously
    if n <= 0
        error('Input must be positive')
    end
    j = length(x);
    k = [1:n];
    y = ones(j,1);
    for i = 1:j
    y(i) = sum((-1).^(k-1).*(x(i).^(2*k -1))./(factorial(2*k-1)));
    end

这本书现在要求我包含一个可选输出err,它将计算 sin(x) 和 y 之间的差异。这本书暗示我可以用它nargout来完成这个,但是书中没有关于如何使用它的例子,阅读 MatLab 关于这个主题的帮助并没有让我更聪明。

如果有人可以帮助我理解这一点,我将不胜感激!

4

1 回答 1

1

nargout检查调用函数的输出参数的数量的调用。根据nargout您可以将条目分配给输出参数的大小varargout。对于您的代码,这看起来像:

function [y varargout]= sine_series(x,n);
%SINE_SERIES: computes sin(x) from series expansion
% x may be entered as a vector to allow for multiple calculations simultaneously
if n <= 0
    error('Input must be positive')
end
j = length(x);
k = [1:n];
y = ones(j,1);
for i = 1:j
y(i) = sum((-1).^(k-1).*(x(i).^(2*k -1))./(factorial(2*k-1)));
end
if nargout ==2  
    varargout{1} = sin(x)'-y;  
end

比较输出

[y] = sine_series(rand(1,10),3)

[y err] = sine_series(rand(1,10),3)

看看有什么不同。

于 2012-05-04T20:33:29.443 回答