DARKNESSHADECRAW

作者の夢は世界征服。音楽、映画、科学、数学なんでもありのごった煮ブログ。作者自身が書いた詩も掲載しているのでよんでね!

十進法BASIC-STEP文の有無とFOR文の処理速度の違い

2007-10-31 18:25:13 | Weblog

STEP文の有無とFOR文の処理速度の違い
2007/10/02
報告書作成 五十嵐真人

0、目的と仮説

十進法BASICにおいてSTEP文の有無によって処理速度がどれ程違うのか、実験によってそれを検証する。私はSTEP文を書かない方が処理速度が速いと思うのでその点についても検証したいと思う。

1、プログラム例(十進法BASIC、ノーマルモード)

PRINT "** TIME **"
FOR n=1 TO 10
LET t0=TIME
FOR m=1 TO 100000
FOR l=0 TO 100000 STEP m
LET count=count+1
NEXT l
NEXT m
LET t=TIME-t0
PRINT n;
PRINT USING "#.##":t;
PRINT "s"
LET sumtime=sumtime+t
NEXT n
PRINT "ave:";sumtime/10;"s"

LET sumtime=0
PRINT
PRINT "FOR l=0 TO IP(N/m) の場合"
PRINT
PRINT "** TIME **"
FOR n=1 TO 10
LET t0=TIME
FOR m=1 TO 100000
FOR l=0 TO IP(100000/m)
LET count=count+1
NEXT l
NEXT m
LET t=TIME-t0
PRINT n;
PRINT USING "#.##":t;
PRINT "s"
LET sumtime=sumtime+t
NEXT n
PRINT "ave:";sumtime/10;"s"
END
2、結果

(1)FOR l=0 TO N STEP m の場合

** TIME **
1 1.08s
2 .98s
3 .95s
4 .97s
5 .93s
6 .97s
7 .95s
8 .94s
9 .98s
10 .97s
ave: .97s


(2)FOR l=0 TO IP(N/m) の場合

** TIME **
1 1.07s
2 1.08s
3 1.11s
4 1.12s
5 1.08s
6 1.11s
7 1.09s
8 1.08s
9 1.09s
10 1.08s
ave: 1.09 s

3、考察

仮説は間違いであった。STEP文を用いた場合、処理の平均時間aveは0.97秒であり、
同じ処理を、STEP文を用いない場合、処理の平均時間aveは1.09秒であった。実験結果はわずかではあるがSTEP文を用いた方が処理時間が速いという結果だった。
これは、関数IP()の計算時間が予想以上にかかったために、STEP文を用いた場合の方が処理時間が速くなったためだと思う。


コメント
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

英文の中で最も使われている文字は?

2007-10-29 20:30:59 | Weblog

英文の中で最も使われている文字の研究
2007年10月26日
報告書作成 五十嵐真人

1、はじめに

エドガー・アラン・ポーの小説“黄金虫”の中の名探偵は、“英文の中で最も使われ
ている文字はe だ”という仮定の下に見事暗号の解読に成功している。そこで今
回は、アヴリル・ラヴィーンの“テイク・ミー・アウェイ”を試料として、その
中に使われているアルファベット26文字のおのおのの個数を十進法BASIC
のプログラムによって求めたいと思う。

2、試料

hide I wish that it would just go away What would you do If you knew
what would you do All the pain I thought I knew All the thoughts lead
back to you Back to what was never said Back and forth inside my head
I can't handle this confusion I'm unable Come and take me away I feel
like I am all alone All by myself I need to get around this My words
are cold I don't want them to hurt you If I show you I don't think
you'd understand 'Cause no one understands I'm going nowhere on and
on and I'm getting nowhere on and on and on(take me away) I'm going
nowhere on and on and off and on and off and on Take me away Break
me away Take me away

4、結果

a= 62 b= 7 c= 10 d= 37
e= 51 f= 11 g= 10 h= 25
i= 40 j= 1 k= 13 l= 21
m= 16 n= 53 o= 51 p= 1
q= 0 r= 14 s= 20 t= 42
u= 20 v= 1 w= 24 x= 0
y= 0 z= 0

5、考察

