• ベストアンサー

因数分解のプログラム

皆さんごきげんよう。  3次式の因数分解をするプログラムを作っているのですが、3重解のときの求め方で困っています。 具体的には、 for(x=-100; x<101; x++){ if(a*x*x*x+b*x*x+c*x+d == 0){ printf("%d",x); } } このようにして、与式が0になるときにその値を出力しようと思うのですが、このやり方では、例えば(x-1)^3で、答えが"1"一つだけになってしまいます。この答えを、"1","1","1"としたいのです。  よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • shkwta
  • ベストアンサー率52% (966/1825)
回答No.2

微分を使います。 f = a*x*x*x + b*x*x + c*x + d を1回微分したもの f1 = 3*a*x*x + 2*b*x + c と、2回微分したもの f2 = 6*a*x + 2*b を求めます。 これを使って、次のように判断します。 f=0 and f1≠0 ⇒ 単解 f=0 and f1=0 and f2≠0 ⇒ 二重解 f=0 and f1=0 and f2=0 ⇒ 三重解

moomintroll
質問者

お礼

さっそくの回答ありがとうございます。  微分を使うとは、思いもよりませんでしたが、どうやらこの方法でできそうです。かなり悩んでいたので、とても助かりました。  ありがとうございました。

その他の回答 (2)

  • hpsk
  • ベストアンサー率40% (48/119)
回答No.3

No.1です。 回答した直後に思いついたのですが、 手抜きな方法でよければ、 ・解が3つ見つかった -> 普通に3つ表示 ・解が1つしか見つからなかった -> 3重解(その解を3回表示) ・解が2つ見つかった -> その2点での導関数の値を計算 -> その値が0であったところが2重解 とすれば楽ですね。

moomintroll
質問者

補足

回答ありがとうございます。 この方法も考えたのですが、これだと(x-1)(x*x+2x+9)のようなときに解が1つしか見つからないので、うまくいきません。  解が2つのときはこの方法でいけそうですね。参考にさせてもらいます。  ありがとうございました。  

  • hpsk
  • ベストアンサー率40% (48/119)
回答No.1

解はすべて -100 <= x <= 100 の整数、という仮定ですね。 多分、代入した結果が0になるところを探す、というだけではだめで、地道に多項式の除算などで因数分解しなければダメかと思います。 3重解なら、0になる点が1個しか見つからなかったら、それが3重解という判断が可能ですが、 2重解+もう1つの解、だとどちらか重解か判断できない気がします。

moomintroll
質問者

お礼

さっそくの回答ありがとうございます。解は-100から100までの整数という設定です。  shkwtaさんの方法でできそうですが、多項式の除算の方法も考えてみます。  ありがとうございました。

