高校生のための数学・物理学かんどころ講座 資 …...2008年度公開講座...

62
2008年度公開講座 高校生のための数学・物理学かんどころ講座 資料:Scilab,Scicos 入門 1 Scilab,Scicos を用いた微分方程式の数値計算(数値シミュレーション) 1.Scilab Scilab Scilab Scilab,Scicos Scicos Scicos Scicos 紹介 紹介 紹介 紹介 Scilab Scilab Scilab Scilab とは http://www.geocities.jp/rui_hirokawa/scilab/ INRIA (国立科学制御研究所)で作成さた高機能な行列演算 で,以下の特徴もつ。 SCILAB は、 UNIX,Mac,MS-Windows(v2.3 )で動作し、 自由に配布/使用すこ とが可能であ。 netlib 等で配布さ高度な数値演算使用してお、 行列の固値計算 のみなず、各種の、 適化計算、制御系設計、信号処理等に使用 すことが可能であ。 性に優てお、定義の関数等簡単に付加でき。 SCICOS に、信号で結ぶだけでが簡単に 実行可 能であ。(MATLAB(tm)Simulink(tm) に似た機能提供す。) Scilab は、つぎの 3 つの部分か構成さてい。 関数(Scilab ) Fortran C INRIA INRIA INRIA INRIAInstitut National de Recherche en Informatique Enautomatique:国立 情報学自動制御研究所) http://ja.wikipedia.org/wiki/INRIA :政府研究省おび経済財政産業省が共同管理す国立研究所であ。 1979 年に,の 情報制御分野の中心とな研究機関として設立さた。 国内に8所の研究施設(Aquitaine, Brittany, Lorraine, France-Comete, Ile-de-France, Nord-Pas-de-Calais, Cote d’Azur, Languedoc-Roussilion, Rhone-Alpes)持ち,3000 以上の職員抱え大規模な研究所であ。 Netlib Netlib Netlib Netlib http://www.netlib.org/ HPCHigh Performance Computing高速数値計算)のための多数配布し てい国際. http://www.scilab.org/ Scilab is a scientific software package for numerical computations providing a powerful open computing environment for engineering and scientific applications.

Transcript of 高校生のための数学・物理学かんどころ講座 資 …...2008年度公開講座...

Page 1: 高校生のための数学・物理学かんどころ講座 資 …...2008年度公開講座 高校生のための数学・物理学かんどころ講座 資料:Scilab,Scicos入門

2008年度公開講座

高校生のための数学・物理学かんどころ講座

資料:Scilab,Scicos 入門

1

Scilab,Scicos を用いた微分方程式の数値計算(数値シミュレーション)

1111....ScilabScilabScilabScilab,,,,ScicosScicosScicosScicos 紹介紹介紹介紹介

ScilabScilabScilabScilabとは http://www.geocities.jp/rui_hirokawa/scilab/

:INRIA (フランス国立コンピュータ科学・制御研究所)で作成された高機能な行列演算パッ

ケージで,以下の特徴をもつ。

る。

・ SCILAB は、UNIX,Mac,MS-Windows(v2.3から)で動作し、 自由に配布/使用するこ

とが可能である。

・ netlib 等で配布される高度な数値演算ライブラリを使用しており、 行列の固有値計算

のみならず、各種のシミュレーション、 最適化計算、制御系設計、信号処理等に使用

することが可能である。

・ カスタマイズ性に優れており、ユーザー定義の関数等を簡単に付加できる。

・ SCICOS により、信号ラインをマウスで結ぶだけでシミュレーションが簡単に 実行可

能である。(MATLAB(tm)の Simulink(tm) に似た機能を提供する。)

・ Scilab は、つぎの 3 つの部分から構成されている。

� インタプリタ

� 関数ライブラリ(Scilab プロシージャ)

� Fortran と C のサブルーチンライブラリ

INRIAINRIAINRIAINRIA(IIIInstitut NNNNational de RRRRecherche en IIIInformatique EEEEnautomatique:フランス国立

情報学自動制御研究所) http://ja.wikipedia.org/wiki/INRIA

:フランス政府研究省および経済財政産業省が共同管理するフランス国立研究所である。

1979年に,フランスの 情報・制御分野の中心となる研究機関として設立された。フランス

国内に8ヶ所の研究施設(Aquitaine, Brittany, Lorraine, France-Comete, Ile-de-France,

Nord-Pas-de-Calais, Cote d’Azur, Languedoc-Roussilion, Rhone-Alpes)を持ち,3000人

以上の職員を抱える大規模な研究所である。

NetlibNetlibNetlibNetlib http://www.netlib.org/

:HPC(High Performance Computing,高速数値計算)のためのライブラリを多数配布し

ている国際サイト.

http://www.scilab.org/

• Scilab is a scientific software package for numerical computations providing a

powerful open computing environment for engineering and scientific

applications.

Page 2: 高校生のための数学・物理学かんどころ講座 資 …...2008年度公開講座 高校生のための数学・物理学かんどころ講座 資料:Scilab,Scicos入門

2008年度公開講座

高校生のための数学・物理学かんどころ講座

資料:Scilab,Scicos 入門

2

(Scilabは科学技術への応用に対して強力な計算環境を提供する数値計算ソフトウ

ェアパッケージである。)

Scilab is an open source software. Since 1994 it has been distributed freely along

with the source code via the Internet. It is currently used in educational and

industrial environments around the world. Scilab is now the responsibility of the

Scilab Consortium, launched in May 2003. There are currently 25 members in

Scilab Consortium.

(Scilabはオープンソースソフトウェアである。1994年以来,インターネットでソ

ースコードを無料で配布してきている。現在では,世界中の教育と工業界で使われ

ている。Scilabは,現在,2003年 5月に設立された Scilabコンソーシアム(協会))

が責任機関となっており,このコンソーシアムには,25会員が所属している。)

Scilab includes hundreds of mathematical functions with the possibility to add

interactively programs from various languages (C, C++, Fortran…). It has

sophisticated data structures (including lists, polynomials, rational functions,

linear systems...), an interpreter and a high level programming language.

(ScilabはC,C++,Fortranなどの多様な言語から対話的にプログラムを追加できる

機能をもつ数百の数学関数を含んでいる。Scilabは,洗練されたデータ構造(リス

ト,多項式,有理関数,線形システムなど),インタプリタ,高レベルプログラミン

グ言語を有している。)

Scilab has been designed to be an open system where the user can define new

data types and operations on these data types by using overloading.

(Scilabはユーザが新しいデータ型と多重定義(オーバローディング:引数情報に

より演算を多重に定義すること)によるこれらのデータ型上での演算を定義できる

オープンシステムとして設計されている。)

A number of toolboxes are available with the system(つぎのような多くのツール

ボックスが使用可能):

o 2-D and 3-D graphics, animation(2D,3Dグラフィクス,アニメーション)

o Linear algebra, sparse matrices(線形代数,スパース行列)

o Polynomials and rational functions(多項式,有理関数)

o Interpolation, approximation(内挿,近似)

o Simulation: ODE solver and DAE solver(シミュレーション,常微分方程

式ソルバ,微分代数方程式ソルバ)

