• ベストアンサー

入力した任意の数の平方根を求める

RAPTsongの回答

  • RAPTsong
  • ベストアンサー率42% (74/175)
回答No.5

そもそも、この程度なら関数分けしないことで、不具合は起こらなかったでしょう。

Nabe1992-6
質問者

お礼

わかりました。関数に分けるべきか分けないべきか、よく考えようと思います。

関連するQ&A

  • Visual Basicの平方根について

    Visual Basic を用いて、TextBoxから入力した 数字について、平方根を求め、Labelに書き出す プログラムを作りたいのですが、全くわかりません。 コピペしたらプログラムが動くコードを教えてください。 お願いします。

  • Visual Basic の平方根について

    Visual Basic を用いて、TextBoxから入力した 数字について、ボタン1を押すと平方根を求め、Labelに書き出し、 ボタン2を押すとリセットされるプログラムを 作りたいのですが、全くわかりません。 コピペしたらプログラムが動くコードを教えてください。 お願いします。

  • 負の平方根同士のかけ算が正の数にならない理由

    負の平方根同士のかけ算が正の数にならない理由について、 複素幾何の方法ではなく、代数的方法で色々考えてみたのですが、 (a)^(1/2)・(b)^(1/2) = (a・b)^(1/2) が成り立つための必要条件が、(a)^(1/2) >0 , (b)^(1/2) > 0 であり、 kを正の実数とおく時、 (-k)^(1/2) は実数と大小比較できないことが証明できるから(※)、 平方根の乗法の公式を適用することができない という説明で数学的にあってますでしょうか。 ※:(-k)^(1/2)>p>0または(-k)^(1/2)<(-p)<0とおいて全体二乗して矛盾が発生することから導く

  • エクセルで平方根を計算する方法は?

    ある数の平方根をエクセル上で計算したいのですが,どのような計算式を入力したらよいのでしょうか?

  • java 電卓 平方根

    こんにちは。趣味でプログラミングをしているものです。 さっそくですが質問させていただきます。 Java で文具店で1000円くらいで売っているような電卓を再現 しようとしているのですが 平方根のボタンを押したときの処理でつまづいています。 3 を入力して平方根のボタンを押すと以下のサイトに表示されている限りにおいては 同じ数値になります。 http://ja.wikipedia.org/wiki/3%E3%81%AE%E5%B9%B3%E6%96%B9%E6%A0%B9 ここで質問の内容について説明させていただきます。 Windows に標準で付属している電卓では 0.5 を入力して平方根のボタンを押し続けると 最後には 1 が表示されます。 ですが、以下に示す自分のコードだと 0.99999999998 と表示されてその後 平方根のボタンを押し続けても同じ結果になります。 0.99999999998 で収束しているのだと思いますが、 (自分の作った電卓では小数点以外の数字は12個表示されるようになっています。) 1 に収束するようにするには、 以下に示す メソッドsqrt 内の計算部分の 割り算のスケールの指定とかを変えれば うまくいくのでしょうか? ----------------------------------------------- 平方根のボタンを押したときの処理です。 case CalculatorEvent.TYPE_SQRT : if( negativeflag ) { if( ! display.showBigMinus ) showNumString = showNumString.substring( 1 ); } result = sqrt( new BigDecimal( showNumString ) ); //test statement System.out.println( "from 1446 : " + result.toString() ); result = result.setScale( 32, RoundingMode.HALF_UP ); showNumString = result.toString(); //test statement; System.out.println( "sqrt result : " + showNumString ); // . . . . //以下おもに端数を表示桁数に丸めて、 //負の値の平方根を求めたときは //絶対値の平方根を求めて表示 // エラーであるマークも表示 // 呼び出し元に例外を投げる // 呼び出した側で例外を受け取ると // 電卓のボタンを入力できないようにする ----------------------------------------------- 上記コード test statement は以下の出力結果になると 以後 平方根のボタンを押しても同じ結果が出力されます。 from 1446 : 0.9999999999899999999999499999999994999999999937499999999125000000078125 sqrt result : 0.99999999998999999999995000000000 ------------------------------------------------ 上記コード中のメソッド sqrt です。 private BigDecimal sqrt( BigDecimal value ) { BigDecimal two = new BigDecimal( "2" ); BigDecimal x = value.divide( two ); BigDecimal last_x = BigDecimal.ZERO; BigDecimal gap = x.subtract( last_x ); BigDecimal range = BigDecimal.ONE.movePointLeft( 64 ); BigDecimal t; while( gap.compareTo(range) > 0 ) { last_x = new BigDecimal( x.toString() ); //t = value.divide( x, 64, BigDecimal.ROUND_DOWN ); //test statement t = value.divide( x, 64, RoundingMode.HALF_EVEN ); // x = x.add( t ).divide( two ); gap = x.subtract( last_x ).abs(); } return x; } ----------------------------------------------- 長文になりもうしわけありませんが、 ごぞんじのかた、教えていただけないでしょうか? よろしくお願いします。

    • ベストアンサー
    • Java
  • ルートと平方根の違い

    過去の質問をある程度洗わせて頂いて大体のところは理解できたのですが、確認と、いくつか細かい疑問が出てきたので質問させて頂きます。 *この質問中において、xは実数、aは正の実数、iは虚数単位とします。 確認事項 1.平方根と√(ルート)は違うもの 平方根は2乗してxになる2つの数(±x^(1/2)=±a)を表したもので、ルートは平方根のうち正の数(x^(1/2)=a)を表す 例:2の平方根は±2、√(4)=2 2.ルートの計算で、y=f(x)=√(x)^2としたとき、y=x 例:√(4)^2=4 3.√(a^2)はa、√((-a)^2)もa 例:√(2^2)=2、√((-2)^2)=2 ここで質問です。 上の3項はいずれも複素数を考えない場合(x≧0)に成り立つ性質だと思います。そこで、複素数を含めた考え方をすると… 1.x<0の時、xの平方根、ルートはどうなるのか? 平方根は±aiとできる気がしますが、ルートはそもそも正の数という概念がaiに適応できるのかどうか? 2.√(-a)^2はどうなるのか? 一瞬√(-a)^2=-aと思ってしまったのですが、-a<0のためルートの定義から外れます。複素数を経由しても √(-a)^2=(√(a)i)^2=√(a)^2・i^2=-a となり、同じくルートの定義から外れます。 *ここで複素数のルートに対して虚数単位の係数が正の方を採用しましたが、これは定義がいまいちわかっていないため、間違っている可能性があります。 3.よく√(x^2)=xとしている記述が見られるが、正確には√(x^2)=|x|ではないか? 様々な式変形でこのようなルートの外し方が見られますし、実際僕も前者の様に思っていましたが、正解は後者ではないでしょうか?となると前者を前提とした式変形は間違っていた、という事になるのでしょうか? よくわかっていない部分がありますので全く見当違いな事を言っているかもしれません。その辺も含めて教えて下さるとうれしいです。 よろしくお願い致します。

  • コンパイル時に a.out と入力するとエラーが出てしまいます。

    コンパイル時に a.out と入力するとエラーが出てしまいます。 テキストファイルを複数 (最大で255個) 書き込むC言語のプログラム「f.c」を作成しまして それらのファイルは全て cygwin/home という場所に保存されます。 ただ、ファイルの中身は多くの文字が並ぶので(最大 500列 × 70000行 程度) 全てのファイルを書き込むには時間がかかりすぎてしまいます。 a.out を使って プログラム内にある scanf("a=", &a); scanf("b=", &b); これらの変数 a,b を出力し 実行結果で書き込まれるファイルを データとして出力する方法が知りたいのですが (この方法をバッチ処理というのでしょうか?) $ cc f.c (← 実行結果の際のコンパイル) その次に a.out と入力するとエラーが起きます。 a.out の使い方や意味を調べてもいまいち理解し難く困っております。 さきほど言った scanf で値を決める a,b を プログラム内で決めるのではなく a.out a b と入力してデータを出力させるには どのようにすればよいのでしょうか? なぜエラーしてしまうのかも教えて頂けないでしょうか? 長々と質問してしまいすみません。 どうか ご回答 よろしくお願いします。

  • 平方根を求めるアルゴリズムについて・・・

    次の文章の平方根を求めるアルゴリズムの疑似言語での記述の仕方を教えてください。 変数名等は任意に設定して良い。またアルゴリズムは任意の正数の平方根を求められるようにすること。求める精度は10-8とする。 (√のない計算機) T君はある資格試験を受験しに行った。その試験では、電卓を持ち込むことができる。当然に計算問題が出題され、計算した結果、答えは√14とでた。回答しようとしたところ、選択肢は小数で書いてある。ところが平方根を計算しようと思ったら√キーがない電卓だった。 どうしよう・・・ まず4×4=16であるから、とりあえず14を4で割ってみた。 14÷4=3.5 言わずもがなであるが、√14は二乗すると14になる正の数のことである。 √14は4と3.5の間にあることが分かる。 とりあえず、今度は14を4と3.5のあいだの3.75で割ってみる。 14÷3.75=3.7333333333 ということは√14は3.75と3.7333333333のあいだにあるわけだから同じように14を3.741666667で割ってみる。 14÷3.741666667=3.741648107 これで√14が小数点第4位までが求められた。あとはこの作業を繰り返せば、徐々に精度は良くなるはずである。

  • プログラミング 実数 合計

    3つの実数を読み込んで合計を表示するというプログラムなんですが、プログラムをコンパイルして3つの実数を入力してくださいと表示させて実数1に1.5、実数2に0.8、実数3に1.0, 合計は3.3です表示させたいのですが #include <stdio.h> int main(void) { double n1,n2,n3; puts("3つの実数を入力してください。"); printf("実数:"); scanf("%lf", &n1); printf("実数:"); scanf("%lf", &n2); printf("実数:"); scanf("%lf", &n3); printf("合計は%5.lfです。\n",(double)(n1 + n2 + n3)); return (0); } でコンパイルしようとすると1つしか実数を入力する所が出てこなくて 数字を入れると合計は.lfですと出てきて実行できないのですが、上のソースのどこか間違ってる所があったら教えてくれませんか?

  • 8進数と16進数で表示するプログラム

    int型変数bに10進数として数値を入力し、その値を実行結果のように8進数と16進数で表示するプログラムを作成しなさい という問題にとりかかっているのですが、いまいち理解できません scanfで値を入力させる項目は必要とわかるのですが、その他がどうしてもわかりません、ご教授して頂ければ幸いです