アヴリル・ラヴィーンの“テイク・ミー・アウェイ”に使われている文字の中で
英文中の出現回数が多い順に並べると“aneotidhwlsumrkfcgbjpvqxyz”である。
eの出現回数が51(回)に対して1番出現回数の多かったaは出現回数が6
2(回)だった。
必ずしも、英文中で最も使われている文字がeだとは限らないということがわか
った。
ただ、eは英文中で相対的によく用いられる文字であり。絶対的にその英文中で
最も陥られている文字とは限らない。
私の経験上、英文中に良く使われている文字は“e”,”a”,”o”,”i”,である。

6、備考

この報告書に使われたプログラムの全文は、
報告書“英文の中で最も使われている文字の研究のためのプログラム”を
参照されたし。
今後も、さまざまな英文についてこの検証を行っていきたい。
コメント
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

十進法BASICの数値モードの違いによる計算時間の違い

2007-10-27 09:14:35 | Weblog

十進法BASICの数値モードの違いによる計算時間の違い
2007/10/14
報告書作成 五十嵐真人

1、はじめに

 本報告書の目的は十進法BASICの3つの数値モード、ノーマル・1000桁・有理数モードの数値モードの違いによる計算時間の違いについて検証する。ことである。

2、プログラム(十進法BASIC、要旨:エラトステネスのふるいを用いてn以下の4k+1,4k+3型の素数の個数を数え、その結果と計算時間を表示するプログラム)

LET t=TIME
LET n=10000
OPTION BASE 0
DIM a(n)
FOR l=2 TO n
LET a(l)=l
NEXT l
DO
FOR m=q+1 TO n
IF a(m)>0 THEN
LET q=a(m)
LET a(m)=0
GOTO 10
END IF
NEXT m
EXIT DO
10 IF MOD(m,4)=1 THEN LET count1=count1+1
IF MOD(m,4)=3 THEN LET count2=count2+1
FOR k=1 TO IP(n/q)
LET a(q*k)=0
NEXT k
LOOP
PRINT count1;count2;TIME-t;"s"
END

3、結果(各数値モードごとに3回計算時間を測定しその平均を以下に記す)

ノーマルモード:0.06[秒]、1000桁モード:10.46[秒]、有理数モード:9.90[秒]。

4、考察

実行結果からして今回のプログラムの計算にはノーマルモードが圧倒的に計算時間が速く計算結果も正確。ということが分かった。ノーマルモードに較べ、1000桁モードの計算時間は約174倍、有理数モードでは約165倍である。ただし、ノーマルモードの計算の有効数字は10進数15桁なので、有効数字15桁以上の計算には使えない。通イが必要である。ちなみに、1000桁モードの有効数字桁は、10進数1000桁。有理数モードでは有理数半無限桁である。※有理数モードは必要があれば10000桁でも計算可能。計算時の数値の丸めが無い。正確だが、時間がかかる。というような特徴がある。
コメント
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

私が愛した数式(Yahoo知恵袋の話)

2007-10-26 13:01:06 | Weblog

私が愛した数式(Yahoo知恵袋の話)

質問:博士が愛した数式 ”あなたが愛した数式は?”
(質問した人: sshtakatakaさん)

Yahoo知恵袋で回答数: 9人の中でベストアンサーに選ばれた回答
ウレシイ(≧∀≦)/♪♪~ウレシイ、メデタイナ。

 ”exp(ix)=cos(x)+isin(x)”
 オイラーの公式ですね。この公式は数学にとどまらず、電気・電子工学の分野にもその応用があって、複素数を利用した計算には絶対に必要という実用性、加法定理の証明。ドモアブルの公式の証明。正多角形の作図。1のn乗根の計算。フーリエ級数。arctanの円周率の公式など数学においてその成果に数の限りはありません。
 x=πとおけば、exp(ix)=-1 ズバリ、博士の愛した数式そのものになります。この公式は円周率と自然対数の底と虚数単位とマイナスが一体となったとても美しい式です。これを使って円周率が超越数であることを証明できます。
 この公式を導いたEulerという人の知識の深さには全く持って驚かされます。この公式の証明法は、指数関数と三角関数のマクロリン展開であり、そのことにマクロリンよりも早く気づき、(一般化はされなかったが、)従来、計算の道具としてしか見られていなかったそれらの関数をはじめて関数として数学的に扱いました。すばらしい、すばらしすぎる。(涙)

最近、Yahoo知恵袋にハマッてます。皆さんもやってみてください。
コメント
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

ガウスの法則の検証

2007-10-21 15:02:18 | Weblog

