teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

修正

2020/08/20 08:01

投稿

tiitoi
tiitoi

スコア21960

answer CHANGED
@@ -1,3 +1,32 @@
1
1
  `sol[0]` の解に平方根が含まれているので、a, b, c の値によっては平方根の中身が負になって、その結果、虚数単位が表れます。
2
2
 
3
- [x ** 3 - a * x ** 2 - b * x - c = 0, a=4,b=-1, c=-1 - Wolfram|Alpha](https://www.wolframalpha.com/input/?i=x+**+3+-+a+*+x+**+2+-+b+*+x+-+c+%3D+0%2C+a%3D4%2Cb%3D-1%2C+c%3D-1&lang=ja)
3
+ [x ** 3 - a * x ** 2 - b * x - c = 0, a=4,b=-1, c=-1 - Wolfram|Alpha](https://www.wolframalpha.com/input/?i=x+**+3+-+a+*+x+**+2+-+b+*+x+-+c+%3D+0%2C+a%3D4%2Cb%3D-1%2C+c%3D-1&lang=ja)
4
+
5
+ ## 追記
6
+
7
+ evalf() で数値解として評価すると、虚数解が微小ですがでてきますね。
8
+
9
+ ```python
10
+ sols = sympy.solve(sympy.Eq(f, 0), x)
11
+
12
+ print("このとき, x^3-ax^2-bx-c=0の解は")
13
+ print("x1=", sols[0])
14
+ print("x2=", sols[1])
15
+ print("x3=", sols[2])
16
+
17
+ print("今, a,b,cを次のように定める.")
18
+ a1 = 4
19
+ b1 = -1
20
+ c1 = -1
21
+
22
+ for sol in sols:
23
+ print(sol.subs([(a, a1), (b, b1), (c, c1)]).evalf())
24
+
25
+ # 0.726109445035782 + 0.e-20*I
26
+ # -0.377202853972958 + 0.e-22*I
27
+ # 3.65109340893718 - 0.e-22*I
28
+ ```
29
+
30
+ Wolframe Alpha で a=4,b=c=-1 のときの厳密解は以下のようになっています。
31
+
32
+ ![イメージ説明](77d35c06be961fc46cc6b5b542c93b55.png)

1

修正

2020/08/20 08:00

投稿

tiitoi
tiitoi

スコア21960

answer CHANGED
@@ -1,1 +1,3 @@
1
- `sol[0]` の解に平方根が含まれているので、a, b, c の値によっては平方根の中身が負になって、その結果、虚数単位が表れます。
1
+ `sol[0]` の解に平方根が含まれているので、a, b, c の値によっては平方根の中身が負になって、その結果、虚数単位が表れます。
2
+
3
+ [x ** 3 - a * x ** 2 - b * x - c = 0, a=4,b=-1, c=-1 - Wolfram|Alpha](https://www.wolframalpha.com/input/?i=x+**+3+-+a+*+x+**+2+-+b+*+x+-+c+%3D+0%2C+a%3D4%2Cb%3D-1%2C+c%3D-1&lang=ja)