2008-01-24

Googleドキュメント

今日は最後のまとめとして、これまでに勉強したことを組み合わせて使ってみましょう。
まず、去年作ったgoogleアカウントを使ってログインしてください。googleの画面も少し変更されています。
パスワードを忘れたときは「アカウントにアクセスできない場合」をクリックして表示される「アカウントにログインしようとしたときの問題の状況」の画面で「パスワードを忘れた場合」をクリックすると、自分のアドレスにパスワード再設定用の情報が送られてきます。
いたずら防止に、読みにくい字が表示されるので、それを読んで入力してください。

しばらく待つと、自分のメールアドレスに「Google パスワード アシスタンス」というメールが届きます。「次のリンクにアクセスしてください。」という指示に従ってクリックするとパスワードをもう一度設定することが出来ます。

無事にログイン出来たら、左上の「more」をクリックして「ドキュメント」をクリックしてください。
「 Googleドキュメントを開始する」再び名前を聞かれますので、ニックネームか名前を入力して「次へ」をクリックください。

するとGoogleドキュメントという画面になります。左側の「新規作成▼」をクリックすると「文書」「スプレッドシート」「プレゼンテーション」を作ることが出来ます。それぞれ、これまでにWord, Excel, PowerPointと同じようなものです。「スプレッドシート」を選んでみましょう。もう一度「Googleドキュメントを開始する」と表示されて「次へ」をクリックします。
Excelと同じような画面が表示されます。正直言って、Excelの方が使いやすいのですが、これには
・作った文書をインターネットで公開できる
・無料で使える
という長所があります。岡山大学の学生さんなら情報基盤センターでExcelを使えるので二番目の長所は活きませんが、一番目の長所の活かし方を説明します。

まず、表にExcelの練習の時と同じように数字を入力してください。そして右上の「Save」をクリックしてください。私の画面は何故か英語になっていますが「保存」と表示されているかもしれません。
Excelで保存するとき同様、名前をつけて保存します。
次に右上の「Publish」をクリックし、表示された画面で「Publish Now」をクリックします(日本語で表示されるかも知れません)。
すると、例えば私が作ったページは「http://spreadsheets.google.com/pub?key=p9RYdGewatilAfOfhkXVjdA」というアドレスで公開された、と表示されます。このアドレスを教えることで、自分が用意した文書やデータを人に見せることが出来ます。

今度はこれを先週勉強したHTMLファイルと組み合わせてみましょう。
「more publishing option」をクリックします。別のウィンドゥが開きますので、File Formatから「HTML to embed in webpage」を選んで「Generate URL」をクリックしてください。そこで表示された<iframe>から</iframe>までを先週作ったhtmlファイルの本文の部分に貼り付けます。
そのhtmlファイルを開いてみると、先ほど作った表が表示されます。

最後に、今度はブログに貼り付けて見ましょう。Googleのブログの講義を思い出しながら、ブログを書いた画面の「作成」の隣の「HTMLの編集」をクリックしてください。ここにもHTMLを書くことが出来ますので、先ほどの<iframe>から</iframe>までを貼り付けると、自分のブログに表を表示することが出来ます。

2008-01-23

期末試験

  1. 前回の解答

    このブログでの説明どおりにプログラムを書くと次のようになります。

    Sub 連立一次方程式1()
    Dim x(3, 4) As Single
    Dim i As Integer, j As Integer, k As Integer, basho As Integer

    Sheets(1).Select
    For i = 1 To 3
     For j = 1 To 3
      x(i, j) = Selection.Cells(i, j)
     Next j
    Next i

    Sheets(2).Select
    For i = 1 To 3
     x(i, 4) = Selection.Cells(i, 1)
    Next i

    Sheets(3).Select
    basho = 1
    Cells(basho, 1).Select
    For i = 1 To 3
     For j = 1 To 4
      Selection.Cells(i, j) = x(i, j)
     Next j
    Next i

    Rem (1,1)成分を1にするために第一行を(1,1)成分で割るプログラムを書いてください。

    k = x(1, 1)

    For j = 1 To 4
     x(1, j) = x(1, j) / k
    Next j

    basho = basho + 4
    Cells(basho, 1).Select
    For i = 1 To 3
     For j = 1 To 4
      Selection.Cells(i, j) = x(i, j)
     Next j
    Next i

    Rem (2,1)成分を0にするために第2行から第1行×(2,1)成分を引きます。

    k = x(2, 1)

    For j = 1 To 4
     x(2, j) = x(2, j) - x(1, j) * k
    Next j

    Rem (3,1)成分を0にするために第3行から第1行×(3,1)成分を引きます

    k = x(3, 1)

    For j = 1 To 4
     x(3, j) = x(3, j) - x(1, j) * k
    Next j

    basho = basho + 4
    Cells(basho, 1).Select
    For i = 1 To 3
     For j = 1 To 4
      Selection.Cells(i, j) = x(i, j)
     Next j
    Next i

    Rem (2,2)成分を1にするために第2行を(2,2)成分で割ります

    k = x(2, 2)

    For j = 1 To 4
     x(2, j) = x(2, j) / k
    Next j

    basho = basho + 4
    Cells(basho, 1).Select
    For i = 1 To 3
     For j = 1 To 4
      Selection.Cells(i, j) = x(i, j)
     Next j
    Next i

    Rem (1,2)成分を0にするために第1行から第2行×(1,2)成分を引きます

    k = x(1, 2)

    For j = 1 To 4
     x(1, j) = x(1, j) - x(2, j) * k
    Next j

    Rem (3,2)成分を0にするために第3行から第2行×(3,2)成分を引きます

    k = x(3, 2)

    For j = 1 To 4
     x(3, j) = x(3, j) - x(2, j) * k
    Next j

    basho = basho + 4
    Cells(basho, 1).Select
    For i = 1 To 3
     For j = 1 To 4
      Selection.Cells(i, j) = x(i, j)
     Next j
    Next i

    Rem (3,3)成分を1にするために第3行を(3,3)成分で割ります

    k = x(3, 3)

    For j = 1 To 4
     x(3, j) = x(3, j) / k
    Next j

    basho = basho + 4
    Cells(basho, 1).Select
    For i = 1 To 3
     For j = 1 To 4
      Selection.Cells(i, j) = x(i, j)
     Next j
    Next i

    Rem(1,3)成分を0にするために第1行から第3行×(1,3)成分を引きます

    k = x(1, 3)

    For j = 1 To 4
     x(1, j) = x(1, j) - x(3, j) * k
    Next j

    Rem (2,3)成分を0にするために第2行から第3行×(2,3)成分を引きます

    k = x(2, 3)

    For j = 1 To 4
     x(2, j) = x(2, j) - x(3, j) * k
    Next j

    basho = basho + 4
    Cells(basho, 1).Select
    For i = 1 To 3
     For j = 1 To 4
      Selection.Cells(i, j) = x(i, j)
     Next j
    Next i

    End Sub

  2. 発展課題の解答

    レポート課題が出来た人には、似たようなことを繰り返し書いている部分をFor文を使ってまとめるプログラムを考えてもらいました。

    Sub 連立一次方程式2()

    Dim x(3, 4) As Single, i As Integer, j As Integer, k As Integer, basho As Integer

    Sheets(1).Select
    For i = 1 To 3
     For j = 1 To 3
      x(i, j) = Selection.Cells(i, j)
     Next j
    Next i

    Sheets(2).Select
    For i = 1 To 3
     x(i, 4) = Selection.Cells(i, 1)
    Next i


    Sheets(3).Select
    basho = 1
    Cells(basho, 1).Select
    For i = 1 To 3
     For j = 1 To 4
      Selection.Cells(i, j) = x(i, j)
     Next j
    Next i


    For i = 1 To 3
     For k = i + 1 To 4
      x(i, k) = x(i, k) / x(i, i)
     Next k
     x(i, i) = 1
     For j = 1 To 3
      If i <> j Then
       For k = i + 1 To 4
        x(j, k) = x(j, k) - x(i, k) * x(j, i)
       Next k
       x(j, i) = 0
      End If
     Next j
    Next i

    basho = basho + 4
    Cells(basho, 1).Select
    For i = 1 To 3
     For j = 1 To 4
      Selection.Cells(i, j) = x(i, j)
     Next j
    Next i

    End Sub

  3. 期末試験

    Sheet1に書かれた行列の行の数と列の数を数えて、その転置行列、つまり行と列を入れ替えた行列をSheet2に出力するプログラムを書きなさい。
    例えば、Sheet1に

    12
    34
    56
    と書かれていたら、Sheet2に
    135
    246
    と出力するプログラムです。