o Scicos: a hybrid dynamic systems modeler and simulator(Sicos:ハイブ

リッド動的モデラおよびシミュレータ)

o Classic and robust control, LMI optimization(古典,ロバスト制御,LM

I最適化)

Page 3: 高校生のための数学・物理学かんどころ講座 資 …...2008年度公開講座 高校生のための数学・物理学かんどころ講座 資料:Scilab,Scicos入門

2008年度公開講座

高校生のための数学・物理学かんどころ講座

資料:Scilab,Scicos 入門

3

o Differentiable and non-differentiable optimization(微分可能,微分不可

能最適化)

o Signal processing(信号処理)

o Metanet: graphs and networks(Metanet,グラフとネットワーク)

o Parallel Scilab(並列 Scilab)

o Statistics(統計)

o Interface with Computer Algebra: Maple package for Scilab code

generation (コンピュータ代数のインターフェース:Scilabコード生成の

ためのMapleパッケージ)

o Interface with Fortran, Tcl/Tk, C, C++, Java, LabVIEW(Fortran, Tcl/Tk,

C, C++, Java, LabVIEWのインターフェース)

Scicosとは:

http://www.scicos.org/

ScicosScicosScicosScicos is a graphical dynamical system modeler and simulator toolbox included in the

Scilab ® engineering and scientific computation software.

Page 4: 高校生のための数学・物理学かんどころ講座 資 …...2008年度公開講座 高校生のための数学・物理学かんどころ講座 資料:Scilab,Scicos入門

2008年度公開講座

高校生のための数学・物理学かんどころ講座

資料:Scilab,Scicos 入門

4

(Scicos は Scilab科学技術計算ソフトウェアに含まれるグラフィカルな動的システムの

モデラ兼シミュレータである。)

With ScicosScicosScicosScicos you can create block diagrams to model and simulate the dynamics of

hybrid dynamical systems and compile your models into executable code.

(Scicos を用いると,モデルに対するブロック線図を作り,ハイブリッド動的システムの

動特性をシミュレーションし,演算可能なコードにモデルをコンパイルできる。)

動的システム:微分方程式系(1つあるいは複数の微分方程式からなる系)

ハイブリッド動的システム:微分方程式と差分方程式の混在する系

動特性:微分方程式や差分方程式の時間的振舞(解の挙動)

ScicosScicosScicosScicos is used for signal processing, systems control, queuing systems, and to study

physical and biological systems.

(Scicos は信号処理,システム制御,待ち行列や物理や生物システムを研究するために用

いる。)

With Scicos you can: (Scicosを用いると,以下のことが可能である。)

・ Graphically model, compile, and simulate dynamical systems

(図的に動的システムをモデル化,コンパイル,シミュレーションする。)

・ Combine continuous and discrete-time behaviors in the same model

(同じモデル内で連続時間および離散時間の挙動を結合する。)

・ Select model elements from Palettes of standard blocks

(標準ブロックのパレットからモデル要素を選択する。)

・ Program new blocks in C, Fortran, or Scilab Language

(C,Fortanあるいは Scilab言語で新しいブロックをプログラムする。)

・ Run simulations in batch mode from Scilab environment

(Scilab環境からバッチモードでシミュレーションを実行する。)

・ Generate C code from Scicos model using a Code Generator

(コード生成器を用いて Scicosモデルから Cコードを生成する。)

・ Run simulations in real time with real devices using Scicos-HIL

(Scicos-HIL を用いて,実際の装置を用いて,リアルタイムにシミュレーションを実

行する。)

・ Generate hard real-time control executables with Scicos-RTAI

(Scicos-RTAI を用いて,ハードウェアのリアルタイム制御実行プログラムを生成す

る。)

・ Simulate digital communications systems with Scicos-ModNum

(Scicos-ModNumを用いて,ディジタル通信システムをシミュレーションする。)

・ Use implicit blocks developed in the Modelica language.

