演習室活用 - eiichiromomma/CVMLAB GitHub Wiki

(演習室活用) 20160523 インセンティブ

※この情報は2016年5月21日現在の情報です

eriite

  • サポート・ダウンロード
  • CST Client: 演習室の端末の情報
  • CST Unix: 謎。入っているのはRed Hat Enterprise Linux。サーバ環境をテストしたい場合に申請?

F120?に入ってるソフト

画像を弄りたい(フォトレタッチ)

  • Adobe Photoshop
    • 写真家,デザイナー等が使うプロレベルのフォトレタッチソフト
    • ビットマップ画像
    • 高機能
    • 演習室と研究室のマシンなら使える契約
    • 個人だと月2000円くらい(Creative Cloud)
  • GIMP2
    • Photoshopに対抗できる数少ないフリーのフォトレタッチソフト
    • Python言語で拡張可能

線画を書きたい

  • Adobe Illustrator
    • 書籍編集,デザイナー等が使うプロレベルのドローイングソフト
    • ベクター画像(拡大してもギザギザにならない)
    • 発表用ポスター(A0とかA1)の作成
    • 高機能
    • 演習室と研究室のマシンなら使える契約
    • 個人だと月2000円くらい(Creative Cloud)
  • Inkscape
    • Illustratorに対抗できるフリーのドローイングソフト
    • 最近は日本語の書籍も増えた
    • SVG形式の扱いが素直
    • 日本語の扱いに若干の不安
    • 頑張れば発表用ポスターも作れる

CGを作りたい

  • POV-Ray

    • Computer Graphics記述環境
    • 3次元空間にモノ,光源,カメラを指定してカメラに映る映像を計算(レンダリング)する
    • Resources->Library/Object Collectionにサンプル
    • 計算機のパワーが必要
    • CG関係の主要なところを押さえているので教材にも使われる
  • Metasequoia

    • フリーの3Dモデラー(有料ライセンスもあり)
    • メタセコ
    • 作者が日本人
    • 最近Blender等に押されて影が薄い