2008-01-21

スプライン

前回、if文を使うと、引数にベクトルを与えたときに成分毎に計算してくれないのでsign関数を使う方法を紹介しましたが、条件式を使うことで解決できると院生さんに教えてもらいました。

例えば
1 > 0
の値はTRUEですが、掛け算を行って
(1 > 0) * 1
とすると1になります。当然
(1 < 0) * 1
は0になります。

従って、前回作った0次スプライン基底は

sp0=function(x) {
return( (x >= 0) * (x < 1) )
}

で定義することが出来ます。等号は1次以上ならあってもなくても良いのですが、0次から1次を作るためには片方だけに付けてください。

さて前回、0次スプラインから1,2,3次スプラインを作ろうとしましたが、その解答です。
1次スプラインは既に作ったので2次、3次スプラインを作ります。

sp2=function(x) {
return( x*sp1(x) + (3-x)*sp1(x-1) )
}

sp3=function(x) {
return( x*sp2(x) + (4-x)*sp2(x-1) )
}

この方法だと高さがどんどん高くなるのですが、係数の方で調整できるので簡単なこの方法をここでは紹介しておきます。

このスプライン基底を、以前の多項式回帰における各次数の項のように使うことで非線形回帰を行います。違う点は、xの範囲を覆う基底を用意すれば定数が表現できるので、定数項が不要になることです。

非線形回帰を適用する例として広く使われているものに、The motorcycle data setがあります。 これはオートバイを実験的に衝突させて、取り付けたセンサーに加わる加速度を衝突後の経過時間とともに記録したものです。 時間と加速度の2つ1組のデータが133組あります。表計算ソフトに一旦貼り付けて、133×2の形に整えて、Rへ読み込んでください。

2008-01-20

コイン駐車場

30分100円の駐車場と、70分200円の駐車場の選択を考えます。
210分(30分×7=70分×3)までの駐車料金は以下のようになります。
~分まで30分100円70分200円長さ
30100200-10030-3000
602002000300
70300200100101000
90300400-10020-2000
1204004000300
140500400100202000
150500600-10010-1000
1806006000300
210700600100303000
210分までで駐車料金の差の最大値は100円であること、210分の時点で100円の差があることから、この後は常に70分200円の方がお徳です。

さて、駐車時間が予め正確に分かっていればこんな表を書くまでも無く暗算でどちらにすべきか分かるのですが、実際には分からないことが多いです。
それで、駐車時間という確率変数がどの時間帯に入るか考えるために、各々の料金差にその料金差が発生する時間の長さを掛けてみました。
この表から、例えば
・駐車時間が0分から210分まで、何分になりそうか全く分からず一様分布なら損得は無し。
・2時間以下ならば、60~70の僅かな時間を除き、30分100円の方が安いか同じか。
などが分かります。

何故こんな表を作ったかというと、今朝、駐車時間の見積もりを間違えて高いほうの選択をしてしまったからです。

2008-01-17

ホームページ作成

これまで、ホームページは見たり利用するだけでしたが、自分で作ってみましょう。
作ったページは、学内なら他の人にも見せることが出来ます。

ホームページの原稿は、HTMLという言語で書かれています。
秀丸エディタを使って

<FONT COLOR="red">こんにちは</FONT>こんばんわ