(Modelica言語(http://www.modelica.org/)により作られた暗黙ブロックを用いる。)

Page 5: 高校生のための数学・物理学かんどころ講座 資 …...2008年度公開講座 高校生のための数学・物理学かんどころ講座 資料:Scilab,Scicos入門

2008年度公開講座

高校生のための数学・物理学かんどころ講座

資料:Scilab,Scicos 入門

5

2222....ScilabScilabScilabScilab をををを用用用用いたいたいたいた微分方程式微分方程式微分方程式微分方程式のののの解法解法解法解法

Scilab の文法については,Scilab マニュアルを参考にしてもらうとして,ここでは,微

分方程式の解法に限定して,その使用法について説明する。

2222....1111 ScilabScilabScilabScilab ののののインストールインストールインストールインストール

http://www.scilab.org/ より,インストーラをダウンロードする。現在,ver.4.1.1 がダ

ウンロード可能。

2222....2222 ScilabScilabScilabScilab のののの起動起動起動起動

アイコンをダブルクリックすると,Scilabが起動し,以下のウィンドウが開く。

2222....3333 ScilabScilabScilabScilab のののの機能機能機能機能のののの簡単簡単簡単簡単なななな説明説明説明説明 文献5)を参照。

● コマンドラインの利用(インタプリタ的使い方)

ウィンドウ(コマンドウィンドウ)内の --> がコマンドプロンプトであり,この後にキー

ボードから命令を打つ込み,Enterキーを押すことにより,命令が実行できる。Scilabはこ

の結果をエコーとして,コマンドウィンドウ内に表示する。

例題1:スカラーの場合

--> 2*3

--> 2**10

--> 2^10

--> 2*%pi %pi は円周率を表す定数

Page 6: 高校生のための数学・物理学かんどころ講座 資 …...2008年度公開講座 高校生のための数学・物理学かんどころ講座 資料:Scilab,Scicos入門

2008年度公開講座

高校生のための数学・物理学かんどころ講座

資料:Scilab,Scicos 入門

6

--> 1.5*2e-2 e-2 は,10-2

--> (%i)**2 %i は虚数単位

--> 2+%i + 3+%i*2 複素数の計算

例題2:ベクトルの場合(一度入力した変数は記憶保持される)

--> a=[1 2 3 ] 行ベクトルの定義1

--> b=[1, 2, 3] 行ベクトルの定義2

--> c=[1;2;3] 列ベクトルの定義1

--> d=[1 列ベクトルの定義2

--> 2 (各行は Enter キーで改行)

--> 3]

--> f=a*c ベクトル同士の演算1

--> g=c*a ベクトル同士の演算1

Page 7: 高校生のための数学・物理学かんどころ講座 資 …...2008年度公開講座 高校生のための数学・物理学かんどころ講座 資料:Scilab,Scicos入門

2008年度公開講座

高校生のための数学・物理学かんどころ講座

資料:Scilab,Scicos 入門

7

--> a(2) アドレッシング(要素指定)

--> a([1 2]) アドレッシング(要素指定)

--> c([1 3]) アドレッシング(要素指定)

--> a(1:3) アドレッシング(要素指定)

--> a(2:3) アドレッシング(要素指定)

--> d = 0:0.5:2 ベクトルの生成(初期値 0,最終値 2,きざみ 0.5)

[ ] [ ] [ ] [ ] はははは,,,,空空空空ベクトルベクトルベクトルベクトル

Page 8: 高校生のための数学・物理学かんどころ講座 資 …...2008年度公開講座 高校生のための数学・物理学かんどころ講座 資料:Scilab,Scicos入門

2008年度公開講座

高校生のための数学・物理学かんどころ講座

資料:Scilab,Scicos 入門

8

--> x = linspace(1,2,5) 1 から 2までを 10等分する。

--> y = logspace(1,2,5) 101から 102までを対数軸で 10等分する。

--> z = x’ x の転置行列を z とする。

--> w0 = [1+%i*2 -1+%i*3] 複素ベクトル(行ベクトル)

--> w1 = w0.’ 複素ベクトルの転置(列ベクトル)

--> w2 = w0’ 複素ベクトルの共役転置(列ベクトル)

--> w3=w0*w0' 複素ベクトルの絶対値(大きさ)

Page 9: 高校生のための数学・物理学かんどころ講座 資 …...2008年度公開講座 高校生のための数学・物理学かんどころ講座 資料:Scilab,Scicos入門

2008年度公開講座

高校生のための数学・物理学かんどころ講座

資料:Scilab,Scicos 入門

9

例題3:行列の場合1

--> A = [1 2 3; 4 5 6; 7 8 0] 3×3行列の定義

--> B = [1 0 1 3×3行列の定義のもうひつの定義

-->0 1 0

-->1 1 1]

--> C = A+B

--> D = A-B

--> E = A*B

--> F = A\B F = A-1B の計算

Page 10: 高校生のための数学・物理学かんどころ講座 資 …...2008年度公開講座 高校生のための数学・物理学かんどころ講座 資料:Scilab,Scicos入門

2008年度公開講座

高校生のための数学・物理学かんどころ講座

資料:Scilab,Scicos 入門

10

例題4:行列の場合2:行列の生成

--> A = zeros(2,3) 2×3ゼロ行列の生成

--> B = ones(3,3) 3×3成分がすべて1の行列の生成

--> C = eye(3,3) 3×3単位行列の生成

--> D = diag([1,2,3]) 対角成分が[1,2,3]の行列の生成

--> E = rand(2,3) 2×3一様乱数行列の生成

--> F = rand(2,3,'normal') 2×3正規乱数行列の生成

階数の出力

Page 11: 高校生のための数学・物理学かんどころ講座 資 …...2008年度公開講座 高校生のための数学・物理学かんどころ講座 資料:Scilab,Scicos入門

2008年度公開講座

高校生のための数学・物理学かんどころ講座

資料:Scilab,Scicos 入門

11

例題5:行列の場合3:行列に関する演算

--> A = [1 2 5; 0 2 1; 0 0 3]

--> B = det(A) A の行列式

--> C = inv(A) A の逆行列

--> x = spec(A) A の固有値

--> [D,X]=bdiag(A) A の固有値を対角成分とする行列 D

固有ベクトルからなる正方行列 X

Page 12: 高校生のための数学・物理学かんどころ講座 資 …...2008年度公開講座 高校生のための数学・物理学かんどころ講座 資料:Scilab,Scicos入門

2008年度公開講座

高校生のための数学・物理学かんどころ講座

資料:Scilab,Scicos 入門

12

例題6:組み込まれている定数

特殊な定数は予め,文字定数の形で定義されている。

--> %i 虚数単位

--> %pi 円周率

--> %inf 無限大(infinity)

--> %nan 非数値(not a number)

--> %t 論理値(真)

--> %f 論理値(偽)

--> %eps マシンイプシロン(1+ε>1 となる最小の値)

--> format(‘v’,15) 数値の表示 15 桁

--> format(‘e’,6) 数値の表示,指数形式で全 6 桁(仮数部と指数部あわせて)

Page 13: 高校生のための数学・物理学かんどころ講座 資 …...2008年度公開講座 高校生のための数学・物理学かんどころ講座 資料:Scilab,Scicos入門

2008年度公開講座

高校生のための数学・物理学かんどころ講座

資料:Scilab,Scicos 入門

13

例題7:組み込み関数

大抵の関数は,スカラーだけでなく,ベクトル・行列に対して演算を行なうことができ

る。また,実数だけでなく複素数に対しても演算を行うことができる。

関数名 機能 関数名 機能

abs 絶対値 sqrt 平方根

real 複素数の実数部 imag 複素数の虚数部

conj 共役複素数 angle 位相角

round 四捨五入 fix 整数化

floor 切り下げ ceil 切り上げ

sign 符号 mod 商

rem 剰余 lcm 最小公倍数

gcm 最大公約数 factor 素因数分解

isprime 素数判定 factorial 階乗

exp 指数関数 log 自然対数

log10 常用対数 log2 底 2 の対数

sin,cos,tan 三角関数(ラジアン) sind,cosd,tand 三角関数(度数)

cot,sec,csc 三角関数(ラジアン) cotd,secd,cscd 三角関数(度数)

asin,acos,atan 逆三角関数(ラジアン) asind,acosd,atand 逆三角関数(度数)

acot,asec,acsc 逆三角関数(ラジアン) acotd,asecd,acscd 逆三角関数(度数)

sinh,cosh,tanh 双曲線関数 asinh,acosh,atanh 逆双曲線関数

coth,sech,csch 双曲線関数 acoth,asech,acsch 逆双曲線関数

atan(y,x) 偏角

*atan(y,x)は,

x

y1tan を [ ]ππ ,− の範囲で返す。

--> abs(-1)

--> sqrt(5)

--> sqrt(-2)

--> exp(0)

--> exp(1+%i*2)

--> sin(2*%pi)

--> sin(%i)

--> atan(1,1)

Page 14: 高校生のための数学・物理学かんどころ講座 資 …...2008年度公開講座 高校生のための数学・物理学かんどころ講座 資料:Scilab,Scicos入門

2008年度公開講座

高校生のための数学・物理学かんどころ講座

資料:Scilab,Scicos 入門

14

deffコマンドを用いると,自分で関数を定義することができる。自分で定義した関数も,ス

カラーだけでなく,ベクトル・行列に対して演算を行なうことができる。ここでは,

yxyxfunczxxxfuncy +==−== 2),(2),sin(*)exp()(1

を定義し,スカラー,ベクトル,行列に対して演算するとつぎのようになる。

Page 15: 高校生のための数学・物理学かんどころ講座 資 …...2008年度公開講座 高校生のための数学・物理学かんどころ講座 資料:Scilab,Scicos入門

2008年度公開講座

高校生のための数学・物理学かんどころ講座

資料:Scilab,Scicos 入門

15

注意: )sin(*).exp( xx− における.*は,要素ごとの乗算を意味している。 xがベクトルの場

合, )sin(),exp( xx− は,各々同じ大きさのベクトルを値をして返すので,各 xの要素ごとに

)sin()exp( xx− を計算したい場合には,要素ごとの演算をする必要がある。

Page 16: 高校生のための数学・物理学かんどころ講座 資 …...2008年度公開講座 高校生のための数学・物理学かんどころ講座 資料:Scilab,Scicos入門

2008年度公開講座

高校生のための数学・物理学かんどころ講座

資料:Scilab,Scicos 入門

16

例題8:多項式の表現

Scilabでは、1変数の多項式を扱うことができる。変数は,あらかじめ poly コマンドで宣

言しておく必要がある。

--> x=poly(0,‘x’) x が多項式変数であることを宣言している。

--> p=(x+1)^2

--> p*p

--> a=[1 x;-x^2 x]

--> b=[-2*x 1;x^2-1 x]

--> a+b

--> a*b

Page 17: 高校生のための数学・物理学かんどころ講座 資 …...2008年度公開講座 高校生のための数学・物理学かんどころ講座 資料:Scilab,Scicos入門

2008年度公開講座

高校生のための数学・物理学かんどころ講座

資料:Scilab,Scicos 入門

17

--> c = poly([1 2],'s') この命令だけで,根が 1,2 の多項式を定義する。

--> d = poly([1 2 3],'s','c') この命令だけで,係数が 1,2,3(最高次の係数が 3)の

多項式を定義する。

Page 18: 高校生のための数学・物理学かんどころ講座 資 …...2008年度公開講座 高校生のための数学・物理学かんどころ講座 資料:Scilab,Scicos入門

2008年度公開講座

高校生のための数学・物理学かんどころ講座

資料:Scilab,Scicos 入門

18

--> c = poly([1 2],'s')

--> d = roots(c) 多項式の根を求める。

行列に対して,poly,degree,coeff を行うと,固有多項式、その次数、その係数(昇べき順)

をそれぞれ求めることができる。

--> A=[1,2;3,4]

--> p=poly(A, 'x')

--> degree(p)

--> coeff(p)

多項式行列の逆行列は,つぎのようにして求めることができる。

--> x=poly(0,'x')

--> a=[ x, x^2+1; x x^2-1]

--> 1/a

Page 19: 高校生のための数学・物理学かんどころ講座 資 …...2008年度公開講座 高校生のための数学・物理学かんどころ講座 資料:Scilab,Scicos入門

2008年度公開講座

高校生のための数学・物理学かんどころ講座

資料:Scilab,Scicos 入門

19

例題10:便利な命令

命令 機能

… 式が 1 行に入らないときに,行末につけて,次の行に継続する.

, 文の区切り

改行 文の区切り

; 文の区切り,計算結果をエコー(復唱)しない.

// コメント行

help 関数の説明をヘルプする.

demo デモプログラムを実行する.

clc テキスト画面のクリア

pwd 現在のディレクトリ(フォルダ)を表示する.

cd ディレクトリ(フォルダ)の変更.

dir 現在のディレクトリ内のファイルを一覧する.

what 現在のディレクトリにあるプログラムファイルを表示する.

who 使用している変数(ワークスペース内の大域変数)のリストを表示する.

whos 使用している変数(ワークスペース内の大域変数)の詳細を表示する.

clear 使用している変数(ワークスペース内の大域変数)の記憶を消去する.

type テキストファイルの内容を表示する.

lookfor キーワードの検索

which 指定された関数が存在するディレクトリ(フォルダ)を表示する.

format 表示形式を指定する.

disp 結果をコマンドウィンドウに表示する.

mfprintf データを書式付に変換する.

exec プログラムの実行.

Page 20: 高校生のための数学・物理学かんどころ講座 資 …...2008年度公開講座 高校生のための数学・物理学かんどころ講座 資料:Scilab,Scicos入門

2008年度公開講座

高校生のための数学・物理学かんどころ講座

資料:Scilab,Scicos 入門

20

例題11:ヘルプ機能

Page 21: 高校生のための数学・物理学かんどころ講座 資 …...2008年度公開講座 高校生のための数学・物理学かんどころ講座 資料:Scilab,Scicos入門

2008年度公開講座

高校生のための数学・物理学かんどころ講座

資料:Scilab,Scicos 入門

21

● ファイルの利用(プログラミング的使い方)

コマンドラインでの実行だけでなく,Scilabも通常のプログラミング言語と同じように,

作ったプログラムをファイルに保存し,それを読み出して実行することができる。

手順1:プログラムファイルを格納するためのフォルダ(ディレクトリ)を作る。ここで

は,Cドライブのルートフォルダ内に sciというサブフォルダ(C:¥sci)を作ったとします。

手順2:Scilabのメニューバーの Editor をクリックする。

エディタウィンドウが開く

クリック

Page 22: 高校生のための数学・物理学かんどころ講座 資 …...2008年度公開講座 高校生のための数学・物理学かんどころ講座 資料:Scilab,Scicos入門

2008年度公開講座

高校生のための数学・物理学かんどころ講座

資料:Scilab,Scicos 入門

22

手順3:このエディタでプログラムを作成する。

手順4:作ったプログラムを保存する。拡張子は,sci か sce にする。ここでは,

¥C¥sci¥example1.sce で保存する。Scilab では,.単独で動くスクリプトプログラムを sce

ファイルに,関数プログラムを .sci ファイル に格納らしいが,プログラムを1つの関数

とみれば,あまり区別する必要はないかと思われる。

10,,2.0,1.0,0);sin( L== xxy のグラフを表示する。

Page 23: 高校生のための数学・物理学かんどころ講座 資 …...2008年度公開講座 高校生のための数学・物理学かんどころ講座 資料:Scilab,Scicos入門

2008年度公開講座

高校生のための数学・物理学かんどころ講座

資料:Scilab,Scicos 入門

23

手順5:実行する方法は2通りある。

その1)エディタ内で実行する方法:メニューExecute の Load into Scilab を選択する。

