2012年2月27日月曜日

東京-ニューヨーク間の距離 (簡単バージョン)

超簡単バージョン(地球が球面であることを仮定)

① 2地点の緯度、経度からxyz 座標を求める
② 2地点のxyz 座標と内積の考えを使って角度を求める
③ 角度から距離を求める

ーーーーーーーー
① 2地点の緯度、経度からxyz 座標を求める

★東京(東京駅)
    緯度 φ = 354052.975(35.681382)
    経度 λ = 1394557.902(139.766084)

デカルト座標系 (x, y, y) に変換すると (地球は半径1の球と仮定)
    x1 = cos φ * cos λ = - 0.62010
    y1 = cos φ * sin λ = 0.524655
    z1 = sin φ = 0.583277

★ニューヨーク (Grand Central Station)
    緯度 φ = 40448.264 (40.735629)
    経度 λ = 735920.18 (-73.988939)
    x2 = cos φ * cos λ = 0.208999
    y2 = cos φ * sin λ = - 0.728335
    z2 = sin φ = 0.6525696


② 2地点のxyz 座標と内積の考えを使って角度を求める

東京ベクトル a (x1, y1) とニューヨークベクトル b (x2, y2) の内積の表し方は2通りあって
1. a・b = |a|*|b|*cos θ
2. a・b = x1 * y1 + x2 * y2

半径1の球面を仮定すると |a| = |b| = 1 なので
 
cos θ = (x1 * y1 + x2 * y2 )

x1, y1, x2, y2, を代入して arccos より θ を求める
θ = 1.70227 (rad)

③ 角度から距離を求める
 6370 * 1.70227  = 10843.4

東京-ニューヨーク間の距離は 10843 km 

国土地理院のサイトで経緯度を入力して距離を算出すると
10,869 km と出た。

誤差は 26 km。
相対誤差で言うと 0.2 %ぐらい


2012年2月26日日曜日

外国人が買う日本(銀座)のお土産

1位 天津甘栗(歌舞伎座)
2位 イヤホン(ソニービル)
3位 おかき(ハナマサ)
4位 化粧品
5位 はし(夏野本店)
6位 和紙細工(鳩居堂)
7位 ユニクロのカシミヤ製品
8位 木村屋のあんぱん

地心緯度(geographical )と地理緯度(geocentric )

地心緯度はその地点と地球中心を結んだ線と赤道面のなす角度
地理緯度は、地球楕円体(正規楕円体)の垂線と赤道面のなす角度
天文緯度は、鉛直線(重力の方向、ジオイドの垂線)と赤道面のなす角度です。

地図で読み取れる緯度は地理緯度、
天体観測で求まる緯度は天文緯度、
地球中心から見たその点の緯度が地心緯度です。

< Reference >
Yahoo ! 知恵袋 mikjiisan さんの回答
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1277289817
Accessed at 2012,02,25

2012年2月25日土曜日

小舟から差し入れ

テキサスにいる小舟から差し入れ。
うほっ!

何が入っているんだろう?と
小包を開けるときのドキドキ感がたまらない。

カレーとか中華三昧とか、うどんとか嬉しすぎる。
コアラのマーチまである!


2012年2月24日金曜日

Error, Accurary, Precision, Uncertainty

★Error
真の値と測定値との差
Ocean Mapping では真の深さなんて分からないので、この言葉は使わない。

★Accuracy
真の値と、測定値が、どの程度離れているか
Ocean Mapping では真の深さなんて分からないので、この言葉は使わない。
 
★Precision
測定値の平均に対して、各測定値が、どの程度散らばっているか。
これは Ocean Mapping で使える。

★Uncertainty
 Error の限界値の推定。Error でない。
これも Ocean Mapping で使える。
例) 95%の確率で、測定した深さは、プラスマイナス5mの範囲にあるはずです。

Ocean Mapping Standards

IHO S-44 5th edition

Positioning Uncertainty (船のではない。海底のターゲットにおける)
   - Special order :  2 m
   - Order 1a : 5 m + 5 % of depth (深くなるとUncertaintyが大きくなるから5%プラスする)
   - Order 1b : 5 m + 5 % of depth
   - Order 2 : 20 m + 5 % of depth

