公式ホームページ
https://www.waseda.jp/inst/admission/assets/uploads/2023/04/15_2023_ippan_sugaku.pdf#page=3
>Admissions Center
https://www.waseda.jp/inst/admission/other/2022/11/22/12919/
小学6年生のタツ郎先生が、
この問題は小学5年生レベルだネ。
最大面積計算は、1行の掛け算割り算だネ。と
おっしゃっておられますけど。
私には、コイツ?この方は間違っていると思います。
(小学6年生のタツ郎先生は、三平方の定理は知らないはずです。相似も。
もちろん、2次関数も知らないはずです。)
>5年生「三角形・−」の面積、
皆さんは、どう思われますか?
2024-02-18追加
小学6年生のタツ郎先生のご紹介
(大学入試数学問題集成 様掲示板内で登場済み 24年 共通テ 本試験 I 3-2・IA 2-1 2次関数の応用問題)
解答をありがとうございました。
めぐろ塾 様より
スクロールして下さい。ジャンプしていません。
>早稲田教育の小問集合独特の「絶対論証ムリ系問題」
>厳密にやるなら、「底辺を固定したとき、高さが最大となるのは残りの点が三角形の頂点にあるとき」って予選決勝法的解法かな~。
3x4÷2÷5x4÷2x4÷2=24/5=4.8
3*4/2/5*4/2*4/2=24/5=4.8
最初の行がわかりやすかも。
パイソニスタの方へ
・plotのループの方法について、おすすめのサイトを教えて下さい。
・4.19999999999999 がでています。(作業中)分数で。
オリジナル
2023 早稲田大学 教育学部【1】(4) < 河合塾
https://kaisoku.kawai-juku.ac.jp/nyushi/honshi/23/w03-21a.pdf#page=6
https://kaisoku.kawai-juku.ac.jp/nyushi/honshi/23/w03.html
大学入試数学問題集成 様>テキスト 【1】(4)
sympyで(Heaviside関数を使わなくても)
・全部で9通りやっています。
・プログラムは、つまみ食いです。申し訳ありません。
https://www.deepl.com/ja/translator#ja/つまみ食いです。
https://www.deepl.com/ja/translator#ja/ちゃんとやれよ。です。
・A parameterized point on the polygon. にしました。
https://docs.sympy.org/latest/modules/geometry/polygons.html#sympy.geometry.polygon.Polygon.arbitrary_point
・2(1)次曲線で、両端点とその中点を通るように、3点で補間? しています。
・ver0.1
# ver0.1
# [0, 1.5, 2.0, 2.5, 5.5, 7.0, 9.5, 10.0, 10.5, 12] 10
from sympy import *
t,myT,l =symbols('t myT l' ,real=True)
x,y,a,b,c =symbols('x y a b c',real=True)
x1,y1,x2,y2=symbols('x1,y1,x2,y2',real=True)
def myPtTr(myTr,l):
return myTr.arbitrary_point('t').subs(t,l/myTr.perimeter)
def my2jikyokusen_sten(myTr,st,en):
mi =(st+en)/2
myA1=Triangle(myPtTr(myTr,1.5+st),myPtTr(myTr,5.0+st),myPtTr(myTr,9.5+st)).area
myA2=Triangle(myPtTr(myTr,1.5+mi),myPtTr(myTr,5.0+mi),myPtTr(myTr,9.5+mi)).area
myA3=Triangle(myPtTr(myTr,1.5+en),myPtTr(myTr,5.0+en),myPtTr(myTr,9.5+en)).area
return my2jikyokusen(st,myA1,mi,myA2,en,myA3)
def my2jikyokusen(x1,y1,x2,y2,x3,y3):
sol=solve( [Eq(a*x1**2+b*x1+c,y1),Eq(a*x2**2+b*x2+c,y2),Eq(a*x3**2+b*x3+c,y3) ],[a,b,c])
return sol[a] *t**2+sol[b]*t+sol[c]
myTr=Polygon((0, 3),(0, 0),(4, 0), (0, 3),(0, 0),(4, 0))
y1=my2jikyokusen_sten(myTr, 0.0, 1.5)
y2=my2jikyokusen_sten(myTr, 1.5, 2.0)
y3=my2jikyokusen_sten(myTr, 2.0, 2.5)
y4=my2jikyokusen_sten(myTr, 2.5, 5.5)
y5=my2jikyokusen_sten(myTr, 5.5, 7.0)
y6=my2jikyokusen_sten(myTr, 7.0, 9.5)
y7=my2jikyokusen_sten(myTr, 9.5,10.0)
y8=my2jikyokusen_sten(myTr,10.0,10.5)
y9=my2jikyokusen_sten(myTr,10.5,12.0)
#
print("# ",max(maximum(y1,t,Interval( 0.0, 1.5)),
maximum(y2,t,Interval( 1.5, 2.0)),
maximum(y3,t,Interval( 2.0, 2.5)),
maximum(y4,t,Interval( 2.5, 5.5)),
maximum(y5,t,Interval( 5.5, 7.0)),
maximum(y6,t,Interval( 7.0, 9.5)),
maximum(y7,t,Interval( 9.5,10.0)),
maximum(y8,t,Interval(10.0,10.5)),
maximum(y9,t,Interval(10.5,12.0)),
))
# 作図(グラフ)-------------------------------------------
from sympy.plotting import plot
p0=plot(0,4.8,(t,0,12),aspect_ratio=(1.0,1.0),show=False)
p1=plot(y1,(t, 0.0, 1.5),show=False)
p2=plot(y2,(t, 1.5, 2.0),show=False)
p3=plot(y3,(t, 2.0, 2.5),show=False)
p4=plot(y4,(t, 2.5, 5.5),show=False)
p5=plot(y5,(t, 5.5, 7.0),show=False)
p6=plot(y6,(t, 7.0, 9.5),show=False)
p7=plot(y7,(t, 9.5,10.0),show=False)
p8=plot(y8,(t,10.0,10.5),show=False)
p9=plot(y9,(t,10.5,12.0),show=False)
p0.extend(p1)
p0.extend(p2)
p0.extend(p3)
p0.extend(p4)
p0.extend(p5)
p0.extend(p6)
p0.extend(p7)
p0.extend(p8)
p0.extend(p9)
p0.show()
# 作図(最大値の時刻)-------------------------------
print("# 1", maximum(y1,t,Interval( 0.0, 1.5)) )
print("# 2", maximum(y2,t,Interval( 1.5, 2.0)) )
print("# 3", maximum(y3,t,Interval( 2.0, 2.5)) )
print("# 4", maximum(y4,t,Interval( 2.5, 5.5)) )
print("# 5", maximum(y5,t,Interval( 5.5, 7.0)) )
print("# 6", maximum(y6,t,Interval( 7.0, 9.5)) )
print("# 7", maximum(y7,t,Interval( 9.5,10.0)) )
print("# 8", maximum(y8,t,Interval(10.0,10.5)) )
print("# 9", maximum(y9,t,Interval(10.5,12.0)) )
sol=solveset(Eq(y8,maximum(y8,t,Interval(10.0,10.5))),t,Interval(10.0,10.5) ).args[0] ;print("# sol ",sol)
ptA=myPtTr(myTr,1.5+t).subs({t:sol}) ;print("# ptA ",ptA)
ptB=myPtTr(myTr,5.0+t).subs({t:sol}) ;print("# ptB ",ptB)
ptC=myPtTr(myTr,9.5+t).subs({t:sol}) ;print("# ptC ",ptC)
def myPlotPtPt(pt1,pt2):
return plot(pt1.y+(pt2.y-pt1.y)/(pt2.x-pt1.x)*(x-pt1.x),(x, pt1.x, pt2.x),show=False)
pL4=plot(0,(t,0,4),aspect_ratio=(1.0,1.0),show=False)
pL5=myPlotPtPt(myTr.args[0],myTr.args[2])
pAB=myPlotPtPt(ptA,ptB)
pBC=myPlotPtPt(ptB,ptC)
pCA=myPlotPtPt(ptC,ptA)
pL4.extend(pAB)
pL4.extend(pL5)
pL4.extend(pBC)
pL4.extend(pCA)
pL4.show()
# 4.80000000000000
# 1 4.20000000000000
# 2 4.72500000000000
# 3 4.72500000000000
# 4 4.19999999999999
# 5 4.20000000000000
# 6 4.00000000000000
# 7 4.80000000000000
# 8 4.80000000000000
# 9 4.19999999999999
# sol 10.0000000000000
# ptA Point2D(2/5, 27/10)
# ptB Point2D(0, 0)
# ptC Point2D(18/5, 3/10)
# 私のパソコンです。
# [Done] exited with code=0 in 150.183 seconds
作図
・sympyのplot moduleで
・線の色の指定をしていません。自動的です。
作図(FreeCADで)
・問題文は2次元ですが、3次元FreeCADのマクロで、XY平面上に作図しました。
import FreeCAD
import Part
import DraftTools
import Draft
import Mesh
############################################################################
# 計算省略
from sympy import *
ptA =Point2D(2/5, 27/10)
ptB =Point2D(0, 0)
ptC =Point2D(18/5, 3/10)
pt40=Point2D(4, 0)
pt03=Point2D(0, 3)
############################################################################
# 作図用
############################################################################
# 3D作図 z=0 XY平面に作図しました。
############################################################################
def myXYZ2Txt_2D(A):
return '(' + str(A.x) + ',' + str(A.y) + ')'
#return ""
def myTxtXYZ_2D(A,myWedgei):
P5x=float(A.x)
P5y=float(A.y)
P5z=0.0
p5 = FreeCAD.Vector(P5x, P5y, P5z)
myText = Draft.makeText(myWedgei, p5)
myText.Label = myWedgei
FreeCADGui.ActiveDocument.ActiveObject.FontSize = '0.3 mm'
return
def myTxtXYZ_S_2D(*xy_tx):
for i in range(1,int(len(xy_tx)/2)+1):
myTxtXYZ_2D(xy_tx[2*i-2],xy_tx[2*i-1]+myXYZ2Txt_2D(xy_tx[2*i-2]) )
return
def myLine_2D(A,B):
Ax,Ay,Az=float(A.x),float(A.y),0.0
Bx,By,Bz=float(B.x),float(B.y),0.0
pl = FreeCAD.Placement()
pl.Rotation.Q = (0.4247081540122249, 0.17592004639554645, 0.33985110062924484, 0.8204732460821097)
pl.Base = FreeCAD.Vector(-3.9166066876399563, -2.1670824762243774, 1.7495260956243028)
points = [FreeCAD.Vector(Ax,Ay,Az), FreeCAD.Vector(Bx,By,Bz)]
line = Draft.make_wire(points, placement=pl, closed=False, face=True, support=None)
Draft.autogroup(line)
return
def myLine_C_2D(*args):
for i in range(1,len(args)):
myLine_2D(args[i-1],args[i])
myLine_2D(args[i],args[0])
return
#######################################################################################
myLine_C_2D ( ptA,ptB,ptC )
myTxtXYZ_S_2D( ptA,"A",ptB,"B",ptC,"C" )
myLine_2D ( pt40,pt03 )
myTxtXYZ_S_2D( pt40,"",pt03,"" )
#######################################################################################
doc = App.activeDocument()
App.ActiveDocument.addObject("App::Origin", "Origin")
App.ActiveDocument.getObject('Origin').Visibility = True
App.ActiveDocument.recompute()
Gui.activeDocument().activeView().viewAxonometric()
Gui.SendMsgToActiveView("ViewFit")
sympyで(Heaviside関数を使って)
・???Heaviside関数のmaximumは、無理かも。
・ver0.1
# ver0.1
from sympy import *
var('t',real=True,positive=True)
def myTimePQR(P,Q,R ,S):
myInputA=[0,0+3/2,0+3/2+4,0+3/2+4+5,12] #;print("#",myInputA,len(myInputA) )
myInputB=[0,0+4/2,0+4/2+5,0+4/2+5+3,12] #;print("#",myInputB,len(myInputB) )
myInputC=[0,0+5/2,0+5/2+3,0+5/2+3+4,12] #;print("#",myInputC,len(myInputC) )
myInputD= sorted(myInputA+myInputB+myInputC) #;print("#",myInputD,len(myInputD) )
myInputD= list( dict.fromkeys(myInputD)) ;print("#",myInputD,len(myInputD) )
return 0
P =Point(0, 3)
Q =Point(0, 0)
R =Point(4, 0)
#
VPQ=Point(0,-1)
VQR=Point(1, 0)
VRP=(P-R)/R.distance(P)
#
myTimePQR(P,Q,R ,S)
myTr_00t0=Triangle( P+VPQ*(1.5+ t), Q+VQR*(2.0+ t), R+VRP*(2.5+ t))
myTr_01t5=Triangle( Q+VQR*(t- 1.5), Q+VQR*(2.0+ t), R+VRP*(2.5+ t))
myTr_02t0=Triangle( Q+VQR*(t- 1.5), R+VRP*(t- 2.0), R+VRP*(2.5+ t))
myTr_02t5=Triangle( Q+VQR*(t- 1.5), R+VRP*(t- 2.0), P+VPQ*(t- 2.5))
# myTr_05t5=Triangle( R+VRP*(t- 5.5 ), R+VRP*(t- 2.0), Q+VQR*(t- 5.5))
myTr_05t5 =Triangle( R+VRP*(t- Rational(11,2)), R+VRP*(t- 2 ), Q+VQR*(t- 5.5))
myTr_07t0=Triangle( R+VRP*(t- 5.5), P+VPQ*(t- 7 ), Q+VQR*(t- 5.5))
# myTr_09t5=Triangle( R+VRP*(t- 5.5), P+VPQ*(t- 7.0), R+VRP*(t- 9.5 ))
myTr_09t5 =Triangle( R+VRP*(t- 5.5), P+VPQ*(t- 7.0), R+VRP*(t- Rational(19,2)))
myTr_10t0=Triangle( R+VRP*(t- 5.5), Q+VQR*(t-10.0), R+VRP*(t- 9.5))
myTr_10t5=Triangle( P+VPQ*(t-10.5), Q+VQR*(t-10.0), R+VRP*(t- 9.5))
#
print("# ( 1.5)",Eq(myTr_00t0.subs({t: 1.5}),myTr_01t5.subs({t: 1.5})))
print("# ( 2.0)",Eq(myTr_01t5.subs({t: 2.0}),myTr_02t0.subs({t: 2.0})))
print("# ( 2.5)",Eq(myTr_02t0.subs({t: 2.5}),myTr_02t5.subs({t: 2.5})))
print("# ( 5.5)",Eq(myTr_02t5.subs({t: 5.5}),myTr_05t5.subs({t: 5.5})))
# print("# ( 7.0)",Eq(myTr_05t5.subs({t: 7.0}),myTr_07t0.subs({t: 7.0})))
print ("# ( 7.0)",Eq(myTr_05t5.subs({t: 7 }),myTr_07t0.subs({t: 7 })))
print("# ( 9.5)",Eq(myTr_07t0.subs({t: 9.5}),myTr_09t5.subs({t: 9.5})))
print("# (10.0)",Eq(myTr_09t5.subs({t:10.0}),myTr_10t0.subs({t:10.0})))
print("# (10.5)",Eq(myTr_10t0.subs({t:10.5}),myTr_10t5.subs({t:10.5})))
print("# (12.0)",Eq(myTr_10t5.subs({t:12.0}),myTr_00t0.subs({t: 0.0})))
print()
print("# ", maximum(myTr_00t0.area,t,Interval( 0.0, 1.5)),
maximum(myTr_01t5.area,t,Interval( 1.5, 2.0)),
maximum(myTr_02t0.area,t,Interval( 2.0, 2.5)),
maximum(myTr_02t5.area,t,Interval( 2.5, 5.5)),
maximum(myTr_05t5.area,t,Interval( 5.5, 7.0)),
maximum(myTr_07t0.area,t,Interval( 7.0, 9.5)),
maximum(myTr_09t5.area,t,Interval( 9.5,10.0)),
maximum(myTr_10t0.area,t,Interval(10.0,10.5)),
maximum(myTr_10t5.area,t,Interval(10.5,12.0))
)
print()
print("# ",max(maximum(myTr_00t0.area,t,Interval( 0.0, 1.5)),
maximum(myTr_01t5.area,t,Interval( 1.5, 2.0)),
maximum(myTr_02t0.area,t,Interval( 2.0, 2.5)),
maximum(myTr_02t5.area,t,Interval( 2.5, 5.5)),
maximum(myTr_05t5.area,t,Interval( 5.5, 7.0)),
maximum(myTr_07t0.area,t,Interval( 7.0, 9.5)),
maximum(myTr_09t5.area,t,Interval( 9.5,10.0)),
maximum(myTr_10t0.area,t,Interval(10.0,10.5)),
maximum(myTr_10t5.area,t,Interval(10.5,12.0))
))
# [0, 1.5, 2.0, 2.5, 5.5, 7.0, 9.5, 10.0, 10.5, 12] 10
# ( 1.5) True
# ( 2.0) True
# ( 2.5) True
# ( 5.5) True
# ( 7.0) True
# ( 9.5) True
# (10.0) True
# (10.5) True
# (12.0) True
# 4.20000000000000 4.72500000000000 4.72500000000000 4.20000000000000 4.20000000000000 4.00000000000000 4.80000000000000 4.79999999999998 4.19999999999999
# 4.80000000000000
いつもの? sympyの実行環境と 参考のおすすめです。
いつもと違うおすすめです。