実行結果

Page 24: 高校生のための数学・物理学かんどころ講座 資 …...2008年度公開講座 高校生のための数学・物理学かんどころ講座 資料:Scilab,Scicos入門

2008年度公開講座

高校生のための数学・物理学かんどころ講座

資料:Scilab,Scicos 入門

24

その2)コマンドラインから実行する方法

2-1)メニューFile の Change Directory を用いて,現在のフォルダ(ディレクトリ)

をプログラムを保存したフォルダに変更する。これは,命令 cd あるいは chdir

を用いても同じことができる。

Page 25: 高校生のための数学・物理学かんどころ講座 資 …...2008年度公開講座 高校生のための数学・物理学かんどころ講座 資料:Scilab,Scicos入門

2008年度公開講座

高校生のための数学・物理学かんどころ講座

資料:Scilab,Scicos 入門

25

2-2)コマンドラインから,現在のディレクトリ内にあるファイルを表示して,対

象のファイルがあるかどうか確認したあと,つぎの実行命令を入力する。

--> exec('example1.sce')

●構造化プログラミング命令

Scilab には,Visual Basic,C,Java 言語のように,処理を繰り返すための for 文,while

文,判断によって処理を分岐するための if 文,if-else 文,if-elseif-else 文, select 文(MATLAB

では switch 文に相当),break 文,continue 文などが用意されている。ただし,Scilab で

は,MATLAB と同様に,単純に繰返し処理を行うと,計算速度が低下することがあるので,

用意されているベクトル計算のための組み込み関数を使うことが求められる。

1)比較演算子

条件の評価を行う際に,つぎの比較演算子を用いる。

== 等しい (equal to)

< 小さい (smaller than)

> 大きい (greater than)

<= 小さいか等しい (smaller or equal to)

>= 大きいか等しい (greater or equal to)

<> あるいは ~= 等しくない (not equal to)