と書いてください。このとき、VBA同様、<FONT COLOR="red">などは仮名漢字変換をOFFにして入力してください。そして「名前を付けて保存」でhello.htmという名前でW:ドライブに保存してください。保存したら、W:ドライブを開いて、hello.htmというファイルをダブルクリックしてください。
こんにちは、という文字が赤く表示され、こんばんわ、という文字は黒く表示された筈です。そして<FONT COLOR="red">などは表示されていないでしょう。

< >で挟まれた部分は、実際には表示されず、表示を飾る命令になります。
<FONT COLOR="red">は文字を赤くしなさい、という命令、そして</FONT>は文字に関する命令おわり、という意味です。このように、HTML言語では<命令>と</命令>がペアで使われます。

では、本格的にホームページの原稿を作ってみましょう。基本的なHTMLファイルは

<HTML>
<HEAD>
<TITLE>
タイトル
</TITLE>
</HEAD>
<BODY>
本文
</BODY>
</HTML>

です。これをindex.htmというファイル名で保存してから、W:ドライブのindex.htmというファイルをダブルクリックしてください。 先ほど書いたファイルの内容が表示されたはずです。
先ほど書いたファイルの説明をします。

<HTML>  ←ここからHTMLファイルが始まります。
<HEAD>  ←ここから前書きが始まります。
<TITLE>  ←ここからタイトルが始まります。
タイトル     ←ホームページのタイトルです。自由に書き換えてください。
</TITLE>  ←ここまでがタイトルです。
</HEAD>  ←ここまでが前書きです。
<BODY>  ←ここから本文が始まります。
本文      ←ホームページの本文です。自由に書き換えてください。
</BODY>  ←ここまでが本文です。
</HTML>  ←ここまでがHTMLファイルです。

これだけでは本文が物足りないので、色々飾りましょう。沢山のコマンドがありますが、この講義ではその中の一部だけを紹介します。全部のコマンドは HTMLタグリファレンスを見てください。

  • 改行は<BR>、段落は<P>です。
  • 本文全体の色を決めるには、<BODY TEXT=文字の色 BGCOLOR=背景の色>と書きます。例えば<BODY TEXT="white" BGCOLOR="black">のように。
    詳しくは <BODY>を見てください。
  • 一部分の文字の色を変えるには、上の例のように<FONT COLOR=文字の色>と書きます。大きさを変えるなら<FONT SIZE=大きさ>です。例えば<FONT COLOR="green" size="7">大きな緑の文字</FONT>のように、両方同時に指定することも出来ます。
    詳しくは<FONT> を見てください。
  • 色の名前は、色の名前を見てください。
  • 画像を貼り付けるには、例えば、http://www.okayama-u.ac.jp/japanese/know/img/president.jpgを皆さんのホームページに貼るには
    <IMG SRC="http://www.okayama-u.ac.jp/japanese/know/img/president.jpg">と書きます。画像のアドレスは、画像にマウスを合わせて右クリックして「プロパティ」を見ます。デジカメの画像をW:ドライブに保存して使うことも出来ます。
    詳しくは <IMG>を見てください。
  • 他のページへのリンクを張るには、例えば、岡山大学のホームページhttp://www.okayama-u.ac.jp/にリンクを張るには
    <A HREF="http://www.okayama-u.ac.jp/">岡山大学</A>と書きます。
    詳しくは<A>を見てください。
ホームページでは表を使うことが多いです。 このような
ABC
244
2-1-6
23-2
Sheet1
良く見かける表だけでなく、様々な文字や画像を並べるときも使えます。例えば

銀杏並木が美しい
岡山大学へようこそ
春は桜が美しい
環境理工学部全景

のようにレイアウトも、実は表を使って

銀杏並木が美しい
岡山大学へようこそ
春は桜が美しい
環境理工学部全景
のように並べておいて、内側の表の罫線を表示させず、一方外側の表は枠として表示させることで実現しています。
そこで表の作り方を勉強しましょう。 最も基本的な表の形は

<TABLE>
<TR><TD>左上 </TD><TD>右上 </TD></TR>
<TR><TD>左下 </TD><TD>右下 </TD></TR>
</TABLE>
です。この通りに入力すると

左上 右上
左下 右下
になります。順を追って説明します。

HTMLでは<命令>と</命令>がペアで使われるのでしたよね。
表では<TABLE>と</TABLE>がペアとなって、表の始まり、表の終わり、を表します。
そして表の中では<TR>と</TR>がペアとなって、行の始まり、行の終わり、を表します。
最後に、各行の中では<TD>と</TD>がペアとなって、セルの始まり、セルの終わり、を表します。

練習問題:次の表を作ってください。

左上 中上 右上
左中 中中 右中
左下 中下 右下

<TABLE>を<TABLE border="1">に書き換えると、表の境界線が表示されます。

表に関するいくつかの補足

  • 一番上の表のsheet1のように複数のセルを横に繋げて表示するには<TD colspan="3">中身</TD>のように書きます。
  • 縦に繋げて表示するには<TD rowspan="2">中身</TD>のように書きます。
  • セルの中央に文字を表示するには<TD>を<TD align=center>に、 右に表示するには<TD>を<TD align=right>に書き直します。
  • セルの上のほうに表示するには<TD valign=top>, 中央なら<TD valign=middle>, 下のほうなら<TD valign=bottom>です。
  • bgcolor="色の名前"という方法での色づけは、表の塗りつぶしにも使えます。<TABLE bgcolor="red">とか<TR bgcolor="green">とか<TD bgcolor="blue">を試してみてください。どこに色がつきましたか?
ホームページ作りに関してはまだまだ沢山の項目があります。興味がある人は解説サイトなどを見てください。但し、沢山の項目を駆使するより、配置、配色を工夫する方が見やすいページになります。

ホームページ作りに関する課題:
秀丸エディタで作成したindex.htmをメールに貼り付けて提出してください。 条件は

  1. 他のサイト(岡山大学、外部などどこでもいいです)へのリンクも作る。
  2. 画像を貼る。
  3. 表を作る。境界線は表示してもしなくてもいいです。
  4. 色をつける。文字の色でも背景の色でもいいです。