Depth Uncertainty
   ルート(a の2乗+(b*d)の2乗)の式に、
   深さとオーダーに応じたa と b の値を入れて計算するだけ。
   - Special order : a = 0.25 m, b = 0.075
   - Order 1 : a = 0.5 m, b = 0.013
   - Order 2 : a = 1.0 m, b = 0.023

2012年2月20日月曜日

ブレイン・ストーミング

スタンフォード白熱教室①

ブレインストーミングのやり方

★可能性を探る段階

★参加者
視点が異なる人に参加してもらう
6〜7人(食卓を囲んで一緒に食べられる人数)

★時間
10分から45分が最適
目標を立てる
30分で500種類のアイスクリームを考える
アイデアを出す→アイデアを結合する→アイデアを捻り出す

★立って行う

★全員がペンを持つ(アイデアを書き留める)

★付け加えてもいい?
人のアイデアに付け加えて、膨らませて、飛躍させる
誰のアイデアだったか分からない方がいい
みんなが決めたという連帯感が生まれる

Yes, and で付け加える(相手を肯定する)
Yes, but はダメ

★場所
天井が高ければ高いほど良い
周りに色や物があること(真っ白な空間はダメ)

★どれにするか決める必要はない
参加者に複数のカテゴリーで投票
・実現可能性があるもの
・奇想天外なもの

秘密兵器

★例えを考える

★マインドマップを使う
キーワードを中心に放射線状にアイデアを書く
・アイデアを分類しやすい
・関係性を見つけやすい
・奇抜な意見が出にくい


ハーケン博士を救った言葉

ポアンカレ予想に関するNHKスペシャル

その中で印象に残った一言。
ハーケン博士を救った言葉。

ーーーーーーーーー

その終わりなき泥沼から救い出してくれたのは、
家族のさりげない言葉でした。

私の家族は、私のことを「ポアンカレ病患者」と呼びました。

「今、お父さんはポアンカレ病にかかっているから話もできない」というふうに。

それが良かったのです。

家族がそうやって茶化さなければ、私はますます追い込まれていたでしょう。

家族が、「お父さんの研究は人類史上とても重要なことなんだ」と言っていたら、
最悪だったに違いありません。

家族は本気で、私を日常の世界へと引き戻してくれたのです。

ーーーーーーーーーー

相手が追い込まれているとき、どういう言葉をかけるべきか?
よく考える問題やけど、一緒に悩むことがいいとは限らないよね。

2012年2月17日金曜日

Matlab フォントサイズ

x軸、y軸のフォントサイズの変え方
set(gca,'FontSize',12);

x軸、y軸のラベルのフォントサイズの変え方
xlabel('Length of String','FontSize',12);
ylabel('Displacement','FontSize',12);

タイトルのフォントサイズの変え方
title('n = 1 to 4','FontSize',12);


Matlab アニメーションの作り方

Underwater Acoustics の宿題で弦の振動をシュミレーション

アニメーションの作り方は

① plot(x,y)
drawnow
③ pause(0.1)

 pause はアニメーションをゆっくりするためのものなので
別になくてもいい。

以下作ったプログラム

% Set Parameter

clear all, close all
L = 3; % Length of string
h = 1; % Initial displacement
c = 400; % Speed of transverse wave
x = 0:L/100:L; % X-axis
y = 0; % Imposed wave
yy = 0; % One wave

tmin = 0; % Start time
tmax = (L/c)*2; % Time interval
tint = (L/c)/30; % End time

% Linear combination of the four waves

for t = tmin:tint:tmax
y = 0;
    for n = 1:1:100;
        kn = n*pi/L;
        omega = kn*c;
        D=cos(omega*t);
        Amp = (9*h)/((n*pi)^2);
        yy = Amp*sin(n*pi/3)*cos(omega*t)*sin(kn*x);
        y = y + yy;
    end

    plot(x,y,'LineWidth',2)
    axis([0,L,-h,h])
    title(sprintf('time = %5.4f [s]',t),'FontSize',12)  
    xlabel('Length of String','FontSize',12);
    ylabel('Displacement','FontSize',12);
    set(gca,'FontSize',12);
    drawnow
    pause(0.1)
