1
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?

高校入試 切頭三角柱「【2023年山梨県】公立高校受験 数学解説 大問6 2(3)」をsympyとFreeCADでやってみたい。

Last updated at Posted at 2024-03-05

・私の解答の方法は、中学生の学習指導要領の範囲外です。ベクトル成分表示です。
https://www.deepl.com/ja/translator#ja/大人げないです。

・「切頭三角柱」は、大学入試問題の過去問類題にありませんでした。
 共通テストの太郎さんと花子さんは、2024/03/05 現在。
 切頭三角柱を扱っていないです。
・3次元FreeCADのワイヤーフレームです。
・勉強中。軸線方向の見え方。文字の回転です。

(追加) 教えて下さい。ver0.2の変数名をリストにすると、
    計算箇所が5行?になりますか???

オリジナル

pdf 問題文 最後の大問、最後の小問です。
https://www.toshin.com/koukou_nyushi/files/2023/sugaku_q/yamanashi_sugaku_q.pdf#page=6

youtube 又は 過去5年分 様 から
https://homepage1.canvas.ne.jp/ynaka/R5PDF/19yamanashi.pdf#page=6

19山梨県<過去5年分
http://homepage1.canvas.ne.jp/ynaka/zenmon.html

数学・英語のトリセツ! 様
解答解説 youtube 13:46
(コメントに私のコメントがあります。)

sympyで(オリジナル 様の方法で)

・勉強中。三平方の定理

sympyで

・ver0.1 対称性利用。四角錐2個と屋根形です。
・(追加)Rationalについて、コメントいただきました。ありがとうございました。

# ver0.1
from sympy import *
def myTaiseki(PTO,PTA,PTB,PTC):
    return abs(Matrix([[PTA.x-PTO.x, PTA.y-PTO.y, PTA.z-PTO.z],
                       [PTB.x-PTO.x, PTB.y-PTO.y, PTB.z-PTO.z],
                       [PTC.x-PTO.x, PTC.y-PTO.y, PTC.z-PTO.z]]
              ).det()/6)
d      =8
D,A,B,C=map(Point,[(0,0,d),(d,0,d),(d,d,d),(0,d,d)])                
H,E,F,G=map(Point,[(0,0,0),(d,0,0),(d,d,0),(0,d,0)])                
I      =F+Rational(1,2)  *(E-F)
J      =G+Rational(1,2)  *(F-G)
K      =H+Rational(1,2)  *(G-H)
L      =E+Rational(1,2)  *(H-E)
M      =B+Rational(1,2)  *(D-B)
P      =B+Rational(3,3+1)*(M-B)
Q      =D+Rational(3,3+1)*(M-D)
# 
IJd    =I+Rational(1,2)  *(J-I)+Point(0,0,d)
v= (myTaiseki(A,L,I,P)+myTaiseki(P,L,A,Q))*2 \
  +(Rational(1,2)*I.distance(J)*d*I.distance(L)) \
  -(myTaiseki(I,J,P,IJd))*2
print("#",v)
# 704/3

・ver0.2 積分で。水平断面の多角形の面積計算です。
The intersection with other geometrical entity.
https://docs.sympy.org/latest/modules/geometry/plane.html#sympy.geometry.plane.Plane.intersection
The area of the polygon.
https://docs.sympy.org/latest/modules/geometry/polygons.html#sympy.geometry.polygon.Polygon.area

# ver0.2
from sympy import *
var('z',real=True,positive=True)
d      =8
A,B,C,D=map(Point,[(0,0,d),(d,0,d),(d,d,d),(0,d,d)])                
E,F,G,H=map(Point,[(0,0,0),(d,0,0),(d,d,0),(0,d,0)])                
I,J,K,L=Rational(1,2)*(E+F),Rational(1,2)*(F+G),Rational(1,2)*(G+H),Rational(1,2)*(H+E)
M      =B+Rational(1,2)  *(D-B)
P      =B+Rational(3,3+1)*(M-B)
Q      =D+Rational(3,3+1)*(M-D)
# 
myPlane=Plane(Point3D(0,0,z),normal_vector=(0,0,1))
LA=myPlane.intersection(Line(L,A))[0]  
AI=myPlane.intersection(Line(A,I))[0]  
IP=myPlane.intersection(Line(I,P))[0]  
PJ=myPlane.intersection(Line(P,J))[0]  
JC=myPlane.intersection(Line(J,C))[0]  
CK=myPlane.intersection(Line(C,K))[0]  
KQ=myPlane.intersection(Line(K,Q))[0]  
QL=myPlane.intersection(Line(Q,L))[0]  
area=Polygon( Point( LA.x,LA.y ),
              Point( AI.x,AI.y ),
              Point( IP.x,IP.y ),
              Point( PJ.x,PJ.y ),
              Point( JC.x,JC.y ),
              Point( CK.x,CK.y ),
              Point( KQ.x,KQ.y ),
              Point( QL.x,QL.y )
             ).area