以上を満たすページを1月31日までに作って、完成したら出席確認と同じメールアドレス宛に送ってください。

2008-01-16

連立一次方程式の解法

  1. 前回の課題の解答

    まず2行2列の行列の積のプログラムです

    Sub 行列の掛算1()
    Dim a(2, 2), b(2, 2), c(2, 2)

    Sheets(1).Select
    For i = 1 To 2
      For j = 1 To 2
        a(i, j) = Selection.Cells(i, j)
      Next j
    Next i

    Sheets(2).Select
    For i = 1 To 2
      For j = 1 To 2
        b(i, j) = Selection.Cells(i, j)
      Next j
    Next i

    For i = 1 To 2
      For j = 1 To 2
        c(i, j) = 0
        For k = 1 To 2
          c(i, j) = c(i, j) + a(i, k) * b(k, j)
        Next k
      Next j
    Next i

    Sheets(3).Select
    For i = 1 To 2
      For j = 1 To 2
        Selection.Cells(i, j) = c(i, j)
      Next j
    Next i
    End Sub

    次に行列の型を調べて掛け算できるかどうか判断するプログラムです。

    Sub 行列の掛算2()
    Dim x() As Single, y() As Single, z() As Single, gyou1 As Integer, gyou2 As Integer, retu1 As Integer, retu2 As Integer, i As Integer, j As Integer, k As Integer

    Sheets(1).Select
    i = 1
    Do While Selection.Cells(i, 1) <> "" And IsNumeric(Selection.Cells(i, 1))
     i = i + 1
    Loop
    gyou1 = i - 1

    j = 1
    Do While Selection.Cells(1, j) <> "" And IsNumeric(Selection.Cells(1, j))
     j = j + 1
    Loop
    retu1 = j - 1

    Sheets(2).Select
    i = 1
    Do While Selection.Cells(i, 1) <> "" And IsNumeric(Selection.Cells(i, 1))
     i = i + 1
    Loop
    gyou2 = i - 1

    j = 1
    Do While Selection.Cells(1, j) <> "" And IsNumeric(Selection.Cells(1, j))
     j = j + 1
    Loop
    retu2 = j - 1

    If retu1 = gyou2 Then
     ReDim x(gyou1, retu1)
     ReDim y(gyou2, retu2)
     ReDim z(gyou1, retu2)
     
     Sheets(1).Select
     For i = 1 To gyou1
      For j = 1 To retu1
       x(i, j) = Selection.Cells(i, j)
      Next j
     Next i
     
     Sheets(2).Select
     For i = 1 To gyou2
      For j = 1 To retu2
       y(i, j) = Selection.Cells(i, j)
      Next j
     Next i
     
     For i = 1 To gyou1
      For j = 1 To retu2
       z(i, j) = 0
       For k = 1 To retu1
        z(i, j) = z(i, j) + x(i, k) * y(k, j)
       Next k
      Next j
     Next i
     
     Sheets(3).Select
     For i = 1 To gyou1
      For j = 1 To retu2
       Selection.Cells(i, j) = z(i, j)
      Next j
     Next i
     
    Else
     Msgbox ("行列の型が合わないので掛け算できません")
    End If

    End Sub

  2. 一般化

    式の数、未知数の数が4個になると前回のプログラムは使えません。 折角作ったプログラムですので、式の数が増えても使えるようにしましょう。

    Sub 連立一次方程式2()
    Dim x(3, 4) As Single
    Dim i As Integer, j As Integer, basho As Integer

    Sheets(1).Select
    For i = 1 To 3
    For j = 1 To 3
    x(i, j) = Selection.Cells(i, j)
    Next j
    Next i

    Sheets(2).Select
    For i = 1 To 3
    x(i, 4) = Selection.Cells(i, 1)
    Next i

    Sheets(3).Select
    basho = 1
    Cells(basho, 1).Select
    For i = 1 To 3
    For j = 1 To 4
    Selection.Cells(i, j) = x(i, j)
    Next j
    Next i

    Rem (1,1)成分を1にするために第一行を(1,1)成分で割るプログラムを書いてください。

    Rem p=2,3に対して、(p,1)成分を0にするために第p行から第一行の(p,1)成分倍を引くプログラムを書いてください。

    Rem (2,2)成分を1にするために第二行を(2,2)成分で割るプログラムを書いてください。

    Rem p=1,3に対して、(p,2)成分を0にするために第p行から第二行の(p,2)成分倍を引くプログラムを書いてください。

    Rem (3,3)成分を1にするために第三行を(3,3)成分で割るプログラムを書いてください。

    Rem p=1,2に対して、(p,3)成分を0にするために第p行から第三行の(p,3)成分倍を引くプログラムを書いてください。

    basho = basho + 4
    Cells(basho, 1).Select
    For i = 1 To 3
    For j = 1 To 4
    Selection.Cells(i, j) = x(i, j)
    Next j
    Next i

    End Sub

    このプログラムの赤い部分、青い部分、緑の部分は非常に似ています。このように似た部分を3回書くのではなく
    For q=1 to 3
      共通の部分
    Next q
    のように書けないでしょうか。そうすれば繰り返しの回数を増やすことで式の数が増えても解けるようになります。

  3. データ解析

    未知数の数が4つの連立一次方程式も解ける様になった人は次の課題に挑戦してください。

    以下のように日本の20都市に対して、1月の日最低気温の月平均値、緯度、経度、標高のデータがあります。

    都市番号 都市 気温y緯度x1経度x2標高x3
    1稚内-8.0 45.42 141.68 2.8
    2旭川-13.6 43.77 142.37 111.9
    3札幌-9.5 43.05 141.33 17.2
    4青森-5.4 40.82 140.78 3.0
    5盛岡-6.7 39.70 141.17 155.2
    6仙台-3.2 38.27 140.90 38.9
    7金沢-0.1 36.55 136.65 26.1
    8長野-5.5 36.67 138.20 418.2
    9高山-7.6 36.15 137.25 560.2
    10軽井沢-10.0 36.33 138.55 999.1
    11名古屋-0.9 35.17 136.97 51.1
    12飯田-4.7 35.52 137.83 481.8
    13東京-0.4 35.68 139.77 5.3
    14鳥取0.5 35.48 134.23 7.1
    15京都-0.6 35.02 135.73 41.4
    16広島0.2 34.37 132.43 29.3
    17福岡1.5 33.58 130.38 2.5
    18鹿児島2.0 31.57 130.55 4.3
    19高知0.1 33.55 133.53 1.9
    20那覇13.5 26.23 127.68 34.9
    出典:坂元慶行、石黒真木夫、北川源四郎著「情報量統計学」共立出版株式会社

    このデータを元に、緯度、経度、標高と気温の関係を数式で表したいと思います。 また神戸の緯度は34.68、経度は135.18、標高は59.30です。神戸の気温を推定しましょう。

    気温をy, 緯度をx1、経度をx2、標高をx3とおきます。 緯度、経度、標高と気温の関係は色々考えることが出来ますが、ここでは簡単なものとして

    y=β01x12x23x3+誤差

    という形を考えます。
    β0123はどうやって決めましょうか。
    本当の気温yと、緯度、経度、標高から推定した気温β01x12x23x3 との差が小さくなるように決めましょう。

    データの
    1番目の都市の気温をy1、緯度をx11、経度をx12、標高をx13
    2番目の都市の気温をy2、緯度をx21、経度をx22、標高をx23
    ・・・・・
    20番目の都市の気温をy20、緯度をx20,1、経度をx20,2、標高をx20,3
    と書きます。すると、本当の気温と推定した気温の差は

    y1-(β01x112x123x13)
    y2-(β01x212x223x23)
    ・・・・・
    y20-(β01x20,12x20,23x20,3)

    です。これらはプラスになったりマイナスになったりするので、そのまま足すと打ち消しますから、二乗して足して

    i=120 {yi-(β01xi12xi23xi3)}2

    が最小になるようなβ0123を求めることにします。
    一見、求めるのは難しそうに見えます。でもこれはβ0123に関する二次式で、しかもは二乗して足していますから0以上です。だからグラフは下に凸になっていて、どこかで最小値を取ります。

    公式の導出は省略しますが、実は最小にするβ0123は次の連立一次方程式を解くことで求めることが出来ます。

    まず未知数β0123を縦に並べた ベクトル

    β0
    β1
    β2
    β3
    をΒとおき、

    ベクトル
    y1
    y2
    y20
    をYとおき、

    最後に行列
    1x11x12x13
    1x21x22x23
    1x20,1x20,2x20,3
    をXとおきます。
    1が縦に並んでいるのはβ0の係数だからです。この時、最小にするβ0123は 連立一次方程式

    (Xt・X)Β=(Xt・Y)

    を解くことで得られます。Xの右上のtは転置を表します。行列X、ベクトルYの配置は上のデータの表と同じですからコピーすれば入力しやすいです。

    この連立一次方程式を解いて、β0123を求めてください。