end

2012年2月12日日曜日

Matlab 最小二乗解の求め方 ①

4点 (4,-17), (15,-4), (30,-7), (100,50)に直線を当てはめよ

当てはめる直線を y = a * x + b と置く


>> A = [4,1;15,1;30,1;100,1]

A =

     4     1
    15     1
    30     1
   100     1

>> y = [-17,-4,-7,50]'
y =

   -17
    -4
    -7
    50

>> x = A\y
x =

    0.6873
  -20.1018

よって y = 0.687 * a -20.1
4点 (-1,0), (0,-2), (0,-1), (1,1) に2次曲線を当てはめよ


当てはめる2次曲線を y = a * x^2 + b * x + c と置く

 >> A = [1,-1,1;0,0,1;0,0,1;1,1,1]   ← a, b, c の係数(x の2乗、1乗、0乗)

A =

     1    -1     1
     0     0     1
     0     0     1
     1     1     1

>> y = [0,-2,-1,1]'

y =

     0
    -2
    -1
     1

>> x = A\y

x =

    2.0000
    0.5000
   -1.5000

2次曲線は
y = 2 * x^2 + 0.5 * x -1.5



Reference
 これなら分かる応用数学教室 金谷健一

Matlab 最小二乗解の求め方 ②

過剰条件の連立一次方程式

3X1 + 4X2 = 1000
1X1 + 7X2 = 1000
2X1 + 8X2 = 1000

( X1 Xは製品A, Bの個数 )

における最小二乗解を Matlab で解いたメモ

>> A = [3,4;1,7;2,8]

A =

     3     4
     1     7
     2     8

>> y = [1000,1200,1500]'

y =

        1000
        1200
        1500

>> x = (A'*A)^(-1)*A'*y

x =

  128.7435
  154.2169

>> x = inv(A'*A)*A'*y

x =

  128.7435
  154.2169

>> x = A\y

x =

  128.7435
  154.2169


実際に Xと X2 を代入して確認すると


3 * 128 + 4 * 154 = 1000
1 * 128 + 7 * 154 = 1206
2 * 128 + 8 * 154 = 1488

となり、1206は1200をオーバーしているのでだめ。

X1 = 128
X2 = 153

が経営者が取るべき現実的な解となる。

ーーーーー

ここで扱った問題は以下の論文から引用させて頂きました。

・ 過剰条件の連立一次方程式における最小二乗解, 近藤寿紀 
    「2003年度卒業論文要旨集」(2004.3.7 南山大学数理情報学部 数理科学科)
    http://www.seto.nanzan-u.ac.jp/ise/gr-thesis/ms/2003/torii/00mm043.pdf

昼ごはん

Phillbrook のダイニングホールにて。
UNHの学食はビュッフェ形式です。

今日のメニュー


・ サラダ(きゅうり、たまねぎ、トマト、塩・レモンで味付け)
・ じゃがいもの炒めたやつ
・ チキンナゲット
・ ゆで卵
・ ホットドッグ
・ オレンジジュース
・ フルーツ(オレンジ、パイナップル、メロン、レーズン)&ヨーグルト

ゆで卵が一番うまい。次はじゃがいも。
 

これで 5.038ドル なのだから安いよね。
(150回で755.70ドル)

自分の健康はこの学食によって保たれている。


Matlab 複数行(or 列)の削除

A の第i 列を削除した行列X を作る場合
X = A;
X(:,i) = []

同様に,A の第i 行を削除した行列X を作る場合
X = A;
X(i,:) = []

また,A の第i 列から第j 列までを削除した行列X を作る場合
X = A;
X(:,i:j) = []

-------
以下の HP から引用させて頂きました

島根大学 総合理工学部 電子制御システム工学科
制御工学研究室 吉田和信 Matlab 教材
http://www.ecs.shimane-u.ac.jp/~kyoshida/matlab%282001%29.pdf

2012年2月2日木曜日

Matlab 関数の掛け算

超基礎的なことだが、今日はじめて知る。

y = exp(-2*t).*sin(t)

*(かける) の前に . (ドット)をつけること