この部分は,Scilabがエコーとして返

してくるところ。エコー表示がいやな

ら,最後に ; をつける。

Page 26: 高校生のための数学・物理学かんどころ講座 資 …...2008年度公開講座 高校生のための数学・物理学かんどころ講座 資料:Scilab,Scicos入門

2008年度公開講座

高校生のための数学・物理学かんどころ講座

資料:Scilab,Scicos 入門

26

2)for 文

文法:for 変数変数変数変数=式式式式,,,,文文文文,,,,・・・・・・・・・・・・,,,,文文文文 end

例題

100,cos,sin1

2

1

1 =

=

= ∑∑==

nn

ks

n

ks

n

k

n

k

ππ を計算せよ。

コード1:単純に for を用いたもの

コード 1 の実行結果:

Page 27: 高校生のための数学・物理学かんどころ講座 資 …...2008年度公開講座 高校生のための数学・物理学かんどころ講座 資料:Scilab,Scicos入門

2008年度公開講座

高校生のための数学・物理学かんどころ講座

資料:Scilab,Scicos 入門

27

コード2:繰り返し変数をベクトルにしたもの

コード3:組み込み関数のベクトル計算を用いたもの(こちらを推奨)

sum(a):ベクトルあるいは行列の要素のすべての和を求める。

Page 28: 高校生のための数学・物理学かんどころ講座 資 …...2008年度公開講座 高校生のための数学・物理学かんどころ講座 資料:Scilab,Scicos入門

2008年度公開講座

高校生のための数学・物理学かんどころ講座

資料:Scilab,Scicos 入門

28

3)

3)for 文のネスト

Page 29: 高校生のための数学・物理学かんどころ講座 資 …...2008年度公開講座 高校生のための数学・物理学かんどころ講座 資料:Scilab,Scicos入門

2008年度公開講座

高校生のための数学・物理学かんどころ講座

資料:Scilab,Scicos 入門

29

4)while 文

文法:while 論理論理論理論理式式式式,,,,文文文文,,,,・・・・・・・・・・・・,,,,文文文文 end

例題

100,cos,sin1

2

1

1 =

=

= ∑∑==

nn

ks

n

ks

n

k

n

k

ππ を計算せよ。

Page 30: 高校生のための数学・物理学かんどころ講座 資 …...2008年度公開講座 高校生のための数学・物理学かんどころ講座 資料:Scilab,Scicos入門

2008年度公開講座

高校生のための数学・物理学かんどころ講座

資料:Scilab,Scicos 入門

30

5)if 文

文法 1:if 論理論理論理論理式式式式,,,,文文文文,,,,・・・・・・・・・・・・,,,,文文文文 end 文法 1’:if 論理論理論理論理式式式式 then 文文文文,,,,・・・・・・・・・・・・,,,,文文文文 end

文法 2:if 論理論理論理論理式式式式 else 文文文文,,,,・・・・・・・・・・・・,,,,文文文文 end

文法 3:if 論理論理論理論理式式式式 1,,,, 文文文文 elseif 論理式論理式論理式論理式 2,,,,文文文文 else 文文文文 end

Page 31: 高校生のための数学・物理学かんどころ講座 資 …...2008年度公開講座 高校生のための数学・物理学かんどころ講座 資料:Scilab,Scicos入門

2008年度公開講座

高校生のための数学・物理学かんどころ講座

資料:Scilab,Scicos 入門

31

6)select 文

文法: select 式

case 式 1,文 1

・・・

case 式 n,文 n

else 文

end

x=初期値初期値初期値初期値:増分値増分値増分値増分値:最終値最終値最終値最終値

x=-1:1:1 と同じで,増分値が 1 の場合

省略することができる。この場合,ベク

トル x は,[-1,0,1] になる。

Page 32: 高校生のための数学・物理学かんどころ講座 資 …...2008年度公開講座 高校生のための数学・物理学かんどころ講座 資料:Scilab,Scicos入門

2008年度公開講座

高校生のための数学・物理学かんどころ講座

資料:Scilab,Scicos 入門

32

7)break 文 ループから強制的に抜ける命令

8)continue 文 条件を満たしているとき,ループの最後に飛びループを続ける命令。多

重ループの際には,ループの最後に部分に飛ぶ。

例題:5秒間整数の乱数を発生し続け,もし途中で整数 500 が得られれば,それを表示して

処理を修了する。

例題:5000 回乱数を発生し続け,途中で 500 が得られれば表示し,さらに発生させ続ける。

tic( ) - Start a stopwatch timer.

toc( ) - Read the stopwatch timer.

Page 33: 高校生のための数学・物理学かんどころ講座 資 …...2008年度公開講座 高校生のための数学・物理学かんどころ講座 資料:Scilab,Scicos入門

2008年度公開講座

高校生のための数学・物理学かんどころ講座

資料:Scilab,Scicos 入門

33

●関数ファイル

Scilab のコード内で、deff コマンドを用いると、簡単な関数は定義できるが、複雑な関

数は,サブプログラム(処理をまかせた下請けプログラムのこと)を用いた方が便利であ

る。Scilab,MATLAB には,関数プログラムが用意されているが,C言語などの関数プログラ

ムと違い,複数の出力引数で値を返すことができるので,FORTAN のサブルーチンに似てい

る。ただ,もっと便利がいいのは,引数の数が違っていても,同じ関数名でプログラミン

グが可能な多重定義機能がある。多重定義機能については,ここでは省略し,簡単な使い

方のみ説明する。Scilab,MATLAB のプログラムファイルは,いままでの例にでてきたような

単独でそのまま実行可能なスクリプトファイル(拡張子は sce)と他のプログラムやコマン

ドから呼び出される関数ファイル(拡張子は sci)がある。

関数ファイルは,つぎの文法に従う。

①出力引数が1つの場合

②出力引数が複数の場合

③出力引数がない場合

function out = functionname(in1,in2,…)

関数の定義(out を in1,in2, …を使って計算)

endfunction

functionname : 関数の名前

out:出力引数

in1,in2, , , , ………… : 入力引数

function [out1,out2, …] = functionname(in1,in2,…)

関数の定義(out1,out2, …を in1,in2, …を使って計算)

endfunction

functionname : 関数の名前

out1,out2, …:出力引数

in1,in2, , , , ………… : 入力引数

function functionname(in1,in2,…)

関数の定義

endfunction

Page 34: 高校生のための数学・物理学かんどころ講座 資 …...2008年度公開講座 高校生のための数学・物理学かんどころ講座 資料:Scilab,Scicos入門

2008年度公開講座

高校生のための数学・物理学かんどころ講座

資料:Scilab,Scicos 入門

34

④入力引数がない場合

⑤出力引数も入力引数もない場合

function [out1,out2, …] = functionname( )

関数の定義

endfunction

function functionname

関数の定義

endfunction

注)格納ファイル名は,MATLAB の場合,functionname と同じでなければ

ならないが,Scilabでは異なっていても良い。ただし,関数ファイルを呼び出

すスクリプトファイルを実行する前に,組み込み関数 getf を用いて,関数プロ

グラムを予め読み込んでおく必要がある。以下の例は,関数ファイル名

ex_func1.sci を読み込む場合である。