2008-01-14

国民生活センター 石油ファンヒーターによる室内空気汚染

2007年10月5日付のPDFファイルがあるのですが、強引に要約すると
  • 使い始めは大きく働くので10分ほどで基準値を超えるので、やはり1時間に1~2回の換気は必要
  • 部屋全体が温まってからの換気は、壁なども暖まっているので室温下落は1℃程度。だから換気後にファンヒーターが強くなることはなく、空気汚染も少ない。
ということみたいです。

ちなみにこの3連休は風邪を引いて、手軽に食べられて食欲も出るということで3日続けてマクドナルドでした。休日ということでドライブスルーもいっぱい並んでいて、構造上悪気が無い人も割り込まざるを得ない状態でした。私は自分のペースで選ぶのが好きなので駐車場に車を置いて店内で買ったので待ちませんでしたが。
割り込みというと小幡績先生の「日本人は、自分勝手ではない、というのは妄想で、自分勝手にしないほうが得な社会だったからそうしていたに過ぎず、今やクレーマー天国であるから、そのインセンティブに忠実に行動を変化させている。」という言葉が思い出されます。

泣ける洋画ベスト30を見て、学生の頃は深夜に放送されるちょっとマイナーな映画を良く見ていたことを思い出しました。最近は仕事がなくてもついインターネットを使ってしまって映画を見てないですね。

独立行政法人 工業所有権情報・研修館:特許電子図書館からのお知らせ

2008-01-10

PowerPointの使い方

パワーポイントとは

パソコンの画面を使って、研究成果などを他の人に説明するためのソフトです。
Wordが、最終的には印刷するのに対し、パワーポイントはプロジェクタに映します。

早速起動してみましょう。


ワードと違って、枠の中にしか文字を書くことが出来ません。1ページ目にはタイトルと名前を書きましょう。
書いたら画面上の「新しいスライド(N)」をクリックするか、ツールバーの「挿入(I)」「新しいスライド(N)」をクリックして2枚目のスライドを挿入します。


2枚目には通常、その発表のあらすじを箇条書きで書きます。目次です。


枠の中にしか文字を書けないので、文字を書きたい場所にテキストボックスという文字を書くための枠を追加します。

するとこのように幾つでも文字を書くための枠を追加できます。

このままでは画面が寂しいので、デザインを変えてみましょう。

「書式」「スライドのデザイン」をクリックして、右側の一覧から色々なデザインを試してみてください。

エクセルのデータの貼り付け

エクセル上でまとめた研究のデータやグラフをパワーポイントに貼り付けることが出来ます。
エクセルの講義の時に使ったデータを保存している人は開いてください。保存していなかったら、利用の手引きを見てもう一度入力してグラフを作ってください。今回は練習ですので、どんなグラフでも構いません。
エクセルのグラフをクリックして「コピー」します。

パワーポイントで「貼り付け」を選びます