ゲーム・3D物理シミュレーションを作りたい

  • Unity
    • 3D,2Dのゲームエンジン
    • アセットを追加してキャラクター,モノ等を並べ衝突検知後の動作等についてスクリプト(C#, JS等)で記述する
    • UE4よりは軽い

Unixっぽい環境を使いたい

  • Cygwin

    • Unix, GNUのコマンド,ライブラリ群,X Window System等
    • Webサーバを使ったサービス等,通常はLinuxやMac OS Xが必要になるもののWindows版
    • フリーなので自宅でも試せる
    • 結構便利
    • LinuxやMac OS Xに比べて動作が重い
  • PuTTY

    • 外のサーバに安全に接続(SSH)する端末ソフト
    • ここでは使わない

Windowsアプリケーションを作りたい

  • Visual Studio
    • Windowsでのデファクト開発環境
    • C++, C#, VBでのWindowsアプリの開発では必須
      • C++: 何でもできるが本格的にやると難解
      • C#: 直ぐにアプリを作りたいときに便利
      • VB: 面倒(個人の意見です)
    • 学生はDreamSparkで無料
    • 演習室はライセンスの関係で2012と2008が混在

科学計算をやりたい

  • MATLAB
    • 工学系のデータ処理,計測,シミュレーションに関して幅広い
    • 行列演算に強い
    • 企業,大学でも使われている
    • 普通に買うと高いが学生は安い
    • 分野ごとにToolboxがある

1. MATLABで行列式を求める

の行列式は

A = [
1, 1, 1;
2, 2, 2;
3, 3, 3]
det(A)

で求まる。

2. MATLABで連立方程式の解を求める(左除算)

の解法は各行列を

とすれば

で各Iが求まる。MATLABでは逆行列はinv()でも求まるが左除算を使う。

R = [
30, -40, -70;
55, -8, 133;
0, 48, -8]
V = [0; 0; 100]
I = R\V

\(バックスラッシュ)は日本語環境では¥で代替されることが多い。

3. MATLABで連立方程式の解を求める(クラメールの方法)

より

R = [
30, -40, -70;
55, -8, 133;
0, 48, -8]
V = [0; 0; 100]
R2 = R
R2(:, 1) = V
I1 = det(R2)/det(R)

Q. 同様に残りの解を求めよ。

4. 複素数行列も同様に解ける

を解くと

R = [
10, -5i, 0;
0, 5i, 3+4i;
1, -1, -1]
V = [50; 0; 0]
I = R\V

5. MATLABで連立方程式の解を求める(linsolve)

係数行列と右辺のベクトルをlinsolve関数に与えると解が得られる。

Z = [5-2i, 2i, 0; 2i, 4+2i, -4i; 0, -4i, 2+4i]
V = [50; 0; -50i]
linsolve(Z, V)

とすると

Z =
   5.0000 - 2.0000i   0.0000 + 2.0000i   0.0000 + 0.0000i
   0.0000 + 2.0000i   4.0000 + 2.0000i   0.0000 - 4.0000i
   0.0000 + 0.0000i   0.0000 - 4.0000i   2.0000 + 4.0000i
V =
  50.0000 + 0.0000i
   0.0000 + 0.0000i
   0.0000 -50.0000i
ans =
   6.5188 + 0.4096i
   5.4949 - 8.2935i
  -2.2867 - 9.4369i

の出力を得る。

6. MATLABで回路計算 (元ネタ)

図(a)でVs=14VのときIを求める。直列の枝および並列回路の合成抵抗は

分圧比から

よってIは

R1=1; R2=2; R3=3; R4=6; R5=3; R6=2; Vs=14
Rs=R1+R2+R3
Rp=1/(1/R4 + 1/R5 + 1/R6)
Vo=Rp*Vs/(Rs+Rp)
I=Vo/R6

Q.Vsを1〜14Vまで0.5V刻みで変化させたときのIを求めよ。

R1=1; R2=2; R3=3; R4=6; R5=3; R6=2; Vs=14
Rs=R1+R2+R3
Rp=1/(1/R4 + 1/R5 + 1/R6)
% ここまで同じ
Vss = 1:0.5:14
for Idx = 1:length(Vss)
	Vo=Rp*Vss(Idx)/(Rs+Rp)
	Ios(Idx)=Vo/R6
end
plot(Vss,Ios)

科学計算をやりたい(つづき)

  • GNU Octave, Scilab

    • フリーのMATLABクローン
      • 基本機能はほぼ実装されているがToolboxは未実装/独自実装
    • MATLAB Student/Homeによって危うい立場
  • R

    • 統計によるデータ解析の定番ソフト
    • 画像処理その他用途多数
    • データサイエンティストにはRとPythonあたりがトレンド
    • 商業版を出していたRevolution Analyticsは最近Microsoftに買収された
  • Mathematica

    • 便利だが数学寄り
      • 工学系も始めているが弱い
    • Raspberry PiのOSに無料配布されて話題
    • 普通に買うと高いが今のところ理工の学生は申請すれば自宅でも使える
    • 行列式や微分方程式を解ける
    • 電磁気学
    • WebサービスのWolfram Alphaもある
    • 式の入力をした後[Shift]+[Enter]で計算
    • Mathematicaと同じような機能
    • MathematicaでもStep-by-stepな解を見る方法のWalkDを定義すると微分だけ使える
Solve[x^2+5x+6==0,x]
D[Sin[x],x]
Limit[Sin[x]/x, x->0]

演習室には入ってないもの

プログラミングを始めたい(独断と偏見)

  • Processing: ユルい言語。非理工系のメディアアートでも使われる
  • Python: Google, DropBox等で採用されている言語。ユルさと拡張性の高さも人気。ANACONDAEnthought CANOPYPython(x,y)あたりを使うと環境構築が楽。
  • C#(.Net): 主にWindowsアプリを楽に作れる。最近Xamarinが無料で公開されてiOS/Androidアプリも楽に作れるようになった(Windows/Mac)。
  • その他Raspberry PiでMinecraft(Creativeモード)やScratchも
  • Qiita: 技術者の情報ストック。Googleよりも効率良く日本語の情報を漁れる
  • SlideShare: 日本語・英語の研究発表や勉強会の資料がアップロードされている

IoTっぽいものをやりたい

  • Arduino: Atmel AVRマイクロコントローラを中心にアナログ・デジタル入出力等をC/C++ベースのプログラムで制御する。USBかACアダプタ給電で単体で動作。
  • Raspberry Pi: ARMプロセッサを搭載した名刺サイズのシングルボードコンピュータ。LinuxやWindowsを入れて動かす。GPIO, I2C等を搭載している。制御は主にPython。Mathematicaが使えるものもある。
  • mbed: ARMのワンボードマイコン。mbedのシングルボードをUSB経由で接続してWeb上の開発ツールでC/C++によるコンパイル・アップロード。USB給電で単体で動作。

格好良いレポートを書きたい

回路シミュレーション・作成をしたい