|
ぼくは、どちらかというと世の中のすべての事象には答えがないと考えているタイプです。
小学生の頃、「算数・数学は答えが1つだけだから面白い!」と言う大人の話を聞いて、その瞬間からその言葉に懐疑的になりました。
確かに、高校生までの算数のテスト上で書く答えは、算数のルール(公式)にあてはめて答えを導かないとバツをもらうので、それは正解です。
当時も今も、心の中では「本当にそうか?」と思うことが多く、いまでも息子の数学の勉強を見ている時にそう思ってしまいます。
例えば、「1+1=2」
「じゃあ、2つの粘土の塊を合わせると2なのか?」
「違うじゃん、塊が1つになって1個になるじゃん。」
それとか、「0.2✕2=0.4」
「2倍にするんだから、数は増える?」
「増えてないじゃん、減ってるじゃん。増えるって言うなよ。」
この疑問は、高校に入って行列やスカラー倍を習って、社会人になって簡単なJavaプログラミングで関数を作るようになった時、「ぼくが考えていたことは間違ってたなぁ」と確認できました。
//filename : HScalar.java
class HScalar {
static final double SCALAR = 0.2;
public static void main(String[] args) {
int a[] = {1,2,3,5,8};
double b[] = new double[a.length];
vScalarMatrix(a, SCALAR, b);
// 結果表示
for (int i = 0; i < a.length; ++i) {
System.out.println(SCALAR + " * a[" + i + "] = b[" + i + "] => " +
SCALAR + " * " + a[i] + " = " + b[i]);
}
}
/**
* vScalarMatrix(A, c, B)
* ベクトルA のスカラ倍cA をベクトルB にセットする
*/
static void vScalarMatrix(int a[], double c, double b[]) {
if (a.length == b.length) {
for (int i = 0; i < a.length; i++) {
b[i] = c * a[i];
}
} else {
System.out.println("戻り値用の配列長が適切ではありません。");
System.exit(0);
}
}
}
結果
0.2 * a[0] = b[0] => 0.2 * 1 = 0.2
0.2 * a[1] = b[1] => 0.2 * 2 = 0.4
0.2 * a[2] = b[2] => 0.2 * 3 = 0.6
0.2 * a[3] = b[3] => 0.2 * 5 = 1.0
0.2 * a[4] = b[4] => 0.2 * 8 = 1.6
そう振り返ると、「真理」のようなものを考えなくなり、どんどん頭が固くなっていくものだと思いました。
哲学と言っては大げさですが、少年時代は天邪鬼的に「真理」を考えながらも、関わる大人に「くだらないことを言ってないでやることをやれ!」「受験がんばれ!」と追い立てられ、狭い脳みそに中学校や高校での数学の公式を詰め込み、受験にある程度通用する脳みそを作り、自分が本当に何をしないといけないのかを考えずに、何の変哲もない社会人になってしまいました。
普通の会社員になれば、それで一生安泰だった、そんなことが「常識」と思われてきた時代だったので、それでよかったのだと思います。
コメント