Scilab覚書き

MATLAB/Scilabで理解する数値計算を読んで学んだ点についてメモ。

  • 関数の定義
    --> deff('[y]=f(x)','y=sin(x)+sin(2*x)');
    --> x=linspace(0,10,100);
    --> fplot2d(x,z);
  • スプライン補間
    --> x=[0 0.5 1 1.5 2 2.5 3];
    --> f=sin(x).*exp(-x);
    --> plot2d(x',f',-1);
    --> fi=smooth([x;f],0.1);
    --> plot2d(fi(1,:)',fi(2,:)');
  • 高速フーリエ変換
    --> N=8;
    --> w=exp(2*%pi*%i/N*(0:N-1));
    --> f=exp(w);
    --> F=fft(f,-1);
    --> real(F/N)'
  • 固有値
    --> A=[1 2 ; 2 1];
    --> [V,D]=spec(A);
    --> V
    --> diag(D)
  • 多項式の解
    --> x=poly(0,'x');
    --> f=x^4-5*x^3+5*x^2+5*x-6;
    --> roots(f)

  1. 行列を与える関数
    zeros(2,3):要素がすべて0の行列
    ones(2,3):要素がすべて1の行列
    eye(2,3):単位行列
    diag([1 2;2 3]):対角要素のベクトル
    rand(2,3):要素が乱数の行列
  2. ベクトル要素とスカラー演算
    c=(a1+α,...,an+α):c=a+alpha
    c=(α×a1,...,α×an):c=alpha×α
    c=(α/a1,...,α/an):c=alpha ./ α
    c=(a1/α,...,an/α):c=a/alpha
    c=(α^a1,...,α^an):c=alpha .^ α
    c=(a1^α,...,an^α):c=a .^ alpha
  3. ベクトル/行列の操作
    sum([1 2 3]),sum(A,1),sum(A,2):行列の値の和
    prod(v),prod(A,1),prod(A,2):行列の値の積
    mean(v):平均値
    max(v):最大値
    min(v):最小値
    length(A):Aの全ての要素の数
    [m,n]=size(A):行列の行数と列数
    fliplr(v):左右の反転
    flipud(v):上下の反転
  4. 行列の要素の指定
    A(2,3):Aの(2,3)要素
    A([1 3],1):Aの第1列の第1行と第3行
    A(1:5,1):Aの第1列の第1行から第5行
    A(:,1):Aの第1列
    v($):vの最後の要素