するとグラフが貼り付けられます。

グラフを貼り付けた後で、データの間違いに気付いたら、グラフをダブルクリックしてください。

グラフの部分だけがエクセルになるので、データやグラフの編集をすることが出来ます。

アニメーション

特に注目を集めたい部分は「アニメーションの設定」をすることで目立たせることが出来ます。

右側にある「効果の追加」から適当に選んでみてください。

選んだら「実行」して、どのように表示されるか見てみましょう。

右向きの矢印キーを押すと次のページに進みます。

その他にも写真、数式などを挿入するとことが出来ます。やり方はワードと同じです。
また、ワードの講義の時には時間の都合で省略しましたが、図形を挿入することも出来ます。

課題

何か一つテーマを決めて、それを紹介するパワーポイントを作って、メールに添付して提出してください。条件として
  1. 一枚目はタイトルです。自分が紹介するテーマと、学籍番号、名前を書いてください。
  2. 二枚目は目次です。3枚目以降の内容を箇条書きで書いてください。
  3. 三枚目以降が具体的な紹介です。
    • エクセルのグラフ、又は写真や図などを少なくとも一つ貼り付けてください。
    • アニメーションを少なくとも一回使ってください。

2008-01-09

連立一次方程式の解法I

  1. 履き出し法


    この問題をExcelを使って解きましょう。まず係数の部分と定数項の部分を Excelのセルに入力します。


    1
    2
    3

    ABC
    244
    2-1-6
    23-2
    Sheet1

    1
    2
    3

    ABC
    18

    -2

    -6

    Sheet2

    まずこの係数部分と定数項を配列に読み込んで、Sheets(3)の(1,1)セルから順に 表示します。
    Sub 連立一次方程式1()
    Dim x(3, 4) As Single
    Dim i As Integer, j As Integer

    Sheets(1).Select
    For i = 1 To 3
     For j = 1 To 3
      x(i, j) = Cells(i, j)
     Next j
    Next i

    Sheets(2).Select
    For i = 1 To 3
     x(i, 4) = Cells(i, 1)
    Next i

    Sheets(3).Select
    Cells(1, 1).Select
    For i = 1 To 3
     For j = 1 To 4
      Selection.Cells(i, j) = x(i, j)
     Next j
    Next i

    End Sub
    するとこのようになります。

    1
    2
    3

    ABCD
    24418
    2-1-6-2
    23-2-6
    Sheet3

  2. 履き出し法の実行
    自分で計算する手順を考えながら、プログラムを書きます。 途中経過もExcelに出力すると分かりやすいです。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11

    ABCD
    24418
    2-1-6-2
    23-2-6





    1229(1,1)成分を1にするために第1行を(1,1)成分で割ります
    2-1-6-2
    23-2-6





    1229
    0-5-10-20(2,1)成分を0にするために第2行から第1行×(2,1)成分を引きます
    0-1-6-24(3,1)成分を0にするために第3行から第1行×(3,1)成分を引きます
    Sheet3

    Sub 連立一次方程式2()
    Dim x(3, 4) As Single
    Dim i As Integer, j As Integer, basho As Integer

    Sheets(1).Select
    For i = 1 To 3
     For j = 1 To 3
      x(i, j) = Cells(i, j)
     Next j
    Next i

    Sheets(2).Select
    For i = 1 To 3
     x(i, 4) = Cells(i, 1)
    Next i

    Sheets(3).Select
    basho = 1
    Cells(basho, 1).Select
    For i = 1 To 3
     For j = 1 To 4
      Selection.Cells(i, j) = x(i, j)
     Next j
    Next i

    Rem (1,1)成分を1にするために第一行を(1,1)成分で割るプログラムを書いてください。

    basho = basho + 4
    Cells(basho, 1).Select
    For i = 1 To 3
     For j = 1 To 4
      Selection.Cells(i, j) = x(i, j)
     Next j
    Next i

    Rem (2,1)成分を0にするために第二行から第一行の(2,1)成分倍を引くプログラムを書いてください。
    Rem (3,1)成分を0にするために第三行から第一行の(3,1)成分倍を引くプログラムを書いてください。

    basho = basho + 4
    Cells(basho, 1).Select
    For i = 1 To 3
     For j = 1 To 4
      Selection.Cells(i, j) = x(i, j)
     Next j
    Next i

    End Sub

  3. 演習問題

    1. 上のプログラムにおいて、Rem 文で書いている手順をBasicのプログラムで書いてください。

    最後まで解くとこうなります。

    ABCDE(ここは説明です)
    24418
    2-1-6-2
    23-2-6





    1229(1,1)成分を1にするために第1行を(1,1)成分で割ります
    2-1-6-2
    23-2-6





    1229
    0-5-10-20(2,1)成分を0にするために第2行から第1行×(2,1)成分を引きます
    0-1-6-24(3,1)成分を0にするために第3行から第1行×(3,1)成分を引きます





    1229
    0124(2,2)成分を1にするために第2行を(2,2)成分で割ります
    0-1-6-24





    10-21(1,2)成分を0にするために第1行から第2行×(1,2)成分を引きます
    0124
    00-4-20(3,2)成分を0にするために第3行から第2行×(3,2)成分を引きます





    10-21
    0124
    0015(3,3)成分を1にするために第3行を(3,3)成分で割ります





    10011(1,3)成分を0にするために第1行から第3行×(1,3)成分を引きます
    010-6(2,3)成分を0にするために第2行から第3行×(2,3)成分を引きます
    0015
    Sheet3

2008-01-08

K100Dsuper

今回の旅行で大活躍したK100Dsuperについて。

受光素子は大きいのに600万画素しかないので、一つ一つの画素がとても大きいです。
ですからとても綺麗な写真が撮れます。
多くのデジカメにはパープルフリンジといって、明るい部分と暗い部分の境界が紫色になってしまうのですが、このカメラではなりません。
後日追記:これはレンズDA 21mm F3.2 AL Limitedのおかげでした。後日Distagon T* 2/28 ZFを使ったら出まくりました。高いレンズなのになぁ…