getf(‘ex_func1.sci’) あるいは, getf ex_func1.sci

注)大域変数と局所変数:スクリプトファイルやコマンドプロンプトで定義さ

れる変数は大域変数(グローバル変数)といい,ワークスペースと呼ばれるメ

インプログラムの変数を定義したメモリ領域に格納され,スクリプトファイル

やコマンドプロンプト上で,いつでも呼び出すことができる。これに対して,

関数ファイル内で定義される変数は局所変数(ローカル変数)と呼ばれ,その関

数ファイルの中だけで呼び出しが可能である。ただし,global 命令を用いると,

関数ファイル内の変数もワークスペース内に記憶して大域変数として使用す

ることができる。ただし,global命令は,スクリプトファイルと関数ファイル

の両方で宣言しておく必要がある。

文法: global 変数変数変数変数 1 変数変数変数変数 2 ・・・・・・・・・・・・

Page 35: 高校生のための数学・物理学かんどころ講座 資 …...2008年度公開講座 高校生のための数学・物理学かんどころ講座 資料:Scilab,Scicos入門

2008年度公開講座

高校生のための数学・物理学かんどころ講座

資料:Scilab,Scicos 入門

35

以下の例題は,すべて参考文献14)を参考にしている。

①の例題:複数データをベクトルで定義し,その平均と分散を関数プログラムで求める。

( ) ( ) ∑∑∑∑====

−=+−=−==n

k

k

n

k

kk

n

k

k

N

k

k xxn

xxxxn

xxn

vaxn

x1

22

1

22

1

2

1

12

11,

1

関数関数関数関数ファイルファイルファイルファイルをををを実行実行実行実行するするするする前前前前にににに,,,,getf 命令命令命令命令

をををを実行実行実行実行していないのでしていないのでしていないのでしていないので,,,,エラーエラーエラーエラーがががが出出出出るるるる。。。。

関数関数関数関数ファイルファイルファイルファイル

スクリプトスクリプトスクリプトスクリプトファイルファイルファイルファイル

Page 36: 高校生のための数学・物理学かんどころ講座 資 …...2008年度公開講座 高校生のための数学・物理学かんどころ講座 資料:Scilab,Scicos入門

2008年度公開講座

高校生のための数学・物理学かんどころ講座

資料:Scilab,Scicos 入門

36

一度,getf でワークスペース内に読み込んでおくと,コマンドラインからも使用すること

ができる。また,clear 命令ではクリアされない。

clear all : : : : ワークスペースワークスペースワークスペースワークスペース((((メインプログラムメインプログラムメインプログラムメインプログラムのののの

変数変数変数変数をををを定義定義定義定義したしたしたしたメモリメモリメモリメモリ領域領域領域領域))))ののののユーザユーザユーザユーザ定義定義定義定義メモリメモリメモリメモリ

ののののオールクリアオールクリアオールクリアオールクリア。。。。

getf((((‘‘‘‘関数関数関数関数ファイルファイルファイルファイル名名名名’’’’))))::::ワークスペースワークスペースワークスペースワークスペース内内内内でででで指定指定指定指定

したしたしたした関数関数関数関数ファイルファイルファイルファイルをををを呼呼呼呼びびびび出出出出してしてしてして実行実行実行実行することがすることがすることがすることが

できるできるできるできる。。。。CCCClearlearlearlear命令命令命令命令ではではではではクリアクリアクリアクリアされなされなされなされないいいい。。。。

Page 37: 高校生のための数学・物理学かんどころ講座 資 …...2008年度公開講座 高校生のための数学・物理学かんどころ講座 資料:Scilab,Scicos入門

2008年度公開講座

高校生のための数学・物理学かんどころ講座

資料:Scilab,Scicos 入門

37

②の例題

③の例題

sprintf はC言語と同様に,数値を書式付で文字列に変換する。

また,Scilabでは,関数内で結果の表示はできないので,disp 命令により,強制的

に表示している。

Page 38: 高校生のための数学・物理学かんどころ講座 資 …...2008年度公開講座 高校生のための数学・物理学かんどころ講座 資料:Scilab,Scicos入門

2008年度公開講座

高校生のための数学・物理学かんどころ講座

資料:Scilab,Scicos 入門

38

④の例題

関数を再定義しなおして,getf命令を実行すると,

この警告が出るが無視してよい。

Page 39: 高校生のための数学・物理学かんどころ講座 資 …...2008年度公開講座 高校生のための数学・物理学かんどころ講座 資料:Scilab,Scicos入門

2008年度公開講座

高校生のための数学・物理学かんどころ講座

資料:Scilab,Scicos 入門

39

⑤の例題

Page 40: 高校生のための数学・物理学かんどころ講座 資 …...2008年度公開講座 高校生のための数学・物理学かんどころ講座 資料:Scilab,Scicos入門

2008年度公開講座

高校生のための数学・物理学かんどころ講座

資料:Scilab,Scicos 入門

40

●deff コマンドを用いて,関数をスクリプトプログラムに埋め込む方法

Page 41: 高校生のための数学・物理学かんどころ講座 資 …...2008年度公開講座 高校生のための数学・物理学かんどころ講座 資料:Scilab,Scicos入門

2008年度公開講座

高校生のための数学・物理学かんどころ講座

資料:Scilab,Scicos 入門

41

2222....4444 ScilabScilabScilabScilab のののの微分方程式微分方程式微分方程式微分方程式ソルバーソルバーソルバーソルバー(solver)(solver)(solver)(solver)

Scilab には,微分方程式を数値計算する専用の関数(solver)である ode が用意されて

いる。コマンドラインから,--> help ode とすると,そのソルバーのヘルプが表示され

る。

ode - ordinary differential equation solver

y=ode(y0,t0,t,f)

[y,w,iw]=ode([type],y0,t0,t [,rtol [,atol]],f [,jac] [,w,iw])

[y,rd,w,iw]=ode("root",y0,t0,t [,rtol [,atol]],f [,jac],ng,g [,w,iw])

y=ode("discrete",y0,k0,kvect,f)

Parameters

y0 : real vector or matrix (initial conditions).

t0 : real scalar (initial time).

t : real vector (times at which the solution is computed).

f : external (function or character string or list).

type : one of the following character string: "adams" "stiff" "rk" "rkf" "fix"

"discrete" "roots"

rtol,atol : real constants or real vectors of the same size as y .

jac : external (function or character string or list).

w,iw : real vectors.

ng : integer.

g : external (function or character string or list).

k0 : integer (initial time). kvect : integer vector.

例1 つぎの微分方程式の解を ode ソルバーを用いて計算し,グラフ表示する。

0)0(,1)(5.0)(

=+−= xtxdt

tdx

ode ソルバーで,微分方程式を定義する外部関数を記述するには,

1)スクリプトプログラム内に関数を定義する方法

1-1)deff コマンドを用いる方法

1-2)function,・・・・・・・・・・・・,endfunction を用いる方法

2)関数プログラムでスクリプトプログラムと別に定義する方法

の2つがある。

Page 42: 高校生のための数学・物理学かんどころ講座 資 …...2008年度公開講座 高校生のための数学・物理学かんどころ講座 資料:Scilab,Scicos入門

2008年度公開講座

