matlabの下で関数を記述して呼び出す(同じmファイルで)

900 ワード

一般に、1つの関数はmファイルに対応し、ファイル名は関数名と同じである.
c書き慣れたので、メイン関数と関数を同じmファイルに書いてみます.
フォーマットは次のとおりです.
function name
しゅかんすうボディ
end
function s=name(x)
関数本体
end
注意:close allなどの主関数の前にコードを持つことはできません.clear all;とか.
ルーチンを添付
book2_2.m
%                

function book2_2
n=20;
length = n+1;
x_in = -1:2/100:1;
t = 1:size(x_in,2);

x = -1:2/10:1;
y = 1./(1+25*x.^2)

y_out = 1./(1+25*x_in.^2);
%lagrange
y_out_lag = lagrange(x,y,x_in);

%spline
S=csapi(x,y);
y_out_s = fnval(S,x_in);

plot(t,y_out,'r',t,y_out_lag,'b',t,y_out_s,'y');
title('n=20');

end

function y_out=lagrange(x,y,x_in)
    ii=1:length(x)
    y_out = zeros(size(x_in))
    for i=ii
        ij=find(ii~=i);
        y1=1;
        for j=1:length(ij)
            y1=y1.*(x_in-x(ij(j)));
        end
        y_out=y_out+y1*y(i)/prod(x(i)-x(ij));
    end
end