夜間にストロボを使うと、ストロボの光が届かない背景が真っ暗になります。
そこを写すためにはスローシンクロと言って、シャッター速度を遅くすることで背景も暗いながらも写すことが出来ます。
このカメラでスローシンクロを使うには「夜景人物モード」にしてからストロボを使います。
但しこの場合、一番写したい部分はシャッター速度が遅いことでストロボなしでもある程度写るはずのところにさらにストロボで照らしますので明るくなりすぎますから、露出補正を-2EVかけます。
「夜景人物モード」を使うとホワイトバランスは自動的に「オート」に設定されてしまうので、RAWファイルを処理する時に「ストロボ」に変更します。
また、「夜景人物モード」でストロボを使うときに、後で詳しく説明する「感度設定」を「オート」にしておくと、カメラが「ストロボがあるから感度は低くて良い」と思うのでしょうか、ISO200に設定してしまい、その感度で背景を写すためにシャッター速度が遅くなりすぎますので、感度設定はISO800くらいにした方が良いです。

感度設定
AEの精度が悪く、画像が時々明るくなりすぎたり逆に暗くなりすぎることがあります。
暗すぎる場合は編集するときにノイズは増えますが明るくすることが出来ますが、明るすぎる場合は完全に飛んでしまっていて編集しても直りません。
それに、最近の他のデジカメの「ダイナミックレンジ拡大」も暗めに撮って明るい部分を飛ばさないようにしているわけですから、露出補正は-1EVくらいにしたほうが良いです。
逆光で暗くなりすぎるときだけ露出補正をゼロにするくらいです。
露出補正をプラスにするのは、夜間、背後に照明があってしかもストロボを使わないときだけです。
感度は200から3200まで設定できて、AUTOにしたときの自動変更範囲も200~400から200~3200まで選べます。
でも露出補正をすると、AUTOにしていても200固定になります。
「夜景人物モード」でストロボを有効にすると、やはり200固定になります。
結局、感度設定のAUTOは全く使う機会がありません。


ピクチャーモードとプログラム
人物:縦長(プログラム線図が縦長)
~1/60=F3.2
1/80=F3.5
1/80~1/800=F9.0
1/800~1/1000=F10
1/1000~1/1250=F14
1/1250=F16

風景:横長(プログラム線図が横長)
~1/15=F3.2
1/20=F3.5
1/20~1/125,F5.0
1/125,1/160=F6.3
1/160=F7.1

マクロ:深度優先:暗くてもF4.5よりは開かない
~1/80=F4.5
1/80~1/800=F8.0
1/800~1/1000=F10
1/1000~1/1250=F14
1/1250=F16

夜景人物:標準:1/40,F3.2の次は1/50,F3.5
1/50~1/60=F4.0
1/60~1/80=F5.0
1/80~1/100=F5.6
1/100~1/200=F6.3
1/200~1/400=F7.1
1/400~1/800=F8.0
1/800~1/1600=F9.0
1/1600~1/3200=F10
1/3200=F11

各々のプログラム線図の意図が良く分かりません。
単純に「絞り開き目、シャッター速め」「絞り閉じ目、シャッター遅め」にシフトしてくれた方が分かり易いような。


電池
単三電池を4本使います。旅行先で電池がなくなっても買うことが出来るのが長所です。
しかし、専用リチウム電池を使う機種と違い、残量の表示が非常に大雑把です。
ニッケル水素充電池を使って、撮影間隔を開けて電池の自己回復を使えば300枚くらい撮れますが、急に撮りたい場面に出くわしたときに数枚連続で撮れる余力を保つためには100枚くらいで交換したほうが良いです。ストロボを使わなかったとしても150枚が限度です。
すると電池を使い切らずに交換しますので、エネループのような継ぎ足し充電が出来る充電式電池が必須です。

オートフォーカス
コンパクトデジカメと比べて受光素子が大きいので、ピントが少しでもずれるとボケます。
また、ペンタックスはニコンやキャノンと比べるとオートフォーカスが苦手だという噂もあります。
このカメラは11箇所にセンサーがあり、どの場所を使うか自分で選ぶことも、カメラに自動的に選んでもらうことも出来ます。
でも、元々ピントが合いにくいのにカメラに選ばせると尚更自分の狙いとは違うところにピントを合わせてしまうこともあるので、どの場所にピントを合わせるかは自分で選ぶか、いっそのこと画面中央でピントを合わせることに固定してしまったほうが良いです。
但し、画面中央でピントを合わせる場合、ピントを合わせたい対象にカメラを向けてシャッターを半押ししてピントを合わせて固定、そして写したい方向へカメラを動かすことになりますが、この場合シャッターを半押ししてから実際に写す方向へ動かした角度のコサインの分だけピントがずれます。これをコサイン誤差と言います。
これを避けるためにはやはり11箇所の中からピントを合わせたい部分を選ぶ必要があり、そのために上下左右ボタンを使います。
このような使い方をする場合は、OKボタンの役割を、最初の「感度表示」から「使うセンサーの位置を画面中央に戻す」に変更したほうが便利です。

友達に撮ってもらう時にはこんな面倒なことは説明できませんので、あらかじめピントを合わせてからマニュアルフォーカス(MF)に切り替えて、渡しましょう。

2008-01-07

帰国

空港までタクシー550元でした。だからもしも空港からタクシーに乗ると1.5倍で825元くらいになるはずです。
新幹線の駅との分岐とのインターチェンジから空港まで7kmなので、駅からの方が近いです。
飛行機は、予約時に決まっていた席より前の、プレミアム・ローレルというビジネスクラスの席に座れました。ご飯も豪華でしたが、乗る前にパンを食べたのでデザートを食べ切れなかった。勿体なかったです。

2008-01-06

Airport Express

今朝になって、インターネットは有料だと気づきました!
幸い、使い始めたのが二日目の朝だったので一日分しか課金されませんでしたが、それでも120香港ドル。高い!宿泊費も高いのに。
マカオもシンセンも無料なので値段を確かめなかったのが気づかなかった原因です。

