• 締切済み

プログラミングCについて

次のプログラムは11の正の平方根の近似値を、以下の方法に基づいて小数点以下第4位の精度で求めるプログラムである。このプログラムが正しく動作するように下線部を埋め、プログラムを完成させなさい。なお、3の2乗は9であり、4の2乗は16なので、10の平方根は3と4の間であることはわかっているとしてよい。(小数点以下第4位の精度とは、小数点以下第4位までが真値ち一致するようにし、第5位以下については一致しなくてもよい事を意味する。よって、結果の表示自身に第5位以下が表示されても構わない。) double x; for(x=3;x<4;x+=0.0001) { for(_______) break; } printf("11の正の平方根は%______です。\n",x); 平方根を求める方法: 変数を3から4まで0.0001刻みで増やしながら、その2乗を計算していきます。最初は3なので、その2乗は9となり、11よりも小さい値になりますが、変数の増加に応じて2乗の値も増えていき、4の2乗になる前には11を越えます。この時の変数が11の平方根の近似値になります。 注意: このプログラムによる答えは3.3167となります。実際には、変数の2乗が初めて11を越えたときの変数の値よりも、その1ステップ前の変数の値が方が近似値として適切かもしれません。しかし、今回はそこまで考慮する必要はありません。

みんなの回答

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.2

> プログラムを完成させなさい。 不可能です。

  • harawo
  • ベストアンサー率58% (3742/6450)
回答No.1

で、質問はなんですか?