一様に表面が帯電した円の中の電荷のガウスの法則の検証シミュレーション
2007/10/14
報告書作成 五十嵐真人

1、はじめに

問題:“一様に円周上に1[C]の電荷が帯電している原点を中心とする半径5の円Oの中の点p(2,3)ある1[C]の電荷が受けるクーロン力Fを求めよ。”を考えると、解答:“電荷は円の中にないのでガウスの法則より、E=0、従ってF=qE=0”を得る。そこで今回はこの事実を十進法BASICを用いて検証シミュレーションしたいと思う。

2、プログラム

(1)プログラムの要旨

帯電した円周を無限に分割し、その点(cos x,sin x)の電荷と点pの点電荷とのクーロン力のx軸成分、y軸成分を求め、それぞれを角度0~2πの間で積分し、求めるクーロン力
F=(Fx,Fy)を得る、結果として、そのベクトルの絶対値を表示する。

(2)プログラム(十進法BASIC、ノーマルモード、14行)

LET x0=2
LET y0=3
LET n=5E+4
LET r=5
LET k=8.98755179E+9
DEF f(x)=k/2/n/((r*COS(x)-x0)^2+(r*SIN(x)-y0)^2)
FOR th=0 TO 2*PI-PI/n STEP PI/n
LET sy=sy+f(th)*PI/n*(SIN(th)-y0/r)
LET sx=sx+f(th)*PI/n*(COS(th)-x0/r)
NEXT th
LET s=SQR(sx*sx+sy*sy)
PRINT "0";
PRINT USING "#.#####":s
END

3、結果

F= 0 .00000[N]

4、考察

シミュレーションの計算結果、
プログラム中の変数Sの値はS= 7.91100116155894E-7であった。S≒0であったので、
ガウスの法則は、正しく。この検証シミュレーションも正しい結果がえられたと思う。
シミュレーションの結果の表示に、PRINT USING文を用いたのは有効数字の観点からいって間違いではあるが、実際に工学的に値を用いるときにF=7.91100116155894E-7[N]
≒0.01[mg重]という微少の値はイコール0としていいだろうという感覚的裁量によるものである。 今後は、このプログラムを応用して、静電遮蔽、コンデンサ、その他ガウスの法則関係のシミュレーションを行っていきたいと思う。
コメント
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

GIFアニメ制作。。。目をこらして見て!

2007-10-20 17:09:37 | Weblog

