0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Last updated at Posted at 2025-02-09

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

オリジナル

・問題文 テキスト < 大学入試数学問題集成 様 
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

# ver0.1 >3点座標を入力して、2次関数abcを決定しています。standard form
from sympy import *
import re
var('a')                                          # ここがポイント a≠0 表示方法がわかりませんでした。
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)
C2d_xS    =solve              (Eq(C2d_y,0),x)[1]                 # ??? 判別なし。[1]で
print("# (2)スセ  ",C2_xS  -C2d_xS)
print("#    ソ   ",C2d_xS<C2_xS  )                              # ??? if文勉強中。情報Ⅰ
#------------------------------------------------------------
C2d_xE=-C2d_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

・ver0.2 平方完成風。vertex form
 省略。同じになりそうなので。

# ver0.2 平方完成風。vertex form

・ver0.3 因数分解風。対称性を使っています。factored form

# ver0.3 因数分解風。対称性を使っています。factored form
from sympy import *
var('a')                                            # ここがポイント a≠0 表示方法がわかりませんでした。
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)
C2d_xS    =solve                  (Eq(C2d_y,0),x)[1]                 # ??? 判別なし。[1]で
print("# (2)スセ  ",C2_xS  -C2d_xS)
print("#    ソ   ",C2d_xS<C2_xS  )                                  # ??? if文勉強中。情報Ⅰ
# (1)アイウエ -4*x**2/5 - 8*x/5 + 1
#    カキ   9/5
#    クケコサ 81/25
#    シ    2
# (2)スセ   1/4
#    ソ    True

いつもの? sympyの実行環境と 参考のおすすめです。

(テンプレート)

いつもと違うおすすめです。

Wikipedia

英語

日本語

>standard form と vertex form と factored form

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

Qiita内で

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

> completing the square

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?