関連するQ&A

  • 因数分解について

    二次方程式ax^2+bx +cの解がα、βの時 ax^2+bx+cの因数分解の答えはa(x-α)(x-β)になるという公式において 二次方程式が重解を持つ場合因数分解はどのようにすればいいのですか? 感覚的には重解をαと置くと a(x-α)^2になる気がするのですが合っていますか? たすき掛けをしろというのは❌でお願いします

  • 因数分解

    ものすごく初歩的な質問なのですが、問題とかで次の式を因数分解しなさいとかあったら何気なく因数分解していたのですが、因数分解して解が2つ出てきたら、その関数は判別式で言うとD>0ということですよね? もし因数分解して重解だったらD=0ですよね?

  • 因数分解

    数学なんて何十年ぶりです こんな因数分解の式と回答を見せられたのですが、どうしてこういった答えになるのか????です どなたかわかりやすく教えて頂けませんか? (X2-1)-11(X2-1)+24 これを因数分解すると(X2はX二乗です) (X+2)(x-2)(x+3)(X-3) これが答えになるようなのですがどうしてこうなるのですか?

  • 因数分解??

    X=√3-√2/√3+√2 Y=√3+√2/√3-√2 のとき次の式の値を求める問題です。 (1)X^2+Y^2 (2)Y(X^2-Y)+X(Y^2-X) 自分で考えたの(1)(2)の式を変形してから代入した方がいいのではないかとおもいます。 例えば(1)だと因数分解で習った式をつかい (X-Y)^2+2XYの式にするとか (2)も展開してから因数分解して簡単な 式にしてから代入すると考えました。 √はついてくるは因数分解??かややこしいです。 よろしくお願いします。

  • 因数分解を行うプログラムについて

    こんにちは。 今日は教えてほしいことがあってきました。 学校の課題で a,b,cは整数で、しかもaは0でないものとして、 このとき2次式    ax^2 + bx + c を、整数係数の範囲で因数分解するプログラムを作る ことになったのですが、 1.任意のa,b,cの値を入れてもらう。 2.二次方程式の解で   整数係数の範囲で因数分解できるか判別する。 3.なにかを用いて分解する。 4.結果を表示する。   (dX + e)(fX + g)のような形で。 とまでは考えられるのですが、 3.の所が難しくて、考えてからかなり時間がたってしまい らちがあかない感じです。 たすきがけを使うにしても、いまいち、よくわかりません。 どなたか、教えてください。お願いします。

  • 因数分解について

    因数分解について 下記の方程式のxを解くために左辺を因数分解したのですが、とても面倒です そこで皆様にそれぞれ自分なりの方法で因数分解してもらい、 その中で1番スマートな因数分解を見つけたいです (1-x)^3 + 2a^3 - 3a^2(1-x) = 0 (a:const) ちなみに最終的には -{x-(1-a)}^2{x-(1+2a)} = 0 ∴ x = 1+2a, 1-a(重解) の様な形になると思います 宜しくお願いします

  • 因数分解

    この問題の答えが分かりません。 Q.次の2次式を複素数の範囲で因数分解せよ。     3X2-2X+2 (3エックス2乗-エックス+2) 教えてください。 あと、これは普通の因数分解と何が違うのでしょうか?    

  • 因数分解?について

    現在、電気の勉強をしております。  久しぶりに因数分解してみて解らなくなりました。 (因数分解という単語も出てこなかったです・・・^^;) (1) 4X + XR = 24 + 2R   の式で、 (2) 2R = 8X である場合、 R = 8X/2 より R = 4X としました。 それを(1)式に当てはめて 4X + 4X^2 = 24 + 8X  左辺の4Xを右辺移して引き  4X^2 = 24 + 4X 両辺を4で割り、 X^2 = 6 + X X^2 - X - 6 = 0 として 因数分解すると  (X -3) (X + 2) となりました。 X^2 - X - 6 = 0 の式の X に「 -3 」を当てはめると 9 - (-3) - 6 = 0 で式が成り立ちません・・・・ 同じく、「2」を当てはめても、 4 - 2 - 6 = 0 となります。 答えは3であると分かるのですが、因数分解が成り立たず考えております。 どの辺りの考え方ダメなのでしょうか?よろしくお願いします。

  • 因数分解とは

    因数分解について質問です。 例えば、 8x^2+24x を因数分解せよといわれたら、 8x(x+3) としますよね。 それでは次の場合は答えとして正解なのか知りたいです。 (1)x(8x+24) (2)2^3x(x+3) (3)24x(1/3x+1) どれも共通因数でくくるという点で因数分解できていると思うのですがどうでしょうか。教えてください。 また、因数分解とはなにか解説してくださると嬉しいです。 よろしくお願いします。

  • 因数分解についてです

    数Iの範囲で因数分解をすると例えば 8x^2+6x-5を因数分解せよ。 という問題なら(4x+5)(2x-1)という答えになりますよね。 でも後に数IIでax^2+bx+cはa(x-α)(x-β)というのを利用して因数分解をするのを習いました。 この方法でやると、私の計算が合っていれば8(x-1/2)(x+5/4)となりました。 後者と前者ではかなり数に違いが出てくるのですが…私の計算が間違っているのでしょうか??;

専門家に質問してみよう