3つの噴水の問題,2次関数の決定(その1/3)「共通テスト2025年数ⅠＡ・旧数ⅠＡ第２問〔１〕，数Ⅰ・旧数Ⅰ第３問〔２〕」を sympy でやってみたい。

・グラフを作図しました。
・standard form と vertex form と factored form

:::note info
次　 [(その2/3)　AI先生にmathjaxで聞いた。](https://qiita.com/mrrclb48z/items/b6939f47ce21c69ad3b0)
次　 [(その3/3)　作成未定]()
:::


# オリジナル
・問題文 テキスト ＜ 大学入試数学問題集成 様　
https://mathexamtest.web.fc2.com/2025/202510000/2025100000100mj.html#top-0103
・解答解説 ＜ T氏の数学日記 様
https://mathmathmass.exblog.jp/34422363/

# sympyで(オリジナル 様の方法で)
(勉強中)

# sympyで(いつもの方法で)
・値の取り出し？を省略しています。申し訳ありません。
sympy.calculus.util.maximum(f, syTbol, domain=Reals)
https://docs.sympy.org/latest/modules/calculus/index.html#sympy.calculus.util.maximum

・ver0.1 ＞3点座標を入力して、2次関数abcを決定しています。standard form
```python
# ver0.1 ＞3点座標を入力して、2次関数abcを決定しています。standard form
from sympy import *
import re
var('a')                                          # ここがポイント a≠０ 表示方法がわかりませんでした。
var('x,b,c')
def myHobutusen_3P(x1,y1,x2,y2,x3,y3):
    y=a*x**2+b*x+c
    return y.subs(solve([Eq(y.subs({x:x1}),y1),
                         Eq(y.subs({x:x2}),y2),
                         Eq(y.subs({x:x3}),y3)],
                        [a,b,c]))
def myHobutusen_TopMax(C1_y,C1_xS,C1_xE):
    C1_yT=maximum(C1_y,x,Interval(C1_xS,C1_xE))
    C1_xT=solve  (Eq(C1_y,C1_yT),x)[0]              #　??? 普通は中点
    return C1_xT,C1_yT
C1_xS,C1_xE=Rational(-5,2),Rational( 1,2)           # 多項式の係数について。小数→分数　nsimplifyがありました。
C3_xS,C3_xE=Rational( 5,2),Rational(-1,2)
C2_xS      =Rational( 3,2)
#
C1_y       =myHobutusen_3P    (C1_xS,0,C1_xE,0,0,1)
C1_xT,C1_yT=myHobutusen_TopMax(C1_y,C1_xS,C1_xE)
C3_y       =myHobutusen_3P    (C3_xS,0,C3_xE,0,0,1)
C3_xT,C3_yT=myHobutusen_TopMax(C3_y,C3_xE,C3_xS) 
C2_y       =myHobutusen_3P    (C2_xS,0,C1_xT,C1_yT,C3_xT,C3_yT)
C2_xE      =solve             (Eq(C2_y,0    ),x)[0]              #　??? 判別省略。[0]で
C2_xT,C2_yT=myHobutusen_TopMax(C2_y,C2_xE,C2_xS)                
print("# (1)アイウエ",C1_y," "*2,"# C1 : y =",C1_y.evalf())
print("#    　　　　",C2_y," "*5,"# C2 : y =" ,re.search(r'\(([^,]+)',str(Poly(C2_y.evalf(),x))).group(1)   )
print("#    　　　　", re.search(r'\(([^,]+)',str(Poly(C2_y,x))).group(1) )
print("#    カキ　　",C1_yT," "*20,"#",float(C1_yT)," m (C1,C3:二つの小さな噴水の高さ) +",float(C2_yT-C1_yT)," m")
print("#    クケコサ",C2_yT," "*18,"#",float(C2_yT), "m (C2   :中央の大きな噴水の高さ)")
print("#    シ　　　",round(C2_yT/C1_yT))
#------------------------------------------------------------
C2d_y      =myHobutusen_3P     (0,5 ,C1_xT,C1_yT,C3_xT,C3_yT)
C2ｄ_xS    =solve              (Eq(C2d_y,0),x)[1]                 #　??? 判別なし。[1]で
print("# (2)スセ　　",C2_xS  -C2ｄ_xS)
print("#    ソ　　　",C2ｄ_xS<C2_xS  )                              # ??? if文勉強中。情報Ⅰ
#------------------------------------------------------------
C2ｄ_xE=-C2ｄ_xS                  
plot( (C1_y ,(x,C1_xS ,C1_xE)),   # plotにx座標の大小は関係無いようです。 分数表示勉強中です。
      (C2_y ,(x,C2_xS ,C2_xE)),
      (C3_y ,(x,C3_xS ,C3_xE)),
      (C2d_y,(x,C2d_xS,C2d_xE)),
      aspect='equal'
    )
# (1)アイウエ -4*x**2/5 - 8*x/5 + 1    # C1 : y = -0.8*x**2 - 1.6*x + 1.0
#    　　　　 81/25 - 36*x**2/25       # C2 : y = -1.44*x**2 + 3.24
#    　　　　 -36/25*x**2 + 81/25
#    カキ　　 9/5                      # 1.8  m (C1,C3:二つの小さな噴水の高さ) + 1.44  m
#    クケコサ 81/25                    # 3.24 m (C2   :中央の大きな噴水の高さ)
#    シ　　　 2
# (2)スセ　　 1/4
#    ソ　　　 True
```

![111.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109698/dde9fc7b-ba84-39e2-3994-b2e0054eba43.png)

・ver0.2 平方完成風。vertex form
　省略。同じになりそうなので。
```python
# ver0.2 平方完成風。vertex form
```
・ver0.3 因数分解風。対称性を使っています。factored form
```python
# ver0.3 因数分解風。対称性を使っています。factored form
from sympy import *
var('a')                                            # ここがポイント a≠０ 表示方法がわかりませんでした。
var('x')
def myHobutusen_InsuBunkai(x1,x2,yido, xq,yq):
    y=a*(x-x1)*(x-x2)+yido
    return (y.subs( {a:solve(Eq(y.subs({x:xq}),yq),a)[0]}).expand())
def myHobutusen_TopTyuten(y,xS,xE):
    xT=(xS+xE)/2                                 #　今回は中点で。対称性
    yT=y.subs({x:xT})
    return xT,yT
C1_xS,C1_xE=Rational(-5,2),Rational( 1,2)
C3_xS,C3_xE=Rational( 5,2),Rational(-1,2)
C2_xS      =Rational( 3,2)
# 
C1_y       =myHobutusen_InsuBunkai(C1_xS,C1_xE,0, 0,1)
C3_y       =myHobutusen_InsuBunkai(C3_xS,C3_xE,0, 0,1)
C1_xT,C1_yT=myHobutusen_TopTyuten (C1_y,C1_xS,C1_xE)
C3_xT,C3_yT=myHobutusen_TopTyuten (C3_y,C3_xS,C3_xE)
C2_y      =myHobutusen_InsuBunkai (C1_xT,C3_xT,C3_yT, C2_xS,0)
C2_xT     =0
C2_yT     =C2_y.subs({x:0})
print("# (1)アイウエ",C1_y )
print("#    カキ　　",C1_yT)
print("#    クケコサ",C2_yT)
print("#    シ　　　",round(C2_yT/C1_yT))
# #------------------------------------------------------------
C2d_y      =myHobutusen_InsuBunkai (C1_xT,C3_xT,C3_yT, 0,5)
C2ｄ_xS    =solve                  (Eq(C2d_y,0),x)[1]                 #　??? 判別なし。[1]で
print("# (2)スセ　　",C2_xS  -C2ｄ_xS)
print("#    ソ　　　",C2ｄ_xS<C2_xS  )                                  # ??? if文勉強中。情報Ⅰ
# (1)アイウエ -4*x**2/5 - 8*x/5 + 1
#    カキ　　 9/5
#    クケコサ 81/25
#    シ　　　 2
# (2)スセ　　 1/4
#    ソ　　　 True
```

# いつもの? sympyの実行環境と 参考のおすすめです。
[(テンプレート)](https://qiita.com/mrrclb48z/items/00dd08b0317069be9342)

# いつもと違うおすすめです。
### Wikipedia
英語

https://en.wikipedia.org/wiki/Quadratic_function

https://en.wikipedia.org/wiki/Parabola

https://en.wikipedia.org/wiki/Conic_section

日本語

#### ＞standard form と vertex form と factored form

https://ja.wikipedia.org/wiki/%E4%BA%8C%E6%AC%A1%E9%96%A2%E6%95%B0

＞放物線は二次曲線の一種で、離心率は 1 である。
またまた、???別の３つの違い。放物線と二次曲線と二次関数???
放物線　 ⊂ 二次曲線
Parabola ⊂ Conic_section　

https://ja.wikipedia.org/wiki/%E6%94%BE%E7%89%A9%E7%B7%9A?variant=zh-cn&cpPosIndex=1

https://ja.wikipedia.org/wiki/%E5%86%86%E9%8C%90%E6%9B%B2%E7%B7%9A

#### Qiita内で

＞ 以下、AI先生に教えてもらいました。

https://qiita.com/mrrclb48z/items/2a38f26a69e04fe825ed

＞ completing the square

https://qiita.com/mrrclb48z/items/38e849f41f46bf0c8f9c