高校生のための数学・物理学かんどころ講座

資料:Scilab,Scicos 入門

42

1)の方法

2)の方法

xdot � x’を意味する。

x0 � 初期条件 x(0)

t0 � 初期時刻 t0=0

t=0:0.1:10 � 解をもとめる各

時刻を指定する。この場合は,

t=[0,10]の範囲を 0.1 刻みで出

力する。

plot(t,x) � 2次元グラフ表示

注意注意注意注意::::以下以下以下以下のようにのようにのようにのように,,,,スクリプトプログラスクリプトプログラスクリプトプログラスクリプトプログラ

ムムムム内内内内にににに関数関数関数関数プログラムプログラムプログラムプログラムをかきこんでもかまをかきこんでもかまをかきこんでもかまをかきこんでもかま

わないわないわないわない。。。。

Page 43: 高校生のための数学・物理学かんどころ講座 資 …...2008年度公開講座 高校生のための数学・物理学かんどころ講座 資料:Scilab,Scicos入門

2008年度公開講座

高校生のための数学・物理学かんどころ講座

資料:Scilab,Scicos 入門

43

例2 つぎの微分方程式の解を ode ソルバーを用いて計算し,グラフ表示する。

1)0(),(5.0)(

=−= xtxdt

tdx

例3 つぎの微分方程式の解を ode ソルバーを用いて計算し,グラフ表示する。

0)0(,sin)(5.0)(

=+−= xttxdt

tdx

例4 つぎの微分方程式の解を ode ソルバーを用いて計算し,グラフ表示する。

1)0(,))(()( 2 == xtx

dt

tdx

Page 44: 高校生のための数学・物理学かんどころ講座 資 …...2008年度公開講座 高校生のための数学・物理学かんどころ講座 資料:Scilab,Scicos入門

2008年度公開講座

高校生のための数学・物理学かんどころ講座

資料:Scilab,Scicos 入門

44

例5 つぎの微分方程式の解を ode ソルバーを用いて計算し,グラフ表示する。

1)0(),()(

=−= xttxdt

tdx

例6 つぎの微分方程式の解を ode ソルバーを用いて計算し,グラフ表示する。

1)0(,)(

1)(== x

txdt

tdx

Page 45: 高校生のための数学・物理学かんどころ講座 資 …...2008年度公開講座 高校生のための数学・物理学かんどころ講座 資料:Scilab,Scicos入門

2008年度公開講座

高校生のための数学・物理学かんどころ講座

資料:Scilab,Scicos 入門

45

例7 次式の2階常微分方程式を解く方法について説明する。

0)0(

,1)0(,0)(2)(

3)(

2

2

===++dt

dxxtx

dt

tdx

dt

txd

数値計算に限らず,微分方程式の解析においては,高階微分方程式は,ベクトル型の1

階微分方程式に書き直す。上式の場合,つぎのようになる。まず,ベクトル zを,

=

=

x

x

z

z

&2

1z

と定義すると,上式の微分方程式は次式のようになる。

=

=

−−=

=

0

1)0(

32

10

32

10

z

zzx

x

x

x

&&&

&&

Page 46: 高校生のための数学・物理学かんどころ講座 資 …...2008年度公開講座 高校生のための数学・物理学かんどころ講座 資料:Scilab,Scicos入門

2008年度公開講座

高校生のための数学・物理学かんどころ講座

資料:Scilab,Scicos 入門

46

例8 次式の2階常微分方程式を解く方法について説明する。

0)0(

,1)0(,0)()()(

2

2

===++dt

dxxtx

dt

tdx

dt

txd

例9 次式の2階常微分方程式を解く方法について説明する。

1)0(

,1)0(,0)()()(

2

2

−===+−dt

dxxtx

dt

tdx

dt

txd

例10 次式の2階常微分方程式を解く方法について説明する。

0)0(

,1)0(,5sin)()()(

2

2

===++dt

dxxttx

dt

tdx

dt

txd

ベクトル zを,例7と同様にと定義すると,上式の微分方程式は次式のようになる。

=

+

−−=

+

−−=

=

0

1)0(

5sin1

0

11

105sin

1

0

11

10

z

zz ttx

x

x

x

&&&

&&

Page 47: 高校生のための数学・物理学かんどころ講座 資 …...2008年度公開講座 高校生のための数学・物理学かんどころ講座 資料:Scilab,Scicos入門

2008年度公開講座

高校生のための数学・物理学かんどころ講座

資料:Scilab,Scicos 入門

47

Page 48: 高校生のための数学・物理学かんどころ講座 資 …...2008年度公開講座 高校生のための数学・物理学かんどころ講座 資料:Scilab,Scicos入門

2008年度公開講座

高校生のための数学・物理学かんどころ講座

資料:Scilab,Scicos 入門

48

例11 次式の2階常微分方程式を解く方法について説明する。

0)0(

,1)0(,0))(()()( 2

2

2

===++dt

dxxtx

dt

tdx

dt

txd

ベクトル zを,例7と同様に定義すると,上式の微分方程式は次式のようになる。

=

−−=

=

=

0

1)0(

2

2

1

2

2

1

z

zzz

z

x

x

z

z

&&

&

&

&&

Page 49: 高校生のための数学・物理学かんどころ講座 資 …...2008年度公開講座 高校生のための数学・物理学かんどころ講座 資料:Scilab,Scicos入門

2008年度公開講座

高校生のための数学・物理学かんどころ講座

資料:Scilab,Scicos 入門

49

3333....ScicosScicosScicosScicos をををを用用用用いたいたいたいた微分方程式微分方程式微分方程式微分方程式のののの解法解法解法解法

3333....1111 ScicosScicosScicosScicos のののの起動起動起動起動

1)コマンドラインから,以下を入力する。

--> scicos( )

あるいは,Application メニューの Scicos を選択する。

2)このとき,以下の scicos のグラフィカルエディタ(お絵かきエディタ)が起動する。

Page 50: 高校生のための数学・物理学かんどころ講座 資 …...2008年度公開講座 高校生のための数学・物理学かんどころ講座 資料:Scilab,Scicos入門

2008年度公開講座

高校生のための数学・物理学かんどころ講座

資料:Scilab,Scicos 入門

50

3)Edit メニュの Pallets を左クリックする。

4)つぎのようなメニューが表示される。

Page 51: 高校生のための数学・物理学かんどころ講座 資 …...2008年度公開講座 高校生のための数学・物理学かんどころ講座 資料:Scilab,Scicos入門

2008年度公開講座

高校生のための数学・物理学かんどころ講座

資料:Scilab,Scicos 入門

51

5)それそれのメニューを選択すると,つぎのような道具箱が表示される。この道具箱な

いのアイコンを選択して,グラフィカルエディタ内に,図を描くことができる。

SourceSourceSourceSourcessss::::各種信号各種信号各種信号各種信号のののの生成生成生成生成

SinksSinksSinksSinks::::各種信号各種信号各種信号各種信号のののの保存保存保存保存・・・・表示表示表示表示

Page 52: 高校生のための数学・物理学かんどころ講座 資 …...2008年度公開講座 高校生のための数学・物理学かんどころ講座 資料:Scilab,Scicos入門

2008年度公開講座

