数式処理電卓の応数・応物での利用
一関高専

1

はじめに

散布図・箱ひげ図などの描画／各種の統計回帰 (10 種類) 等

数式処理ソフトの Mathematica のような機能を持つグラフ電卓がある。その機能はかなり高度であり、数式処理の国際コンペで Mathematica と並んで首位タイになったこともある。そして、世界では、グラフ電卓を活用した数学教育が急速に普及しつつある。数式処理可能なグラフ電卓を高専や工学部の専門科目で活用すれば、数学教
育のみならず工学教育においても相当の教育効果が見込まれる。

2

梅野 善雄

その他 プログラミング (数式処理機能を利用可能) ／センサーを通した実デー
タの収集／パソコンとのデータ通信

3

予想される教育効果

高専や工学部で数式処理電卓を使用した
場合に考えられる教育効果について、以下に述べる。ただし、教師が使用法等について学生に適切に指導・助言することを前提とする。単に学生に購入させただけの場合
は、逆効果になる場合も考えられるので注意が必要である。

数式処理電卓の概要

ここで取り上げる数式処理電卓は、テキサスインスツルメント社の TI–89 である。
以下のような機能をもつ。詳細は販売代理店の HP(http://www.naoco.com/) を参照
されたい。

3.1

簡便であることの意義

Mathematica や Maple などの数式処理ソフトは、工学の授業や専門研究にも使用され、端末室や研究室で使用可能な状況にあるところも多いであろう。しかし、それを使いこなすにはパソコンや WS のある部屋に行き、その前に座ることが必要になる。
数式処理電卓は、多機能関数電卓と同程度の大きさである。Mathematica ほどではなくとも、それと同様の機能が納められており、いろいろな機能は幾つかのキーを押すだけで実現できる。パソコンや WS の前に座らずとも、ノートパソコンを広げずとも、思いついたときに数式処理機能をいつでもどこでもキー操作だけで利用できることの意義は大きい。
これにより、あるレベル以上の学生の場
合は、数学上の何かのアイデアが浮かんだ
とき、それを即座に試すことができる。数式処理を含むシミュレーションを自分でプ
ログラムを組んで行うこともできるであろう。繁雑な単純計算時間を短縮して、工学の本質的な部分に思考を集中させることができることになる。

代数機能 文字式の計算／分数式の計算／複素数の計算／方程式の解法 (非線形、連立) ／行列・行列式の計算／固
有値・固有ベクトルの計算／単位の付いた計算／ 2 進数・16 進数の計算等
解析機能 微分・積分の計算／偏微分・多重積分の計算／極限値の計算（片側極P
限や無限大も可）／和の計算／関数の級数展開／最大値・最小値／接線の方程式／変曲点／微分方程式の解法（解析解、ベクトル場の表示）等
グラフ機能
関数のグラフ表示 (y =f (x)、媒介変数表示 x = f (t), y =g(t)、極座標 r = f (θ)、2 変数関数z = f (x, y)、陰関数 f (x, y) = 0) ／グラフの拡大・縮小／グラフ上から面積・長さの計算／グラフ上の点の座標(x, y) を表に変換等
統計・テーブル機能 表計算機能 (99 列
999 行) ／セル内で数式処理が可能／

1

188 第Ⅲ部

3.2

データ収集と工学教育での活用

関数グラフへの理解

この電卓は、高次方程式や連立方程式の解も求めることができる。解を正しく求められないときは、自動的に数値解として求めようとする。複素数解と実数解とを区別し、ある程度は文字係数の方程式の解も解法可能である。

いろいろな関数のグラフを簡単に描画できることは、関数の理解を深める上で極めて有効と思われる。即座にグラフを確認でき、2 変数関数のグラフ (曲面) を回転させることも容易である。グラフ上から極値や軸との交点の座標を求めることもできる。
特に、グラフの拡大・縮小が簡単にできる
ので、大域的・局所的な状況を容易に把握することができる。
工学上のいろいろな見通しを得るとき、グラフに対する理解力・洞察力は不可欠であろう。この電卓のグラフ機能を使いこなすことができれば、関数に対する理解が大きく向上することが期待される。

3.3

方程式の解法に限らず、文字式を含むいろいろな式の代入変形にも利用できるので、そのような場合の計算を効率的に行うことができる。自分の計算のチェックに利用することもできるので、いろいろな計算の確実性を増すこともできるだろう。

3.5

この電卓のプログラミング言語は、通常の構造化言語とほとんど同様である。特に、この電卓の持つ数式処理機能をプログラミ
ングの中に利用できるので、機能的にはかなり強力である。この電卓のプログラムを組むことができれば、C や FORTRAN 等の構造化言語のプログラムは容易に組むことができるであろう。また、その逆もいえる。プログラム作りは、いろいろ細かい試
行錯誤的な部分も多い。パソコンの前に座らずとも、思いついたときに、いつでもどこでもそのようなチェックができることは、
プログラムを習得する上では非常に重要と思われる。

微積分計算の補助としての利用

単なる微分や積分の計算のみならず、テイラー展開、偏微分・重積分の計算、そして微分方程式の解法なども行うので、工学で現れる微積分全般で活用できる。微積分を学習中の学生にとっては、この数式処理機
能は、いろいろな計算問題の答合わせや、
途中計算の確認に利用できるだろう。
また、高校で微分・積分の習得が十分でなかった学生においては、その復習の補助として利用させることができる。グラフ描
画が簡単にできるので、微積分を視覚的に理解させるときに有効と思われる。
特に、微分方程式は、2 階の定数係数であれば、その解析解まで求めることができる。高階や非線形の方程式の解析解は求められないが、そのような場合でも数値解を求めて解曲線を描画できる。勾配場や位相平面図の描画機能もあり、工学で現れる微分方程式をさまざまな角度から扱うことができる。これは、工学上のいろいろな見通
しを得る場合に極めて有効と思われる。

3.4

プログラミング教育での利用

3.6

データ解析ツールとしての利用

この電卓のオプション機器であるデータ
収集器 CBL を利用すると、いろいろなセ
ンサーを通して実データを収集できる。収集されたデータは表データとして蓄積され、そのデータに対してさまざまな統計解
析を行うことができる。エクセルのような表計算機能があり、そこでは数式処理を含めた計算も行わさせることができる。電卓にデータを収集後は、その解析はいつでもどこでも行うことができることになる。プ
ログラム作成・データ収集・データ解析という一連の作業をこの電卓とその附属の機器だけで行わさせることができるので、工学実験等での効果も期待される。

代数計算の補助としての利用

工学では、繁雑な式の変形や、いろいろな方程式の解法が必要となる。そこでは、数学の演習問題のように簡単な答になるとは限らない。特に、非線形の方程式のような場合は、学生はお手上げであろう。

2

数式処理電卓の応数・応物での利用

4

189

応数・応物での利用例

以下では、応用数学や応用物理での数式処理電卓の利用例を上げる。工学教育でも、十分、活用可能であることが分かるであろう。

4.1

フーリエ級数とフーリエ積分

図 1∼4 (フーリエ係数の計算とフーリエ級数)(−(π + x)/2 (−π <x<0)=関数 f (x) =のフーリエ係数を計算する。
(π − x)/2 (0 <= x < Zπ)Z ππ
π − x sin nxdx = 1
2
2
f (x) sin nxdx =f (x) は奇関数なので an = 0。bn =
π 0
π 0
2
n
プログラムの中で整数宣言をすることはできるが、計算画面では n が整数であることを認識させることはできない。したがって、次頁の図 1 で sin nπ が 0 であることは自分で見抜くこ
10X
sin nxのグラフである。フーリエ級数が収束する状況を簡単にとが必要になる。図 3 はnn=1確認できることは、フーリエ級数の意味を理解する上において重要と思われる。次頁の図 4
20X
sin nxのグラフについて原点付近を拡大し、その最大値を表示させたものである。画は
nn=1

面の範囲は、−0.2 < x < 0.5, 1 < y < 2 である。項数を増やすごとにグラフの状況を観察させれば、学生にギブス現象について気づかせることもできるだろう。

図1
図2
図3
図 5〜6 (フーリエ積分)
 −(π + x)/2 (−π <= x < 0)<のフーリエ積分を計算する。
関数 f (x) =(π − x)/2 (0 = x < π)
0 (それ以外)
f (x) のフーリエ積分は、Z ∞{A(u) cos ux + B(u) sin ux}duf (x) ∼ √1
2π −∞
Z ∞
Z ∞
1
1
f (t) cos utdt, B(u) = √f (t) sin utdt
A(u) = √
2π −∞
2π −∞
と表される。f (x) は奇関数なので A(u) = 0 であり、B(u) は
r
r Z ∞
r Z π
π
−
t
2
2
2 πu − sin πu
f (t) sin utdt =sin utdt =B(u) =
π 0
π 0
2
π
2u2
であるので (図 5)、

f (x) ∼ 1πZ ∞0πu − sin πu
sin uxduu2

図 6 は、フーリエ正弦変換 B(u) のグラフである。そのグラフを手軽に確認できる。

3

190 第Ⅲ部

データ収集と工学教育での活用

図4

4.2

図5

図6

ラプラス変換図 1〜2 (ラプラス変換)

Z ∞関数 f (x) のラプラス変換は、

e−st f (t)dt により定義される。s は一般論では複素数であ0

るが、実数で考えれば関数のラプラス変換を計算することができる (図 1)。文字定数を含んでいてもかまわない (図 2)。

図1
図2
図3
図 3〜6 (部分分数分解)
ラプラス逆変換の計算はできないが、部分分数への分解に利用することができる。たとえば、

bs + c17s
a+=(2s − 1)(s2 + 4)
2s − 1 s2 + 4を定義して (図 3)、分母を払うと 17s = (a + 2b)s2 − (b − 2c)s + 4a − c となる (図 4)。両辺の係数を自分で比較すると a + 2b = 0, −b + 2c = 17, 4a − c = 0 を得る。この連立方程式
を solve 機能を利用して解いて、a = 2, b = −1, c = 8 が得られる (図 5)。このような形での利用は、部分分数への分解の手順を理解させるときに有効と思われる。その手順の理解が得られ、自分である程度の計算ができるようになった後は、最初から電卓を利用して分解させることもできる (図 6)。これは、自分の計算のチェックにも利用できる。

図4

図5

図6

ラプラス変換やフーリエ級数は工学では重要である。学生は基本的な計算は自分でできる必要があり、すべての計算をこの電卓に任せるべきではないことは当然のことである。学生には、計算練習の答え合わせとして利用させるべきであろう。手軽にグラフを確認できるので、理解が深まると思われる。また、微積分の計算で四苦八苦しているような学生に対しては、その計算の補助として活用させることができるだろう。それにより、計算力が劣る学生でも、フーリエ・ラプラ
スを理解することが可能になると思われる。

4

数式処理電卓の応数・応物での利用

4.3

191

ベクトル解析

図 1 (ベクトルの演算)√~a = (2, 3, 4), ~b = (4, 5, 6) のとき、~a · ~b = 47, ~a × ~b = (−2, 4, −2), |~a × ~b| = 2 6 である。このように、ベクトルの内積、外積、大きさの計算ができる。それらを入れ子にすれば、三重積の計算もできる。
図 2 (座標変換)√√√~a = (1, 2, 3) のとき、~a の円柱座標は (r, θ, z) = ( 3, tan−1 2, 3)、球座標は (r, θ, φ) =√√(2 3, tan−1 2, π ) である。なお、これは単に座標を表示するだけの機能であり、座標変換6の関数としては利用できない。関数として利用したい場合は、自分でその座標変換の関数を定義することが必要になる。その定義は簡単にできる。

図1
図2
図 3,4 (ベクトル関数の微分)a(t) = (t2 , t, −t3 ), b(t) = (sin t, − cos t, 0) のとき、

図3d(a(t) · b(t)) = (t2 − 1) cos t + 3t sin t
dt
発散や回転の計算式を自分で定義すれば、その計算を行わさせることもできる。
図 5,6 (ベクトル関数の積分)a(x, y, z) = (3x2 + 6y, −14yz, 20xz 2 ), r(t) = (t, t2 , t3 ) のとき、Z
Z 1
drdt = 5a · dr =a·dt
C0
累次積分の積分範囲を指定してやれば、面積分の計算も可能である。

図4

4.4

図5

図6

複素関数論

図 1〜2 複素数の計算
虚数単位 i がキーに割り当てられているので、複素数の計算が容易である。四則計算のみなら√ず、絶対値、偏角、実部、虚部などの計算ができる。図 1〜2 は、z = 1 + 3i, w = 1 + i の
場合のいろいろな計算を表示したものである。
図 3 初等関数の値
初等関数の値も計算される。ただし、主値が表示される。

5192 第Ⅲ部

データ収集と工学教育での活用

図1
図2
図3
図 4〜6 正則関数の導関数、絶対値関数のグラフ
正則関数の導関数は、通常の微分機能で計算できる。cos(z) などは、cos x cosh y −i sin x sinh yの形で表示される。正則性をチェックすることなく、実関数の微分と同様の計算を形式的に行うだけなので、微分可能性や正則性に問題があるような場合には注意が必要である。図 5 の例は、いずれも微分可能ではない。
複素関数 w = f (z) において、z 平面から w 平面への写像の様子を表示することはできないが、その絶対値関数 |f (z)| であれば、曲面として表示することができる。図 6 は、| sin z| を
−2π < x < 2π, 0 < y < 3, 0 < z < 5 の範囲で x 軸の分割数を 20、y 軸の分割数を 15 にとって表示したものである。約 40 秒で表示された。この曲面を回転させることも簡単にできる。

図4
図5
図6
図 7〜8 複素関数の積分
原始関数が存在する場合は、通常の積分機能で複素関数の積分も計算できる。図
7 では、
Z
Z
Z
2+i

πi

z 2 dz,ie−z dz,cos zdz の計算が行われている。曲線 C : r = r(t), (α <=t<= β) にZZ βdz
沿って積分する場合は、 f (z)dz =f (z(t)) dt を計算することになる。
dt
C
α
Z
dz
it
図 8 は、曲線 C: z = α + re (0 <=t<= 2π) に沿って、 z − α = 2πi を計算している。
C
図 9 留数の計算
複素関数の極とその位数を見抜けば、留数は微分と極限値の計算機能を利用して求めること
z sin zは z = i を 2 位の極として持つので、留数は、ができる。たとえば、関数 f (z) =(z − i)2
−i

0

0

d2
Res(f, 2) = 1 lim 2 (z − i)2 f (z)2! z→i dzを計算すれば求められる。ただし、複素関数としての極限値の存在が仮定される。

図7

図8

6

図9

数式処理電卓の応数・応物での利用

4.5

193

微分方程式

図 1〜3 (1 階の微分方程式)
変数分離形、1 階線形 (図 1)、同次形 (図 2) 、完全微分形 (図 3) の微分方程式であれば、解析解を求めることができる。@1, @2 は積分定数である。解析解が求められない場合は、入力した微分方程式がそのまま返される (図 4 の上段)。

図1
図2
図3
図 4 (2 階の微分方程式)
2 階の定数係数線形微分方程式の解析解を求めることもできる。非同次であってもかまわない。
図 5 (初期条件と境界条件)
解析解が求められるときに初期条件や境界条件を与えると、積分定数が決定される。図 5 では、y 0 = −y の初期条件 y(1) = 1 の条件のもとでの解と、y 00 + 2y 0 + 2y = 0 の初期条件
y(0) = 0, y 0 (0) = 1 のもとでの解 y = e−x sin x が表示されている。解くべき変数を指定する
ので、x, y 以外の変数であってもかまわない。全体が表示されるよう簡単な場合を示しているが、文字係数であってもかまわない。
図 6 (解曲線のグラフ)
図 6 は、図 5 の解 y = e−x sin x を 0 < x < 2π, −0.1 < y < 0.5 の範囲で表示させたものである。このように、解のグラフがどのような曲線であるかを、簡単に確認できる。また、グラフの座標データを図 8 のような形に表示することも容易である。

図4
図5
図6
図 7 (勾配場と解曲線)
微分方程式の勾配場を表示させることもできる。図 7 は、y 0 = 10 − y の勾配場を表示したものであり、下側の曲線は初期条件 y(0) = 0 のもとでの解曲線である。この解曲線上を、座標を表示させながら移動することもできる。この画面上で別な初期値を指定し、その点を通る解曲線を描画させることも容易である。上の描画途中の曲線は、点 (2, 20) を指定して、そこを通る解曲線を描画させようとしている。
図 8 (解曲線の座標データ)
解曲線の座標データを表で表示させることができる。出発点や刻み幅は任意に設定できる。
カーソルを上方や下方に移動すれば、t < 0 のときや t > 0.4 のときの数値が次々に計算されて表示される。
図 9 (高階や非線形の場合)
方程式が 3 階以上や非線形の方程式の場合は、解析解は求められない。しかし、その位相平面や解曲線を表示させることはできる。それは、連立微分方程式の形に直すことにより行わ

7

194 第Ⅲ部

データ収集と工学教育での活用れる。たとえば、y = y(t) において、y 00 − 0.2(y 2 − 1)y 0 + y = 0 であれば、y1 = y として、
y2 = y10 とおけば、この微分方程式は、

dy1= y2 ,
dt

dy2= 0.2(y12 − 1)y2 − y1dtという連立微分方程式で表される。

図7
図8
図9
図 10 (位相平面)
図 9 の連立微分方程式の、横軸を y1 、縦軸を y2 としたときの位相平面である。曲線は、初期
条件 y1 (0) = 1, y2 (0) = y10 (0) = 1 のもとでの軌道 (y1 (t), y2 (t)) である。
図 11 (解曲線)
図 10 の 2 つの曲線 y = y1 (t), y = y2 (t) が描かれている。つまり、これらの曲線は、図 9 のdyのグラフである。このように、解析解が求微分方程式の解曲線 y = y(t) と、その導関数
dt
められない場合でも、その解曲線であれば非線形でも高階の場合でも描くことができ、その曲線の座標データを簡単に表の形で表示させることができる。3 階以上の微分方程式では、
y(t), y 0 (t), y 00 (t) などのうち、どの曲線を描くかも指定できる。
図 12 (解曲線の座標データ)
図 11 の曲線の座標データは、即座にこのような表で表すことができる。ただし、この表は画像として表示されるので、このデータを加工して別な計算をさせることはできない。通常の表計算は別な機能として備わっているので、この解の数値データを利用したいときは、表計
算機能で図 12 と同じ表を別途作成することが必要である。その表では、図 9 で定義した関数をそのまま利用できるので、まず t の値を適当な初期値から、定められた刻み幅で 1 つの列に定義し、2 列目と 3 列目には y1(t), y2(t) を指定するだけでよい。あとは、自動的に対応する
y1(t), y2(t) が計算されて表が埋められる。

図 10

図 11

図 12

このように、工学では必須の微分方程式について、その解をさまざまな角度から追及することが可能になる。特に、解曲線、勾配場、位相平面などが簡単に描画されることは、学生の微分方
程式に対する理解を大きく進展させるものと期待される。

8

数式処理電卓の応数・応物での利用

4.6

195

統計

データ処理では必須の統計での利用例を説明する。次のようなデータを例にとる。
身長
体重

168
56

178
64

164
53

172
63

172
61

170
59

162
57

169
60

176
70

173
57

166
62

167
56

170
53

183
93

図 1 (データの入力)
これらのデータは、データ / 行列エディターで入力する。99 列× 999 行までのデータを扱える。
図 2 (基本統計量)
基本統計量は簡単に計算される。
図 3 (散布図)
散布図やヒストグラムも容易に表示される。はこひげ図も表示できる。

図1
図2
図3
図 4〜6 (統計回帰)
回帰直線を理解させるには、その前段階として、データを近似する直線 y = ax + b を試行錯
誤的に決めさせるのも有益かもしれない (図 4)。右側の画面で直線の方程式を定義すれば、即座に左側でその直線が描画される。各データとの誤差の 2 乗和を計算させることもできる。統計機能を利用すれば回帰直線の係数 a, b の値は直接求められる (図 5)。データ回帰は、直線ばかりではなく、指数回帰や対数回帰など 10 種類の中から選択できる (図 6)。

図4
図5
図6
図 7 (数式処理の活用)
表データでは、エクセルと同様の表計算が可能である。数式処理が可能であるので、個々のセルに文字列や関数を定義して、別な列でそれらに対する数式処理をさせることもできる。
図 7 では、1 列目で定義した関数に対して、2 列目ではそれらの微分、3 列目では積分が自動計算されている。内蔵関数だけではなく自分で定義した関数も使えるので、この機能はさま
ざまなシミュレーションをする際に極めて有用と思われる。

図7

図8

9

図9

196 第Ⅲ部

データ収集と工学教育での活用

図 8〜9 (最小自乗法 1)
最小自乗法は、与えられたデータ {(xn , yn )} (n = 1, 2, · · · n) と指定された関数値との誤差の二乗和が最小になるような関数を決定するものである。簡単のため、直線 f (x) = ax + b で近似する場合を考える。各 xi についての誤差は |yi − f (xi )| なので、その二乗和を
nXg(a, b) =(yi − f (xi ))2i=1とおく。図 1 のデータ名を sintai とすると、(i, j) 成分は (sintai[i])[j]、i 列目の成分は sintai[i]で参照されリスト表示される (図 8)。その成分の総計は sum で計算されるので、関数 g(a, b)は、g(a, b) = sum((sintai[2] − (a ∗ sintai[1] + b))2 )だけで定義される (図 9)。
図 10〜12 (最小自乗法 2)
図 10 は、g(a, b) を a, b で微分したものである。g(a, b) を最小にする a, b は、gx (a, b) = 0, gy (a, b) =0 となる点として決定されるが、図 11 ではこの連立方程式が解かれている。当然ながら、この値は図 5 で表示させた値と一致する (図 12)。

図 10

図 11

図 12

このような形で数式処理電卓を利用することは、最小自乗法がどのようなものかを理解させ、その計算手順を理解させるときに有効と思われる。教科書にあるような簡単なデータばかりではな
く、実データをそのまま取り扱わさせることができる。最小自乗法についてある程度の理解が得られた後は、図 5 のように結果のみを直接表示させて利用させればよいであろう。
センサーを通して収集されたデータは、このような表データとして収集される。散布図の状況から適切な回帰方法を選択させて、実験式を自分で考えさせることもできる。また、乱数を発生させることもできるので、いろいろな確率分布を容易にシミュレートすることもできる。

10

数式処理電卓の応数・応物での利用

4.7

197

応用物理

図 1〜3 (放物運動)
点が水平角 θ、初速度 v0 で投げ上げられたとき、投げた点を原点にとり水平方向を x 軸、垂1
直方向を y 軸にとると、t 秒後の変位は x = (v0 cos θ)t, y = (v0 sin θ)t − gt2 である。グラ2
フ電卓は、このような媒介変数表示された関数のグラフも容易に表示できる。図 1 では、この関数の式を、文字係数のまま定義している。図 2 は、画面を左右に分割し、右側では値の代入、左側ではそのグラフを描画している。角の単位は度 (degree) にしてある。このように、値を変えながら、すぐに具体的な軌道を見ることができる。これにより、たとえば水平飛行
物体と衝突させるには初速度や投げ上げる角度をどのように定めればよいかを、実験的に確かめさせることも可能である (図 3)。

図1
図2
図3
図 4〜6 (円運動)原点を中心とする半径 r の円上を角速度 ω で運動する点の座標は、時刻 t = 0 で点 (r, 0) を出発したとすれば、x = r cos ωt, y = r sin ωt である。円上の点の運動と、y の変化とを同時に表示させれば、sin ωt は円運動の y 座標の変化であることが一目瞭然である (図 4)。ω の異なる円運動を同時に表示させれば、角速度の意味についての理解も深まるであろう。図 5 では
ω = 1, 2 の場合の運動が表示されている。
このような運動で 2 点間の距離が最大・最小になるのはどこかを求めることも容易である。
図 5 は x = cos t, y = sin t と x = 3 + cos 2t, y = sin 2t のグラフであるが、この運動の 2 点間の距離を f (t) とすると、

f (t) =

p(cos t − cos 2t − 3)2 + (sin t − sin 2t)2である。従来の教育では、このような関数の最大・最小を学生に求めさせることはできなかった。図 6 は、この関数のグラフを表示したものである。この電卓は、グラフ画面の中で関数の最大・最小を容易に求めることができる。画面では最小を与える点の座標が表示されている。
この値は、数式処理機能を利用すれば、方程式 f 0 (t) = 0 を解くことによっても求められる。

図4

図5

図6

図 7 (自由振動)
一端を固定したばね定数 k のコイルばねに質量 m の物体をつけて振動させるとき、その運
dx2dxk(0) = v0 を与えると、その解は動方程式は 2 = − x である。初期変位 x(0) = x0 ,mdtdt
x = A cos pt + B sin pt (p2 = k/m) である。図 7 では、x0 = 0, v0 = 1, m = 1, k = 4 とした

11

198 第Ⅲ部

データ収集と工学教育での活用

ときの振動の様子が示されている。垂直方向の動きと、時間軸を横軸にとったときのグラフとを同時表示している。右側の画面で、ばね定数や初期変位を変えることにより、振動の様子がどのように変わるかを簡単に確かめることができる。
図 8 (強制振動)
強制的な外力 mF cos ωt を与えると、運動方程式は

d2 x+ k x = F cos ωt2mdtとなる。この微分方程式の特殊解は xp =F
p2 − ω 2cos ωt であるので、これを図 7 の解に加えたものが一般解である。p + ω のときは「うなり」を生じる。図 8 は p2 = 4, ω = 2.2, F = 1の場合である。
図 9 (減衰振動)dxが働くとき、運動方程式は速度に比例した減衰力 2n
dt

d2 x
dx
+ 2n
+ k x = F cos ωtmdt2dtである。n2 < p2 のときは減衰振動であり、その解は

px = Ce−nt cos( p2 − n2 t − δ) + X cos(ωt − φ)(p2 = k )mの形である。図の上段は x0 = 0, v0 = 1, p2 = 4, n = 1, F = 1, ω = 3 の場合の解曲線であり、下段は x0 = 0, v0 = 1, p2 = 4, n = 1, F = 0 の場合の解曲線である。

図7

図8

図9

このような微分方程式では、特殊解を求めたり、初期条件を満すような積分定数の決定にはかなりの計算力を必要とするので、従来の教育方法では、あまり繁雑な計算を学生に課すことはできない。微分方程式の解法や解に対する変形などは教師側が行い、振動の様子も教師が説明して学生に理解させていたと思われる。
しかし、この電卓を利用させれば、係数や初期変位を変えると振動の様子がどのように変化す
るかを、学生に実験的に調べさせることが可能になる。
ある程度のことを学生に気づかせてから式変形による説明を行えば、理解のレベルが向上する
ことが期待される。

12

数式処理電卓の応数・応物での利用

4.8

199

プログラム

TI–89 のプログラミング機能は、かなり強力である。通常の構造化言語のプログラムを組むことができるのであれば、TI–89 のプログラミングは容易である。
方程式 f (x) = 0 の実数解
以下は、方程式 f (x) = 0 が区間 [a, b] の中に 1 個の実数解を持つ場合に、その実数解を求めるものである。関数 f (x) はすでに定義済みであるものとし、a, b は f (a)f (b) < 0 であるように指定するものとする。

: kai(a,b): Func: Local aa, bb, ee, mm, yy: a→aa: b→bb: (a+b)/2→mm: 10 ˆ (−6)→ee: While abs(f(mm))>ee: If f(aa)∗f(mm)>0 Then:
mm→aa
: Else:mm→bb: EndIf: (aa+bb)/2→mm: EndWhile: Return approx(mm): EndFunc

プログラム名を kai とする。引数は、区間 [a, b]関数であることを宣言
ローカル変数の宣言
a の値を aa に代入する
b の値を bb に代入する(a + b)/2 の値を mm に代入する
誤差の限界を 10−6 にして ee に代入する|f (mm)| > ee ならば以下を実行する
f (aa) と f (bb) が同符号ならば、以下を実行する
mm の値を aa に代入する
f (aa), f (bb) が同符号でないときは、以下を実行する
mm の値を bb に代入する
If 文終わり(aa + bb)/2 を mm に代入する
While 文終わり
誤差 10−6 以内で求めた実数解 mm を返す
関数定義の終了

通常のプログラム言語の理解があれば、以上の内容は明らかであろう。代入の記号に → が利用されるので、分かりやすいといえる。デフォルトのまま mm を表示させると分数で表示される場合があるので、approx を利用して小数表示させている。
以上のプログラムは通常のアルゴリズムに添ったものであるが、TI–89 は数式処理が可能であるので、方程式の解は、このようなプログラムを組むことなく容易に求められる。単に、
solve(f (x) = 0, x) と方程式と変数を指定するだけで、その解が表示される。csolve を用いれば、複素数解まで表示する。このコマンドはプログラムの中でも利用できるので、方程式を解くたびに上記のようなプログラムを作る必要はない。
シンプソンの公式
もう一つのプログラム例として、数値積分の場合をあげる。シンプソンの公式は、区間 [a, b]
を 2n 等分して分点を (xk , yk ) (0 <= 2n)、区間の幅を h = (b − a)/2n とするとき、
=k<

Z b

f (x)dx ; h {y0 + 4(y1 + y3 + · · · + y2n−1 ) + 2(y2 + y4 + · · · + y2n−2 ) + y2n }
3
a
n−1
X

である。右辺は、
k=0

h (y + 4y2k+1 + y2k+2 ) を計算することにより得られるので、たとえ3 2kば以下のようなプログラムになる。ただし、f (x) はすでに定義済みとする。

13

200 第Ⅲ部

データ収集と工学教育での活用: simp(aa,bb): Prgm: local ee,hh,ii,nn,sa,sb: local xa,xb,xd,ya,yb,yd: 10 ˆ (−6)→ee: (bb−aa)/2→hh: aa→xa:(aa+bb)/2→xb:bb→xd: f(xa)+4f(xb)+f(xd)→sa: hh∗sa/3→sa: Disp approx(sa): 2→nn: Loop: 0→sb:aa→xa: (bb−aa)/(2∗nn)→hh: For ii, 1, nn, 1:f(xa)→ya:f(xa+hh)→yb:f(xa+2∗hh)→yd:
sb+(ya+4∗yb+yd)/3→sb:
xa+2∗hh→xa: EndFor: hh∗sb→sb: If abs(sa−sb)<ee Then:
Exit
: Else:Disp approx(sb):sb→sa:nn+1→nn: EndIf: EndLoop: Disp approx(sb): EndPrgm

プログラム名を simp とし、区間 [aa, bb] での積分を考える
プログラムであることを宣言
ローカル変数であることの宣言
xc, yc はシステム変数で利用されるので省く
誤差の限界を 10−6 にし、ee に代入
区間の中点の座標を hh に代入
区間を 2 等分したときの座標を求める
sa を計算sa は区間を 2 等分した場合の値
sa の値を小数表示する
nn = 2 として 4 等分から繰り返し計算を開始
以下の内容を繰り返す
初期値の設定区間の幅の計算
繰り返し変数を ii とし、以下を nn 回繰り返す
ya = f (xa) とする
yb = f (xa + hh) とする
yd = f (xa + 2hh) とする(ya + 4yb + yd)/3 を sb に加える
計算する小区間の左端を次の計算用に変更する
ii による繰り返しの終了
sb が、2nn 等分した場合の面積
直前の面積 sa との差が ee 以下なら以下を実行する
Loop から脱出する|sa − sb| >= ee のときは以下を実行
sb を表示する
sb を直前の値 sa とし、分割数を増やす
If 文を終了する
Loop 文を終了する
最終結果を表示するプログラムの終了

通常のプログラムと全く同様であることが分かる。プログラムの作成練習や計算のアルゴ
リズムを理解させるためには、このようなプログラムの作成は有用である。しかし、単に定Z bR
積分f (x)dx の値を求めたいのであれば、 (f (x), x, a, b) というコマンドを打ち込むだけaで済む。このような数式処理のコマンドをプログラムの中でも利用できるので、作成できるプログラムの範囲が大きく広がることになる。

5

おわりに

数式処理電卓の機能は、単なる教育用に留まるものではない。理解力の優れた学生の場合は、学生は自分の思考をどんどん押し進めることが可能になるであろう。逆に、理解力の乏しい学生の場合には、その理解を助けるツールとして利用できる。有効に活用できれば、いずれにおいても極めて大きな効果が期待される。その活用法に関する研究が早急に望まれる。

14