Work out Math by JavaScript !

relead

√二乗根の計算

§0 はじめに  JavaScriptによるルートの計算をします。 タイトルに二乗根と有りますが、正確には、ルートと二乗根は違 います。 √4=2 に対して 4の二乗根=2,-2の二つ です。こ の内、実数で正であるほうをルートと定義します。 §1 Mathメソッドの利用  一応知らない人に言うと、javascriptには、いくつかメソッド というものが用意されています。メソッドというのは言うなれば あらかじめ用意されている道具(函数)の集まりです。C言語を 知ってる人用にいうと#include のmath.hです。  Mathメソッドの中には、サイン函数やコサイン函数、他色々な ものが入っていて、簡単に使うことができます。例えば、サイン 関数はsin()です。実際に使うときには、Mathメソッド内の sin()ということを明確にするため、Math.sin()と使います。Mは大文字 括弧()の中には数値をsinに渡す数値を入れます。
 実験⇒Math.sin() 
ちなみにですが 1.23e-2なんて数値が出ることがたまにあります。 これは、1.23×10の-2乗、つまり0.0123のことです。 9.87e4とあれば、98700です。 1.224…e-16とあれば、1.224×10の-16乗ですので≒0と考えてください。 で、そのMathメソッドには大抵の計算の為の道具が入っていまし てsqrt()ってのが有ります。これが、ルートを求める函数です。 Math.sqrt(4)という風に使って"2"が帰ってきます。
 実験⇒Math.sqrt() 
§2 無理矢理ヴぁ セクション1では、sqrtをつかってあっさりと計算が済んでしまいました。 ただ、桁数の限りがあるので、ここでは、延々と小数点以下を計算する プログラムを作りましょう。 「無理矢理ヴぁ」で、やります。 即ち√2を計算するとき、答えをansとするとき、 ans=0だと、ans2=0 ans=1だと、ans2=1 ans=2だと、ans2=4 ←2を超えるのでアウト、 以上から整数の部分は1だと分かります。 ans=1.3だと、ans2=1.69 ans=1.4だと、ans2=1.96 ans=1.5だと、ans2=2.25 ←2を超えるのでアウト、 以上から少数第一位は4だと分かります。 この様に一つずつ試すことで、一桁ずつ決定して行きます。 無理矢理です。 まず、nを指定して求める数値z = √nとします。 z=0;//グローバル変数 結果的にzが√nになる予定 //整数部分の決定 function Det1(){  for(i=0;i<n;i++){   if(i*i <= n)z=i; //i*i ただ、この調子で小数点第?位の函数を書くのは大変なの で、もう少し一般化します。 n=prompt("√nを計算します。 nの部分を入力してください",2);//nを入力してもらいます。 z=0;//グローバル変数 結果的にzが√nになる予定 for(j=0;j<=6;j++){ 小数点第6位まで計算します  m=Math.pow(10,j);//10のj乗(10の0乗は1です)  Det(m); } alert("ファニエルさんが計算した結果: "+z+"\nMathメソッドで計算した結果: "+Math+"");  //zとMathメソッドを使った計算結果の表示(比較のため) function Det(m){  for(i=0;i<Math.max(n,10);i++){     //Math.max(n,10)ってのはnと10で大きい方、を示す函数です。     //コンピュータの仕事を減らす為の処理です。   if((z+i/m)*(z+i/m) <= n)k=i;  }z += (k/m); } つまりDet(0);Det(10);Det(100);Det(1000);...と実行すること になります。脳内インタプリタで確かめてみてください。 では実際に実験 
 
上手くいきましたかね?ソースを見ていただくと分かりますが実は ちょっと改良しています。まあ、大事なことでは無いので特に言及 しませんが。 §3 手計算「開平方」のシミュレーション

cd ../ 戻る