トップ 一覧 検索 ヘルプ RSS ログイン

Tips-octaveの変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
!! OCTAVE 
MATHLAB の オープンソース版??
Maximaの場合は Tips-maxima

! インストール
 https://www.gnu.org/software/octave/
  https://www.gnu.org/software/octave/download.html

https://ftp.jaist.ac.jp/pub/GNU/

http://ftp.iij.ad.jp/pub/gnu/

http://ftp.kddlabs.co.jp/pub/gnu/


! 表示桁数
 >> pi
 pi = 3.1416

 >> format long
 >> pi
 ans =  3.14159265358979

 >> format
 >> pi
 ans = 3.1415

! マンデルブロ
 clear;
 clf;
 
 point=[-0.6,0];
 length=3.3;
 roop=15;
 thresh=2;
 cut=0.004*length;
 % 領域計算
 remin=point(1)-length/2;
 remax=point(1)+length/2;
 immin=point(2)-length/2;
 immax=point(2)+length/2;
 re=[remin:cut:remax];
 im=[immin:cut:immax];
 % 領域作成
 M=size(re)(2);
 N=size(im)(2);
 F=zeros(M,N);
 % 計算ループ
 for m=1:M
    for n=1:N
        z=0;
        c=re(m)+i*im(n);
        for k=1:roop
            z=z^2+c;
            % z=(abs(real(z))+i*abs(imag(z)))^2+c; 
            if abs(z)>thresh
                F(N+1-n,m)=k;
                break
            endif
            if k==roop
                F(N+1-n,m)=roop;
            endif
        endfor
    endfor
 endfor
 % 表示
 contourf(re,im,F)
 axis([remin remax immin immax],"square")
 xlabel("Re")
 ylabel("Im")
 
 % 結果保存
 print('hogePlot','-dpng')
 %% imwrite(F,"./hoge.png"); %% ではできない??なぜかな??

! 演算子
,,,
,加算,+,x+y
,減算,-,x-y
,かけ算,*,x*y
,割算,/,x/y
,剰余,rem(),rem(x、y)
,乗数1,^,x^y
,乗数2,**,x**y

! 行列の項目毎の演算子
,,,
,加算,.+,A+B
,減算,.-,A-B
,かけ算,.*,A*B
,割算,./,A/B
,乗数1,.^,A^B


! 行列
 A = [1 2 3;4 5 6;7 8 9]
 A(1, 2) = 1
 # 1行2列を1にする
 # =>
 # A =
 #    1   1   3
 #    4   5   6
 #    7   8   9

 A(:, 2) = 5
 # 2列のすべてを5にする
 # =>
 # A =
 #    1   5   3
 #    4   5   6
 #    7   5   9

 A(3, :) = []
 # 3行目をすべて削除(行の削除)
 # =>
 # A =
 #    1   5   3
 #    4   5   6

! for 文
 for i=1:5
  i
 endfor
 
 # =>
 # j =  1
 # j =  2
 # j =  3
 # j =  4
 # j =  5
! if文
 if(i == 0 && j == 0)
    k
  elseif i = 1
    j
  else
    i
  endif


! 方程式の解
 #  x + 2y = 3,
 # 2x + 5y = 4 の解
 A = [1 2; 2 5]
 b = [3;4]
 A\b # 解を返す

! ファンクション
 function y = given_function (x) # 返り値 = 関数名 (引数) 
  if (0 < x && x < 1)
    y = 1/x + exp(x);
  else
    y = 0;
  endif
 endfunction