フリーソフトでGIFアニメを作った。。十進法BASICを使った。
円盤が回転するヤツ。さっそくBLOGにのせてみた。
「うっ、薄っ!?」。(((;゜□゜)bbbb
※再度お願い。目を凝らしてみてください。

フリーソフトの詳細。

〇==================================================================○

     【 ソフト名 】Visual G++ Ver.2.1
     【 対応OS 】Windows95/98/Me/NT/2000/XP/Vista 以降
     【 種別 】フリーウェア(JWordアフィリエイト)
     【 制作元 】LNsoft Entertainment
     【 サイト 】http://www.lnsoft.net
     【 メール 】support@lnsoft.net

〇==================================================================○




コメント
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

BLOG200回記念の巻

2007-10-17 11:01:49 | Weblog

――キターーキター(゜∀゜)ーキターーキター(´д`)キターキター
――キター(゜∀゜)ーキターーキター(´д`)キターキターキターー

(゜▽゜)遂にこのBLOGも200回記念です。今後ともよろしくお願いします!
コメント
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

コラッツの問題-独自の見解

2007-10-16 17:55:05 | Weblog

コラッツの問題の検証のための単純なアルゴリズム
2007/10/14
報告書作成 五十嵐真人

1、目的

コラッツの問題の検証のための単純なアルゴリズムの説明。

2、理論

コラッツの問題とは“任意の自然数nが奇数ならば3倍して1を足す。偶数ならば、2で割る。という操作をし得られた数にも同様の操作を繰り返すと必ず1に収束する。”という数学者コラッツの予想である。予想の発表から80余年たった今でも未解決な問題である。
例)3→3×3+1=10→10/2=5→3×5+1=16→16/2=8→8/2=4→4/2=2→2/2=1

3、単純なアルゴリズム

筆者は今回、コラッツの問題の検証のための単純なアルゴリズムを見つけたので以下で説明する。

定理:1からnまでの自然数でコラッツの予想が成り立つとき、(n+1)にコラッツの問題の操作をしてn以下の自然数に変換できれば、自然数(n+1)でもコラッツの予想が成り立つ。

証明:(n+1)にコラッツの問題の操作をしてn以下の自然数mに変換できるとき、条件からn以下の全ての自然数でコラッツの予想が成り立つので、当然mも1に収束する。
このことを模式的に書けば“(n+1)→m→1ただし、m≦nである。論理学的にいえば
“(n+1)→m”かつ“m→1”ならば“(n+1)→1”という三段論法が成り立っている。

4、数学的帰納法による証明法への応用

定義:1からnまでの自然数でコラッツの予想が成り立つことをCBO(n)と書くことにし、
任意の自然数nにコラッツの問題の操作をm回行ったものをcollaz(n,m)と書くことにする。

コラッツの問題の言い換え“全ての自然数nにおいてCBO(n)である

数学的帰納法による問題の言い換えの証明の概略:
数学的帰納法によりコラッツの問題を証明する(現時点では証明不可能であるが。)
()n=1のとき1においてCBO(1)であるから、成立。
()n=k のとき成立すると仮定する。“kにおいてCBO(k)である。”
(iii)n=k+1 のとき成立するか、()の仮定をもとに証明する。
証明法、(k+1)がk以下の自然数collaz(k+1,m)に変換できる。ことの証明を行う。
証明未完

5、考察・感想

コラッツの問題の更なる言い換え:
“コラッツの問題の操作を繰り返すことで、任意の全ての自然数(n+1)がn以下の自然数mに変換できる。“今後はこの証明に全力をかけていきたい。

 

キーワード:コラッツ予想 コラッツの手続き

コメント
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

バニラ

2007-10-12 19:31:01 | Weblog

ROSSO“バニラ”

バニラ・アイスを口にして
あの娘は言うのさ
あなたは私の天使なんだから
どこへ飛んでたっていいの

(BY チバユウスケ ROSSO“バニラ”より)

ROSSO“バニラ”を始めて聴いたとき、このサビの歌詞にはっとした。
僕だったら大切な人にどこのも行って欲しくないはずなのに、
その僕の予想に反してこの曲の”あの娘“は余裕たっぷりにバニラ・アイスをほおばって、何の気の迷いもなく男に話しかけている。
見習うべき態度だ。
僕だったら不安でアバシリまで裸足で駆けて行きたい気分なのに。
もしかすると極端な話、大切な人のケイタイのアドレス帳にある異性のデータを全て消したいと思うかもしれない。まあそれは、本当に気狂いな話だが。
誰しも一人ぼっちにはなりたくない。いつも誰かと繋がっていたい。
もしそれを邪魔する誰かが現れたら、徹底的排除の行動を起こすかもしれない
そのことを考えているといつも不安で、心が花粉症になったみたいにこそばゆい。
でもこの曲を聴いた瞬間それらのことが馬鹿らしく思えた。
もっと広い心で人と接するべきことに気づいた。僕が繋がっていたいために窮屈な思いをしているかもしれない僕の周りの人々に気づいた。
もっと大人にならなくちゃと思った。
コメント
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

倹約日記

2007-10-11 17:42:31 | Weblog

倹約日記

10月10日。目標10月の残りを3万円で乗り切る。光熱費、電話代、新聞代など2万円を引くと残り、1万。(泣)。どっかの節約番組じゃん。一日あたりの生活費500円弱。(泣)。何でこんなことに・・・。
禁止事項:”メールの続き”は受信しない(1回15円節約。)
禁止事項:自販機でジュースを買うこと。
禁止事項:意味も無くコンビニへ行くこと。
コーヒー、紅茶を飲む。
御腹がすいたら期限切れチキンラーメン。。。
電話するときはテレフォンカードで(1回150円の節約。)
節電、節水、地球に優しい人間になる。(笑)。
明日は炊き込みご飯を作る。
夕飯はツナかけうどん。(まずっ!ううええええ!!!)そんなことはありません。
節約レシピ:
ツナの醤油付けをかけうどんにかけて出来上がり!なかなか腹にたまります。ノンオイルのツナ缶がオススメ!



コメント
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

aiko”ライオンハート”カバー音源配信中

2007-10-11 17:30:14 | Weblog
LINK

http://srd.yahoo.co.jp/MMSAUD/Q=aiko+lion+heart/U=http://my.booboo18.com/2006/Aiko-Lion%20Heart.mp3/O=0dbcf2ea63fedaa9/P=1/C=fs0pich24dtsv&b=3&s=qp/F=f/I=yahoojp/T=1179029648/SIG=11manijh3/*-http://my.booboo18.com/2006/Aiko-Lion%20Heart.mp3

こにゃなちわー!(゜▽゜)/おおきに!おおきに!!!
ちょっとそこの奥さん、あなたですよあなた。
聞いてくださいよ。歌手でaikoさんて知ってはりますか?
知ってる。それならこれ聴いてみて下さいよ。
いい曲でしょう。私もこれネットで見つけたときはびっくりしました。
”ライオンハート”ゆうたらスポーツ・ミュージック・アセンブル・ピープル
(SMAP)の言わずと知れた名曲やけど、それをaikoさんは天まで届くような澄んだ声と触れたら崩れてしまいそうな繊細なピアノさばきで珠玉のラヴバラードをしっとり歌い上げてます。もう絶品です
コメント
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Flash・YouTubeを簡単無料ダウンローダ

2007-10-09 20:29:34 | Weblog
Orbit Download Link

http://www.orbitdownloader.com/

Orbit

**********************************************************
作者名■Orbit Team ファイル名■OrbitDownloaderSetup.exe
URL■http://www.orbitdownloader.com/ 言語■英語版
価格■フリーソフト

概略

 Flash・YouTubeも数回のクリックだけでファイル全てを簡単
にダウンロードできる初心者に優しい汎用型ダウンローダ。
 動画共有サイトでは、映像がページに埋め込まれているため、
ブラウザ単体で映像ファイルをダウンロードすることは難しい。
そんな時に役に立つのが、このフリーソフト”Orbit”だ。
 URLの解析機能を搭載し、動画共有サイトで再生している映像
の実ファイルを見つけられる。発見した映像は、分割ダウンロー
ドの機能により、通常の数倍の速さでダウンロードできるのだ。

使い方

 Flash・YouTubeなどの動画共有サイトで再生中の映像にポインタ
を合わせると、”Getit”ボタンが表示されるのでそれをクリック。
 次にダイアログボックスが表示され保存先やファイル名を確認し
て「OK」をクリックする。(たいがいの場合は「OK」をクリックす
るだけでOK!)
 後はダウンロードし終わるのを待つだけ1分足らずでダウンロー
ド完了。


コメント
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

JPEG 用語解説

2007-10-08 12:18:08 | Weblog
JPEG 

読み方 : ジェーペグ 、拡張子:.jpg
 
 JPEGとは画像データの圧縮方式の一つで、24ビット(1670万色)まで扱うことができ、多くの色数を必要とする写真などの表現、グラデーションのように色調が連続して変化する画像に適しています。 反対にアイコンやアニメ調の平坦なイラスト、コンピュータグラフィックスなどをJPEGで保存するとにじんだように汚くなります。GIFなど他の画像形式を使いましょう。
 JPEGのファイル圧縮の仕組みは、「明るさの変化に比べ、色調の変化には比較的鈍感」という人間の目の性質を利用して、 色調変化の部分のデータを捨てることでファイル容量を小さくしています。 具体的には、画像を8×8ピクセルの正方形ブロックに分割して画像の変化の情報を抽出して、その一部を捨てています。 このため圧縮率を上げすぎると、ブロック単位で色が均一化されて画像がモザイク状に見えるブロックノイズや、 蚊の大群が飛んでいるように見えるモスキートノイズが現れるようになります。
 つまり、JPEGは不可逆圧縮といえます。すなわち、GIFがデータを“整理する”ことで圧縮するのに対し、JPEGはデータを“捨てる”ことで圧縮いるため、圧縮で捨ててしまったデータは元に戻すことができないので、JPEG形式で圧縮率を上げて保存する際には、 必ず元画像のバックアップを残しておくようにしてください。
 また、圧縮の際には自由に圧縮率が変えられ、方式によりばらつきはありますが、圧縮率はおおむね1/10~1/100程度です。
 JPEGの圧縮率は見比べて決めるようにしましょう。JPEGは圧縮率を上げるほどファイルサイズが小さくなりますが、トーンジャンプ(色抜け)が増えて画質は劣化していきます。 圧縮率を決める際には、同じ画像を異なる圧縮率で保存したものを見比べてみるのが確実で早道です。 尚、圧縮率の数値と圧縮の度合いの関係は、使用するソフトウェアによって異なります。
 JPEGのファイル容量を抑えるには、画像の面積を小さくすると効果的です。画像の中で色や明るさが急激に変化する箇所を減らすようにし、可能な場合には、コントラストを下げる・ぼかしをかけるなどの処理をするようにするとよいです。 しかしながら、色数を減らすことは意味がありません。 むしろ、反対色が隣接しているような画像では色数を増やして、連続して滑らかに変化するようにしてやると効果があります。
 JPEG画像をつなぎ合わせて動画にした方式をMotion-JPEGといいます。なお、JPEGはGIFと異なり、どこの会社にも特許などの使用料を払う必要がない画像形式だとされていましたが、2002年7月にForgent社が突然特許権の保持を宣言し(いわゆるサブマリン特許)、使用料の請求を開始して論議を呼びました。
 ちなみに、JPEG の名称はISOにより設置された専門家組織の名称 JPEG (=Joint Photograph Experts Group)に由来します。
コメント
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

「これ、デフォルトで焼きそばだね。」

2007-10-04 19:37:31 | Weblog
今日、部活で飲み会兼バーベキューをやって、焼きそばをやった。焼きそばを作った人に
「これ、デフォルトで焼きそばだね。」と言ったら怒られた。
(((;゜□゜))bbbbあわwわWわwわW 
最近、僕は意味もろくに知らずにある言葉を使っている。その名は”デフォルト”。ちょっと耳なじみしないその言葉。さっそくネットで調べてみた。

デフォルト:(英[default])
(1)省略時の値。プログラムに与えるべき値をユーザが設定しなかった場合に採られる既定値。転じて、製品出荷時設定を指すのにも用いられる。
(2)(特にIT関係者が)「初期状態」「普段の状態」の意味として、日常会話に使う。IT関係者内では通じるが、一般的には通じないことがある。口語では「デフォ」という省略形で用いられる事も多い。

 言葉の意味は大体当たってたみたいだけど、一言で人を傷つけてしまうから、使い方には十分気をつけないといけないね


コメント
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

実用プログラミング演習Ⅱ第2回演習-考察

2007-10-03 19:57:12 | Weblog

実用プログラミング演習Ⅱ第2回演習

3、考察

プログラム中で入力した、座標の値が負の場合、例えば、⊿ABCが第1象限と第2象限にまたがっているような場合、y3=3,y1=‐2,y3‐y1=-5となり、求める三角形に外接する長方形のタテの長さが負になり、面積が負の値になる。これは現実には存在し得ない大変な間違いである。また、点の取り方によっても、外接する長方形の面積が正しく計算できず、正しい答えが得られない。従って、その間違いを改善すべく ⊿ABC=|y座標の最大値‐y座標の最小値|×|x座標の最大値‐x座標の最小値|÷2(式1-2)という公式を用いて計算すると今度は、長方形の辺の長さはタテヨコともに負になることはなく、長方形の面積を正確に測れるので正しい面積の値が計算できる。
また、三角形の成立条件:“三角形の2辺の長さの和は他の1辺の長さより大きい。”これを満たさなければ、3点ABC結ぶ図形は三角形とならず、直線となる。当然ながら、(式1)の答えは面積が0となるはずだがならない、プログラムの実行結果として不適切である。従って、プログラム中に3点は三角形となるかという判別式を盛り込む必要がある。例えば、AB//BCつまり(y3-y1)/(x3-x1)=(y2-y1)/(x2-x1)であるとき、二辺の傾きは等しく、⊿ABCは直線となる。この条件を満たすときIF文を用いて、例外処理することが必要である。
(式1)以外に三角形の面積を求めるプログラムは無いのか、考えてみる。3辺の長さが解っているのなら(ヘロンの公式)(余弦定理)などが使えるが、今わかっているのは3点の座標なので、ベクトルを用いた方法が個人的に最もエレガントだと思う。
すなわち⊿ABC=|(x3-x1)(y2-y1)-(y3-y1)(x2-x1)|÷2(式2)
また、4角形を求めるにはどうしたら良いのか、1本の対角線を基準に2つの三角形に分割してそれらの面積の和を求めればよい、5角形においても2本対角線を基準に3つの三角形に分割して考えればよい。すなわち、n角形においても(n-3)本の対角線を基準に(n-2)個三角形に分割してそれらの面積の和を考えればよい。
コメント
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする