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 に答える