v=integrate(area,(z,0,d))
print("#",v)
# 704/3
# 
area_max =maximum(area,z,Interval(0,d)) ;area_max_z=solveset( Eq(area,area_max),z,Interval(0,d)).args[0] 
area_min =minimum(area,z,Interval(0,d)) ;area_min_z=solveset( Eq(area,area_min),z,Interval(0,d)).args[0] 
print()
print("#",area)
print("#",area_max,area_max_z)
print("#",area_min,area_min_z)
print("#",float( v/d**3 ))
from sympy.plotting import plot
plot(0,area,(z,0,8),aspect_ratio=(1.0,1.0))
# -z**2/2 + 2*z + 32
# 34 2
# 16 8
# 0.4583333333333333

グラフ

1.png

FreeCADで作図

・作図勉強中

1.png

import FreeCAD
import Part
import Draft
import Mesh
#########################################################################################################
# 計算
##############################################################
# 2023 yamanasi 大問6 2(3) 
from sympy import *
d      =8
# D,A,B,C=map(Point,[(0,0,d),(d,0,d),(d,d,d),(0,d,d)])                
# H,E,F,G=map(Point,[(0,0,0),(d,0,0),(d,d,0),(0,d,0)])                
A,B,C,D=map(Point,[(0,0,d),(d,0,d),(d,d,d),(0,d,d)])                
E,F,G,H=map(Point,[(0,0,0),(d,0,0),(d,d,0),(0,d,0)])                
I,J,K,L=Rational(1,2)*(E+F),Rational(1,2)*(F+G),Rational(1,2)*(G+H),Rational(1,2)*(H+E)
M      =B+Rational(1,2)  *(D-B)
P      =B+Rational(3,3+1)*(M-B)
Q      =D+Rational(3,3+1)*(M-D)
##########################################################################################################
### 作図用
##########################################################################################################
### 3D作図
def myXYZ2Txt(A):
    # return '(' + str(A.x) + ',' + str(A.y) + ',' + str(A.z) + ')'
    return ''
def myTxtXYZ(A,myWedgei):
    P5x=float(A.x)
    P5y=float(A.y)
    P5z=float(A.z)
    p5 = FreeCAD.Vector(P5x, P5y, P5z)
    myText = Draft.makeText(myWedgei, p5)
    myText.Label = myWedgei
    FreeCADGui.ActiveDocument.ActiveObject.FontSize = '1.0 mm'
    return
def myTxtXYZ_S(*xy_tx):
    for i in range(1,int(len(xy_tx)/2)+1):
        myTxtXYZ(xy_tx[2*i-2],xy_tx[2*i-1]+myXYZ2Txt(xy_tx[2*i-2]) )
    return
def myLine(A,B):
    Ax,Ay,Az=float(A.x),float(A.y),float(A.z)
    Bx,By,Bz=float(B.x),float(B.y),float(B.z)
    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_S(*args):
    for i in range(1,len(args)):
        myLine(args[i-1],args[i])
    return
def myLine_C(*args):
    for i in range(1,len(args)):
        myLine(args[i-1],args[i])
    myLine(args[i],args[0])
    return
def myLine_H(*args):
    for i in range(1,len(args)):
        myLine(args[0],args[i])
    return
#
myLine_C  (D,A,B,C)
myLine_C  (H,E,F,G)
myLine_C  (I,J,K,L)
myLine_C  (A,P,C,Q)
myLine_C  (A,I,P,J,C,K,Q,L  )
myLine_S  (D,H)
myLine_S  (A,E)
myLine_S  (B,F)
myLine_S  (C,G)
myTxtXYZ_S(D,"D",A,"A",B,"B",C,"C")
myTxtXYZ_S(E,"E",F,"F",G,"G",H,"H")
myTxtXYZ_S(I,"I",J,"J",K,"K",L,"L")
myTxtXYZ_S(P,"P",M,"M",Q,"Q")
#
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")

大学入試問題の過去問の類題

切頭三角柱”でサイト内検索。表示がないだけかもしれません。

大学入試数学問題集成 様
一致する結果はありません

数学入試問題 様
site://kamelink.com ”切頭三角柱”との一致はありません。

T氏の数学日記 様

site://mathmathmass.exblog.jp ”切頭三角柱”との一致はありません。

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

(テンプレート)

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

1
0
1

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
1
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?