関連するQ&A

  • プログラミング

    参考書を見ながらがんばってるのですが まったくわからないので誰か教えてください…。 (1) キャスト演算子を使う   整数型変数 a,b,c  浮動小数点型変数 x    データ: 6,5,7   式  : x=a*b/c      目的:計算結果はできる限り精度良い値で求める (2) オプション   このプログラムは2通りに書くことができる。その理由をレポートに考察として 書きなさい。 なお、 (1) の表示部分は printf("x=%f\n",x);を、使ってください。

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

    次の文章の平方根を求めるアルゴリズムの疑似言語での記述の仕方を教えてください。 変数名等は任意に設定して良い。またアルゴリズムは任意の正数の平方根を求められるようにすること。求める精度は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位までが求められた。あとはこの作業を繰り返せば、徐々に精度は良くなるはずである。

  • [C言語]試験問題の復習ができません[穴埋め]

    2 次方程式の解を計算する方法に関するつぎの解説をよく読み,その空欄【 あ 】・ 【 え 】~【 こ 】 に適切な語句を埋めて文章を完成せよ。 2次方程式 x2+ax+b=0 を考える。その解の公式は D=a2-4b とおいてx=(-a±√D)/2 となる。 そこで,この2 解を変数 x1, x2 に計算するプログラムはつぎのように書きたくなる。 D= a*a-4.0*b; r= 【 あ 】; x1= (-a+r)/2.0; x2= (-a-r)/2.0; もちろん,このままプログラムとしたのではうまく動作しない。 【 あ 】 は D≧0 の場合に しか動作しないからである。つまり,このプログラムは,判別式が非負の場合にだけ動作する。 さて,この方程式が2 実解α,β をもつとする。このとき,a= -(α+β), b= αβ である。さらに, α≫0(α が大きな数), β≈0 (β が小さな数)であるとする。 上のプログラムでは 【 え 】にα の近似値が得られ,【 お 】にβ の近似値が得られるが,【 か 】は浮動小数点近似の精度に 近い精度の近似値になるものの,他方はそうはならない。桁落ちが生じるからである。これを避 けには,精度良く近似値が得られる【 か 】を使って,他方の解を“【 き 】”から乗除算で求 めることである。 この対策を完全に施して,解の公式で精度良く計算できる解をx1 にまず計算する形に仕上 げたプログラムでは,つぎのように書くことになる。 x1= (a>0.0 ? 【 く 】 : 【 け 】)/2.0; x2= 【 こ 】; __________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________ ベクトルに行列による一次変換を施すプログラム,および,行列の2 乗を計算するプ ログラムに関するつぎの解説をよく読み,その空欄【 あ 】~【 か 】 に適切な語句を埋めて 文章を完成せよ。 ベクトルのデータ型 vector と(正方)行列のデータ型 matrix がつぎの通り宣言されて いるとする。 #define SIZE 3 typedef double vector[SIZE]; typedef double matrix[SIZE][SIZE]; ベクトルx に行列A による一次変換を施して得られるベクトルy = A x を計算するプログラム, および,行列A の2 乗 B= A2 を計算するプログラムを下に示す。ただし,つぎの通りに変数 (配列)が用意されているとする。 vector x; /* x の値が入れてある */ matrix A; /* A の値が入れてある */ vector y; /* ここにy の値を入れる */ matrix B; /* ここにB の値を入れる */ また, int 型の変数i,j,k も宣言してあるとする。 ベクトルに対する一次変換 for(i= 0; i!=SIZE; i++){ double w= 【 あ 】; for(j= 0; j!=SIZE; j++){ w= 【 い 】; } y[i]= 【 う 】; } 行列の2 乗 for(i= 0; i!=SIZE; i++){ for(j= 0; j!=SIZE; j++){ double w= 【 え 】; for(k= 0; k!=SIZE; k++){ w= 【 お 】; } B[i][j]= 【 か 】; } }

  • 代数方程式

     x^3-3x-1=0の正の解のうち最も小さいものを小数点以下3桁の精度で求めるプログラムを造っていますが、どうしてよいか手もつかない状態です。このプログラムを造るためのヒントをください。もしあったら参考になるホームページなどを教えてください。

  • 指数関数の応用

    問1が 1/8<2^X<32を満たすXの値を求めよ。 問2が  (√2)^3,3乗根4、(0.5)^(-3/4) という問題なのですが、 問1は 1<-4X<ー5まで解いたのですが、 ここからどのように発展させれば良いかわかりません。 問2は√2を表を使って小数点になおすのでしょうか? 3乗根4はちゃんとタイプできなかったので 字で書かさせていただきました。 教えてください。よろしくお願いします。

  • 平方数でない整数の平方根は無理数であることの証明

    すみません。高齢者なので使用する文字はすべて正の整数とします。 整数の平方根で整数になるのは1,4,9,16のような平方数だけです。例えば5の平方根を考えた場合、 4の平方根は2、 9の平方根は3ですから、5の平方根は2と3の間の数となり絶対に整数にはなりません。以上は単なる確認です。 そこで平方数ではない整数をaとします。これの平方根を√aと表記します。確認通り√aは整数にはなりません。この非平方数の平方根が分数で表現できるかどうかが問題です。 √a=n/mと分数で表現できるとします。ここでnとmは互いに素であるとし、当然m≠1です。 両辺を2乗すると  a=n2/m2 となります。ここでaは整数です。n2とm2にも共通の約数はないので、n2/m2は整数にはなりません。すると左辺は整数、右辺は小数(小数点以下が0ではない純粋の小数)になるのでこれは矛盾です。従って平方数ではない整数の平方根は全て無理数である。 質問は、こんなに簡単な証明でいいのだろうか?基本的なところで考え方に穴があるのではないだろうか?ということです。ご教示願います。

  • 有効数字について

    最小二乗法の計算をするに当たって有効数字を考えています。もしx=5.00という値が得られたとすると、x^2を考えるとき、やはり5.00×5.00=25.0(3桁)とすべきなのでしょうか?というのも、他のx^2の値が小数点以下第2位まで得られているので、それらを足し算すると小数点以下が第1位までとなってしまうのです。 知識不足なもので恐縮ですがよろしくお願いします。

  • C言語について

    倍精度の浮動小数点で与えられる4点の座標(x1,y1),(x2,y2),(x3,y3),(x4,y4)を入力して、その4点が頂点になる四角形の面積を算出して表示するプログラムをC言語を用いて書くとどういうプログラムをつくればいいのでしょうかm(__)m

  • 確率論

    サイコロの値xに関する確率関数p(x)は p(x)=1/6 (x=1,2,,,,,6)  ・・・(1) である。 一般に確率変数xの平均μ(ミュー), 分散σの2乗,標準偏差σ(シグマ)は それぞれ次式で定義される。 μ=Σ(下にx) x・p(x) ・・・(2) σの2乗=Σ(下にx) (x-μ)の2乗・p(x) , σ=√σの2乗 ・・・(3) ここで和はxの取り得る全ての値についてとる。式(3)より、σの2乗は 「平均からのズレの2乗の期待値」であり、その平方根である σは「xの値の平均のまわりのおよその広がり」を表わす。 1.式(1),(2),(3)を用いてサイコロの値の平均μ,分散σの2乗,標準偏差σを求めよ。 またp(x)のグラフを描き、x軸上のμ-1/2σ < x < μ+1/2σの領域を太線にしてみよ。 2.サイコロを100回振り出た値を記録せよ。 i回目に出た値をxiとし、次式のmを計算して1.で計算したμとほぼ一致することを確かめよ。 m=x1+x2+....+x100/100 3.2.で作った100個の値を用いて次式のsの2乗,sを計算し1.で計算した σの2乗, σとそれぞれほぼ一致することを確かめよ。 sの2乗=1/100Σ(Σの下にi=1, 上に100) (xi-m)の2乗, s=√sの2乗 ※μ=3.50, σの2乗=2.92, σ=1.71 (有効数字3桁) どなたかお願いします。

  • 確率論について

    サイコロの値xに関する確率関数p(x)は p(x)=1/6 (x=1,2,,,,,6)  ・・・(1) である。 一般に確率変数xの平均μ(ミュー), 分散σの2乗,標準偏差σ(シグマ)は それぞれ次式で定義される。 μ=Σ(下にx) x・p(x) ・・・(2) σの2乗=Σ(下にx) (x-μ)の2乗・p(x) , σ=√σの2乗 ・・・(3) ここで和はxの取り得る全ての値についてとる。式(3)より、σの2乗は 「平均からのズレの2乗の期待値」であり、その平方根である σは「xの値の平均のまわりのおよその広がり」を表わす。 1.式(1),(2),(3)を用いてサイコロの値の平均μ,分散σの2乗,標準偏差σを求めよ。 またp(x)のグラフを描き、x軸上のμ-1/2σ < x < μ+1/2σの領域を太線にしてみよ。 2.サイコロを100回振り出た値を記録せよ。 i回目に出た値をxiとし、次式のmを計算して1.で計算したμとほぼ一致することを確かめよ。 m=x1+x2+....+x100/100 3.2.で作った100個の値を用いて次式のsの2乗,sを計算し1.で計算した σの2乗, σとそれぞれほぼ一致することを確かめよ。 sの2乗=1/100Σ(Σの下にi=1, 上に100) (xi-m)の2乗, s=√sの2乗 ※μ=3.50, σの2乗=2.92, σ=1.71 (有効数字3桁) どなたか助けてください!お願いします。

専門家に質問してみよう