基本的にExcelを題材につかいますが、表計算ソフトとしての考え方はExcelでもOpenOffice calcでも、演習室には入っていないものの三四郎などのソフトでも、変わりません。
ソフトの使い方(メニューの選び方)などは変わりますが、大差ありません。
なるべく、そういった部分に立ち入らないようにします。
![]() |
表計算ソフト |
縦横にマス目に区切られ、それぞれの枠内に値(数値、文字列)や式を書き込みます。
まさに「表」であって、その表に式を書き込めば「自動的に計算してくれる」便利な表として使うことができます。
また、グラフを自動で書かせたり、より複雑な統計処理を行う機能もあります。
表計算では、この枠1個を「セル」とよび、すべての処理の基本単位になります。
(これは予め用意された「変数」として機能します。)
一つのセルを特定して表記するために、縦方向(行方向)と横方向(列方向)に順番に(住所として)数字やアルファベットが割り当てられています。
一般的には、縦方向は数字が1〜、横方向はアルファベットでA〜(A,B..Z,AA,AB,..AZ,BA..)がついています。
これをつかって、「D3」のセル(左から4つめ、上から3つめ)というように指定します。
また、長方形状に複数を指定する場合は、「B3:E10」のように「:」で対角のセルをつないで指定します。
表計算はセルに式を入力して、はじめて「ただの表」ではなくなります。
式を入力するには
=数式という形で入れます。数値などの値はただ書き込みます。 すると、数式の値が計算されて、そのセルに表示されます。
A | B | C | |
1 | 3 | =A1+1(4) | |
2 | 10 |
さて、表計算ソフトが便利なのは、「数式のコピー」ができることです。
数式のコピーが値のコピーと違うところは、「式で参照しているセルも自動的に修正してくれる」ことです。
たとえば、B1の数式を、B2にコピーしてみます。すると、
A | B | C | |
1 | 3 | =A1+1(4) | |
2 | 10 | =A2+1(11) |
このように、式をコピーするときは、コピーする数式が使っている他のセルが、その式からみて左右にどれだけ、上下にどれだけ離れたところのものかという相対的な位置をそのままつかいます。
ただし、実際には、「常に特定のセルの値をつかいたい」こともあるわけで、そのときは「$」をつけて「これはコピーするときにいじるな」という指示をだせます。
以下、実例で確認します。
実際に操作してみてください。
![]() |
セル参照に絶対指定ない場合 |
A | B | C | |
1 | 1 | ||
2 | =A1+1(2) | ||
3 |
A | B | C | |
1 | 1 | ||
2 | =A1+1(2) | ||
3 | =A2+1(3) |
ここでいう「範囲」の指定とは、複数のセルを長方形の形(縦○個×横○個)まとめて選んで捜査の対象とする方法です。
その方法は
さきほどのメニュー選択も実は「Alt+E → I → R, D」とキーボードで操作できます。 表計算ソフトはキーボードで式を入力したりもするので、キーボード操作になれておくと操作が早くなります。マウスを使うと、持ち替えなければならないので。
なお、以上の操作は連番や一定間隔で数列を作るときに頻繁に使う手順です。
ステップ3:B1を入力、B2以下にコピー
A | B | C | |
1 | 1 | =A1*10(10) | |
2 | =A1+1(2) | =A2*10(20) | |
3 | =A2+1(3) | =A3*10(30) |
A | B | C | |
1 | 1 | =A1*10(10) | =B1*10(100) |
2 | =A1+1(2) | =A2*10(20) | =B2*10(200) |
3 | =A2+1(3) | =A3*10(30) | =B3*10(300) |
ここで、右にコピーしたときに、B列ではAを参照していたのが、C列ではBを参照するようになることに注意してください。
以上、適宜操作すると、右図のような結果になります。
ここまでは「式をコピーすると、参照先も相対的な位置関係で補正する」でした。
しかし、特定の数値、たとえば、なんらかの数値変換をするときの変換係数など「すべての計算で同じ値を使う」という場合には、絶対的な参照が必要です。
この場合、セルを表す「D3」などに「$」をつけます。
![]() |
列(横)方向を絶対指定=常に特定の列を参照 |
「D」の前に$をつけています。
A | B | C | |
1 | 1 | =$A1*10 | =$A1*10 |
2 | =A1+1 | =$A2*10 | =$A2*10 |
3 | =A2+1 | =$A3*10 | =$A3*10 |
この形は、わりとつかいます。
![]() |
行(縦)方向を絶対指定=常に特定の行を参照 |
「3」の前につけています。
A | B | C | |
1 | 1 | =A$1*10 | =B$1*10 |
2 | =A1+1 | =A$1*10 | =B$1*10 |
3 | =A2+1 | =A$1*10 | =B$1*10 |
![]() |
行列(縦横)ともに=特定のセルを参照 |
A | B | C | |
1 | 1 | =$A$1*10 | =$A$1*10 |
2 | =A1+1 | =$A$1*10 | =$A$1*10 |
3 | =A2+1 | =$A$1*10 | =$A$1*10 |
特定の定数を指定する場合などによく使います。
以上の「$」の指定も重要なテクニックですので、覚えておきましょう。
簡単とはいえ、工学部で表計算をつかう理由はデータの処理や数式の確認であって、使い道としては重要です。
普通のy=f(x)型のグラフを書いてみます。
![]() |
y=2x+3のグラフ |
![]() |
範囲の選択 |
![]() |
グラフの種類選択 |
A | B | C | |
1 | No | x | y |
2 | 1 | -10 | =2*B2+3 |
3 | =A1+1 | =B2+1 | ↓ |
4 | ↓ | ↓ | ↓ |
さくっと終わって暇だ、という場合は、y=x*xなど、y=log(x)などその他の関数を試してみましょう。
21個の点でよければ、いまのままC列の式だけ差し替えれば、またB列のXの範囲や刻みを変えればすぐにグラフにも反映されます。
![]() |
y=sin(x)のグラフ |
![]() |
y=sin(x)、cos(x)のグラフ |
そこで、右図ではB列に「i」という本来は必要のない値(中間変数、内部変数)をつくり、それでxを作っています。
A | B | C | D | |
1 | No | i | x | y |
2 | 1 | 0 | =B2/10*PI() | =SIN(C2) |
3 | =A1+1 | =B2+1 | ↓ | ↓ |
4 | ↓ | ↓ | ↓ | ↓ |
数表ができたら、同じようにグラフをつくってみてください。
これをやってみて、余裕がある場合は、SINの右に=COS(x)をつくってみましょう。
3列まとめて選択してグラフをつくると、同時に表示されます。
![]() |
x=cos(t), y=sin(t)のグラフ |
![]() |
グラフオプション |
![]() |
目盛線の設定 |
![]() |
軸の書式設定 |
![]() |
軸の固定化 |
A | B | C | D | E | |
1 | No | i | t | x | y |
2 | 1 | 0 | =B2/10*PI() | =COS(C2) | =SIN(C2) |
3 | =A1+1 | =B2+1 | ↓ | ↓ | ↓ |
4 | ↓ | ↓ | ↓ | ↓ | ↓ |
ただ、そのまま、xyを選んでグラフにすると、楕円が表示されます。
座標軸をみると、ちゃんと1を通っていますが、座標軸の比率が1:1でないため、楕円になります。
こういう「平面であること」「形をみたい」が重要なグラフの場合、この軸比が重要です。
そこで、調整します。
単純には、グラフそのものサイズを変えてしまい、見た目で軸の長さが同じになるようにします。
ただ、x軸は目盛だけ、y軸は線と、そもそも見た目が異なり、調整しにくいので、統一します。
右の2つめの図のように、グラフのブロック内のグラフの書かれていない白地のところで右クリックをします。
そのなかに「グラフオプション」があるので選びます。
そのなかの「目盛線」タブを選んで、x軸の目盛線にもチェックをいれます。
今回は、これで目盛線が正方形になるようにグラフのサイズを修正すればOKです。
しかし、表示する関数によっては、そもそも、縦軸、横軸の目盛の間隔が異なったり、値を変えたときにかってに軸の目盛がかわったりして「おせっかい」に悩まされることがあります。
この場合、軸を固定します。
右4番目の図のように、グラフの軸のうえで右クリックすると、「軸の書式設定」が現れます。
ここで、「目盛」タブをひらき、「自動」のチェックを外し、右に好きな値を設定します。
さしあたり、X軸とY軸で「目盛間隔」が一致していればよいでしょう。
以上のような操作により、関数や数値で規定されたものの形が、わかりやすく図示できるようになります。
これは特に、計算で設計したり、シミュレーション結果をグラフで表示するときに、座標として「xy」が出てくるならば必須の操作といえます。
![]() |
斜方投射 (v0=5, θ=45[deg]の場合) |
これを時間間隔 0.04[s]ごとに、計算し、グラフにしてください。
計算の数はy=0になるところ(地面に落ちるところ)までは含む程度、適当に決めてください。
その際、
右図は参考です。こういう感じにしてください。
到達度チェック
コンピュータで処理する対象は、上の例のように、基本的には数字たくさんです。
大量の数値といっても、だいたいは「同じ性質」「同じ意味」をもった数値のセットです。
たとえば、直前の放物運動は「時刻t」「座標x」「座標y」が連続的にあります。
(他に初速のような単品の数値は、全体を調整する値:パラメータとして存在する)
このような数値の連なりが「数列」です。
数列というと、高校で習う漸化式がどうこう、等比数列、等差数列などがありますが、あれは特殊な部類で、我々が使うものは「実際のデータ」としての数列が一般的です。
さて、その数列の計算で、ここまでの例は数列の個々の数値から別の数値を計算し、別の数列を1対1で作り出すというものでしたが、数列ごとに計算が必要な場合があります。
その例が「合計」とか「平均」のたぐいです。
こういった、数列の計算について、今後使う表記を明示しておきます。
なお、「aiを1からnまで加えたもの」は新たに「s1=a1, s2=a1+a2...」と別の数列になります。 たいてい必要なのは「n個の合計」とかですが。
※下にiとだけ書くような場合があり、その場合は具体的な計算ではなく、「合計をもとめるという発想」のみを主張。
最初の直接的な式は「100個の合計」といわれたら100項入力しなければならず、苦痛でありミスも起きます。
しかし、書き換えた方法は式は1本、あとはコンピュータに「100回繰り返せ」というだけで、同じ式で1000回でも計算できます。「繰り返す」はコンピュータが得意な方法なので、こういう書き換えは非常に重要です。
実際、「プログラムを作る」という場合、させたいことをいかに「単純な指示の繰り返し」に置き換えられるかが、実際の作業を簡単に、かつトラブルなくこなすことにつながります。
![]() |
Si=S(i-1)+ai |
![]() |
i, i*i, i*i*iを加えていく |
A | B | C | D | |
1 | i | ai | Si | |
2 | 1 | (a1の値) | =B2(a1相当) | |
3 | =A2+1 | (a2の値) | =C2(S1相当)+B3(a2相当) | |
4 | ↓ | (a3の値) | ↓ |
A | B | C | D | |
1 | i | ai | Si | |
2 | 1 | =A2 | =B2(=a1) | |
3 | =A2+1 | =A3 | =C2(=S1)+B3(a2) | |
4 | ↓ | ↓ | ↓ |
これをもとに、
(1から順に2乗で足していく)
(1から順に3乗で足していく)
を試してみましょう。
人によっては「1+...n」が「n(n+1)/2」になることを覚えているかもしれませんが、忘れてしまっても、表計算ソフトがあれば、数百くらいまでは式のコピーで一気にいけます。
![]() |
お買い物計算 |
A | B | C | D | E | |
1 | No | 品物 | 価格 | 個数 | 累計 |
2 | 0 | ||||
3 | 1 | りんご | 100 | 5 | =E2+C3*D3 |
4 | =A3+1 | みかん | 30 | 10 | ↓ |
5 | ↓ | キウイ | 200 | 3 | ↓ |
![]() |
i,i*i,i*i*iをsum |
A | B | C | D | |
1 | i | i | i*i | i*i*i |
2 | 1 | =A2 | =A2*A2 | =A2*A2*A2 |
3 | =A2+1 | ↓ | ↓ | ↓ |
4 | ↓ | ↓ | ↓ | ↓ |
: | : | : | : | ↓ |
11 | ↓(=A10+1) | ↓(=A11) | ↓(=A11*A11) | ↓(=A11*A11*A11) |
12 | =sum(B2:B11) | → | →(=sum(D2:D11) |
合計計算の最後に最小2乗法の計算をしてみます。
最小2乗法は、
(xi,yi)の組のデータから y=ax+bの関係を探す
などを行う計算法です。3年生の学生実験の最初にも原理を含めてやりますが、ここでは原理抜きに計算だけしてみましょう。
具体的には、以下の計算をします。
ただし、nはデータの個数で、すべてのΣは「対象となるすべてのデータに対して」なので、略しています。
(※Dは最終的には不要な値。ただ、a,bで共通に分母になるのであえて別に計算した方がわかりやすい)。
この式を計算するためには、
の4つの合計値が必要です。
そこで、表計算で計算する方針としては、
![]() |
最小二乗法の計算例 |
A | B | C | D | E | F | |
1 | No | xi | yi | xi*xi | xi*yi | |
2 | 1 | x1の値 | y1の値 | =B2*B2 | =B2*C2 | 1 |
3 | =A2+1 | x2の値 | y2の値 | ↓ | ↓ | ↓ |
4 | ↓ | : | : | ↓ | ↓ | ↓ |
: | : | : | : | : | : | : |
11 | (n) | xnの値 | ynの値 | ↓(=xn*xn) | ↓(=xn*yn) | 1 |
12 | =sum(B2:B11) | → | → | → | →(=sum(F2:F11) | |
13 | D | ※1 | ||||
14 | a | ※2 | ||||
15 | b | ※3 |
多くの場合、最小2乗法を使おうという場合はデータの数は予めわからないことがあり、実験の結果などとして、n個のデータが得られます。
そこで、「n」を求めるため、与えられるxやyと同じ数だけ「1を加える」ことでnを得ています。
同じnはこの計算表ではA11のところにも現れていますのでこれを使うことも可能ですが、D,a,bの計算で一つだけ11行の数字を使うよりは、すべて12行目の値だけで計算できた方が美しいと思いませんか?
実際問題としては、データを追加したりするときのリスクは、この方法で求めたnのほうが安全と考えられます。
![]() |
数値の範囲を選択する。(マウスでドラッグ) |
![]() |
Excelに貼り付ける |
![]() |
右下のアイコンをクリック→テキスト... |
![]() |
カンマやタブ区切りを選択 |
![]() |
カンマのみを選択 |
![]() |
元になる数表の貼り付け完了 |
できた人は ファイル名 "r02_学生番号.xls"(半角)で保存の上、課題番号r02でレポート提出。期限10/26日講義前。
(ただし、講義の進捗状況により、課題としない場合もあります:講義で通知)
ここまで終わって時間が余るという場合は、345,456,567あたりのデータも試してみましょう(提出は自分の学生番号3桁で)。
そのときに、数式を入力し直すのではなく、既存の最小二乗法計算シートを活用する方法を考えてみましょう。