エアポート・エクスプレスへの無料シャトルバスに乗ろうと思いましたが、乗り場が分かりません。
あちこちのホテルの案内係の人に聞いて、K3だと言われたけれど、工事中のため乗り場が変更されたのでしょうか、見つかりません。
以前もこの無料シャトルバスには苦労しました。ホテルの乗り場で待っていましたが、運転手が私を見逃して、素通りしてしまったことがあります。
このシャトルバスに乗るなら、始発点など、必ず止まる乗車地点で待ったほうが良いと感じました。
また、エアポートエクスプレスの駅の改札手前でも航空機のチェックインしましたが、これも窓口が少ないので手間取る客が居ると危険です。
3人が一つの窓口に並んでいるのと、15人が5つの窓口に並んでいるのでは、平均待ち時間は同じでも前者のほうが待ち時間のばらつきが大きいです。
だから、余程大きい荷物を持っていて、少しでも早く預けてしまいたい場合以外は空港でチェックインした方が良いと思います。

台湾の空港についてからは、タクシー代が1.5倍になるのを避けるため、近くの新幹線の駅までバスで移動してそこからタクシーに乗りました。タクシーは515元。バス代は値上がりしていて一人30元でした。
駅から、空港との分岐のインターチェンジまで3.5km~4km。

2008-01-05

Andy Lau

香港市内観光。ショッピングモールの送迎バスで移動。
金融センターの展望台に昇ろうと思ったら、56階の金融管理局の公開展示場へ無料で昇れました。
エレベーターが昇るときの▲は緑、▼は赤。こんなところまで相場表示と同じなのが面白かったです。
金融センターのショッピングモール内のレストランで昼食。
2階建てドラムで移動。乗った事がなかったので乗って見たけど、まぁ普通。
前回、APECのため行けなかった会議場を見に行って、その横のフェリーターミナルから九龍へ戻りました。
ホテルへ戻るのに一苦労。朝乗ったのはショッピングモールの送迎バスで、ホテルの送迎バスじゃないの?と躊躇したら行ってしまいました。
ホテルの送迎バスは別の場所、九龍ホテルから乗るのでした。
今日もフードコートで夕食。美味しかったです。
夜は劉徳華のコンサート。

2008-01-04

羅湖

ファーストフードで朝ごはん。美味しかったです。深圳はまだ店によるばらつきが大きいです。
地下鉄の乗車券は台湾のMRTに似ていました。
羅湖は駅の工事が終わって綺麗になっていましたが、ごちゃごちゃ感は相変わらずでした。
これから人民元は上がるだろうし金利も高いので、人民元定期預金が出来るといいなと思ったのですが、深圳の中国銀行では、深圳に住所がないと定期預金が出来ないそうです。
香港のホテルは、禁煙室を希望したらUpGradeしなければ無いと言われました。
結果、マカオのホテルよりちょっとしか安くないのに、部屋は凄く狭かったです。流石香港。
でも併設されているショッピングモールのフードコートは安くて美味しかったです。

2008-01-03

華僑城

昨日と同じフェリーターミナルから今度は深圳へ。昨日香港を出発したのとほぼ同じ時間なので、昨日と同じ仮面ライダーの音楽のドラマが始まりました。
深圳の蛇口フェリーターミナルは綺麗になっていました。多分建物自体は変わっていないと思いますが。
タクシー乗り場も整備されていました。タクシーに乗りましたが、ぼったくられることもありませんでした。というか前回ぼったくられたことが分かりました(汗)
蛇口付近は沢山のショッピングセンターが出来ていて、マンションも沢山建っていました。洗濯物が干されている部屋も多かったので空室率は低いのでしょう。
華僑城は地下鉄が出来て綺麗になっていました。
ホテルでは、隣の劇場のショーのチケットをくれました。定価で買えばホテルの宿泊費より高いチケットです(^^)
以前お昼ご飯を食べた食堂街は半分以上改装中で、別のホテルの7階のレストランで食べましたが、値段の割りに味は今ひとつ。眺めは良かったけど。
でも中国は変化が早いので来る度に楽しいです。
民族文化村のショーを見ました。
夜のショーが一番大規模で、午後の騎馬ショーや、夕方に大通りで小規模なショーをしていた人たちも出演していました。
その後で、ホテルでチケットを貰ったショーを見ました。このショーも面白かったです。

2008-01-02

The Venetian Macao Resort Hotel

香港空港で、マカオ行きの船のチケットを買って、transit。
荷物も香港で受け取ることなくマカオへ運んでもらえました。
香港で12時45発の船を待っている時、待合室のテレビでアクションコメディみたいなドラマが放送されているのを見ていましたが、音楽が仮面ライダー。何なのだろう?
今夜泊まるThe Venetian Macao Resort Hotelだけでなく、あちこちのホテルの送迎バスが凄く多かったです。

夕方、マカオ市内の世界遺産を見に行った帰りにバスを乗り過ごして迷子になりました。
バス停で戻るバスを聞いたら、そばに居た同じバスに乗る女子学生が「このバスで戻れますよ」と教えてくれて、そのうえ降りるバス停が近づいたら「ここで降りればいいですよ」と言ってボタンも押してくれました。ありがとう!
フェリー乗り場で明日の深圳行きの切符を買いました。
ホテルのフードコートは味は悪くなかったけど、場所代で高かったです。でも部屋は広くて豪華でした。

2008-01-01

台北101新年花火


台北101という、アジアで最も高い101階建のビルで新年花火大会が行われました。
写真も沢山撮ってきたので、時間が出来たら載せます(いつになることやら…)
ホテルまではバスとか地下鉄がやたら混んでいたので、少し離れた別路線の駅「大安」まで30分くらい歩いて帰りました。

一晩寝てバスで桃園へ。桃園市内のバス停前の店で食べたデザートは普通…
そこから乗ったバスは何故かやたら混んでいました。