高校生のための数学・物理学かんどころ講座

資料:Scilab,Scicos 入門

52

LinearLinearLinearLinear::::線形演算子線形演算子線形演算子線形演算子,,,,線形線形線形線形システムブロックシステムブロックシステムブロックシステムブロック

Non_Non_Non_Non_llllinearinearinearinear::::非線形演算子非線形演算子非線形演算子非線形演算子,,,,非線形非線形非線形非線形システムブロックシステムブロックシステムブロックシステムブロック

Page 53: 高校生のための数学・物理学かんどころ講座 資 …...2008年度公開講座 高校生のための数学・物理学かんどころ講座 資料:Scilab,Scicos入門

2008年度公開講座

高校生のための数学・物理学かんどころ講座

資料:Scilab,Scicos 入門

53

Page 54: 高校生のための数学・物理学かんどころ講座 資 …...2008年度公開講座 高校生のための数学・物理学かんどころ講座 資料:Scilab,Scicos入門

2008年度公開講座

高校生のための数学・物理学かんどころ講座

資料:Scilab,Scicos 入門

54

6)微分方程式を計算し,結果をグラフ表示するためには,このパレットの中から,グラ

フィックエディタ内につぎのようなものを移動する。

例1’ つぎの微分方程式の解を scicos 用いて計算し,グラフ表示する。

0)0(,1)(5.0)(

=+−= xtxdt

tdx

Linear 内の積分演算子を用いて,式を定義する。Linear 内には微分演算子もあるが,信号

内に時間的変動の速い誤差やノイズがある場合には,微分演算子により増幅されるので,

そのようなことが少ない積分演算子を用いる。

SoucesSoucesSoucesSoucesよりよりよりより

SinkSinkSinkSinkssssよりよりよりより

LinearLinearLinearLinearよりよりよりより

Non_linearNon_linearNon_linearNon_linearよりよりよりより

Page 55: 高校生のための数学・物理学かんどころ講座 資 …...2008年度公開講座 高校生のための数学・物理学かんどころ講座 資料:Scilab,Scicos入門

2008年度公開講座

高校生のための数学・物理学かんどころ講座

資料:Scilab,Scicos 入門

55

各アイコンを右クリックでショートカットメニューを出して操作する。アイコン同時を結

合するには Link,移動させるには,Smart Move を用いる。各種アイコンの設定値はダブ

ルクリックして,設定する。この例の場合,つぎのように設定している。

オシロスコープオシロスコープオシロスコープオシロスコープ表示表示表示表示させるにはさせるにはさせるにはさせるには,,,,タタタタ

イマーイマーイマーイマーがががが必要必要必要必要なのでなのでなのでなので,,,,注意注意注意注意することすることすることすること

信号同士信号同士信号同士信号同士のののの足足足足しししし,,,,引引引引きききき演算演算演算演算をするをするをするをする。。。。

このこのこのこの場合場合場合場合はははは,,,,引引引引きききき算算算算になっているになっているになっているになっている。。。。

ここのここのここのここの部分部分部分部分がががが微分微分微分微分方程式方程式方程式方程式のののの関係関係関係関係をををを

記述記述記述記述しているしているしているしている。。。。

② ③

Page 56: 高校生のための数学・物理学かんどころ講座 資 …...2008年度公開講座 高校生のための数学・物理学かんどころ講座 資料:Scilab,Scicos入門

2008年度公開講座

高校生のための数学・物理学かんどころ講座

資料:Scilab,Scicos 入門

56

微分方程式の

初期条件

Page 57: 高校生のための数学・物理学かんどころ講座 資 …...2008年度公開講座 高校生のための数学・物理学かんどころ講座 資料:Scilab,Scicos入門

2008年度公開講座

高校生のための数学・物理学かんどころ講座

資料:Scilab,Scicos 入門

57

実行する前に,シミュレーションの設定値を,Simulate メニューの Setup で指定する。

Page 58: 高校生のための数学・物理学かんどころ講座 資 …...2008年度公開講座 高校生のための数学・物理学かんどころ講座 資料:Scilab,Scicos入門

2008年度公開講座

高校生のための数学・物理学かんどころ講座

資料:Scilab,Scicos 入門

58

実行するには,Simulate メニューの Run を選択する。

このとき,オシロスコープ⑤の結果表示が次のようにされる。

Page 59: 高校生のための数学・物理学かんどころ講座 資 …...2008年度公開講座 高校生のための数学・物理学かんどころ講座 資料:Scilab,Scicos入門

2008年度公開講座

高校生のための数学・物理学かんどころ講座

資料:Scilab,Scicos 入門

59

例10‘ 次式の2階常微分方程式の解を scicos 用いて計算し,グラフ表示する。

0)0(

,1)0(,5sin)()()(

2

2

===++dt

dxxttx

dt

tdx

dt

txd

sin5tの指定

Page 60: 高校生のための数学・物理学かんどころ講座 資 …...2008年度公開講座 高校生のための数学・物理学かんどころ講座 資料:Scilab,Scicos入門

2008年度公開講座

高校生のための数学・物理学かんどころ講座

資料:Scilab,Scicos 入門

60

左側の積分演算子の初期条件はゼロ

右側の積分演算子の初期条件は1

X軸の表示は 30秒まで

Page 61: 高校生のための数学・物理学かんどころ講座 資 …...2008年度公開講座 高校生のための数学・物理学かんどころ講座 資料:Scilab,Scicos入門

2008年度公開講座

高校生のための数学・物理学かんどころ講座

資料:Scilab,Scicos 入門

61

また,Simulate メニューの Setup は,つぎのように指定している。

オシロスコープの結果はつぎのとおりである。

シミュレーションは30秒まで

Page 62: 高校生のための数学・物理学かんどころ講座 資 …...2008年度公開講座 高校生のための数学・物理学かんどころ講座 資料:Scilab,Scicos入門

2008年度公開講座

高校生のための数学・物理学かんどころ講座

資料:Scilab,Scicos 入門

62

グラフィック命令については,文献14)などを参照すること。

参考文献参考文献参考文献参考文献::::

1)http://www.scilab.org/

2)http://tech.chase-dream.com/matlab/scilab.html

3)http://www.geocities.jp/rui_hirokawa/scilab/

4)http://www.ecl.sys.hiroshima-u.ac.jp/scilab/introscilab/introscilab.html

5)http://f28.aaa.livedoor.jp/~kenpei/scilab/manu.html

6)http://atmori.hp.infoseek.co.jp/scilab/diffeq.htm

7)http://feedback.mech.fukui-u.ac.jp/scilab/scilab0.html

8)http://www.bekkoame.ne.jp/~ponpoko/Math/Scilab.html

9)http://www.mlb.co.jp/linux/science/scilab/index.html

10) http://f42.aaa.livedoor.jp/~hassaku/crswikicrs/?Scilab%C6%FE%CC%E7%B5%AD

11) http://www.oishi.info.waseda.ac.jp/~oishi/signal/signal.htm

12) http://telecom0.eng.niigata-u.ac.jp/index.php?Scilab

13) http://www-ec.denki.numazu-ct.ac.jp/scilab/

14) 上坂吉則:MATLAB;Scilab プログラミング事典,ソフトバンククリエイティブ

(2007)