LoginSignup
0
0

Heaviside関数を使って?2つの頂点が動点の三角形の面積計算「24年 共通テ 本試験 I 3-2・IA 2-1 2次関数の応用問題」をsympyと作図をやってみたい。

Last updated at Posted at 2024-01-31

Piecewise関数が、楽でした。
・Piecewise関数とmaximum関数の組み合わせができました。
 ??? できないはずです。
Represents an expression, condition pair.
https://docs.sympy.org/latest/modules/functions/elementary.html#piecewise

# ver0.4
from sympy import *
var('t',real=True,positive=True)
Vx=Point(1,0)
Vy=Point(0,1)*2
O =Point(0,0)
B =Point(4,6)
C =Point(0,6)
# 
P =Point(1,0)*t
BQP=Piecewise((Triangle(B,C-Vy*t,P).area,t<3),(Triangle(B,O+Vy*(t-3),P).area,True))
# 
print("# (1)ア    ",        BQP.subs({t:0})     )
print("# (2)イ    ",minimum(BQP,t,Interval(0,3)))
print("# (2)ウエ  ",maximum(BQP,t,Interval(0,3)))
print("# (3)オ    ",minimum(BQP,t,Interval(0,6)))
print("# (3)カキ  ",maximum(BQP,t,Interval(0,6)))
sol=solveset(Le(BQP,10),t,Interval(0,6))     
print("# (4)クケコ",sol.args[1]-sol.args[0])
# (1)ア     12
# (2)イ     8
# (2)ウエ   12
# (3)オ     8
# (3)カキ   13
# (4)クケコ -sqrt(3) + sqrt(2) + 3
from sympy.plotting import plot
plot(0,BQP,10,13,(t,0,6),aspect_ratio=(1.0,1.0))

9.png

以下は、旧です。

旧タイトル) Heaviside関数を使って?動点が2つの三角形の面積計算「24年 共通テ 本試験 I 3-2・IA 2-1 2次関数の応用問題」をsympyと作図をやってみたい。2024/02/03

・Heaviside関数は、入試範囲外のはずです。
 ??? ヘビサイドの展開定理 | 高校数学の美しい物語
・Heaviside関数は、もしかしたら、大学工学系1,2年生のオニイサン、オネエサンの関数だと思います、
 
パイソニスタの方へ
・Heaviside関数の正しい?使い方を教えて下さい。    
 (ver0.2)プログラムは、3秒後、下へ行き過ぎ。
 速度2tを足して水平にしました。さらに、2tを足しました。
追加2024/02/02
 (ver0.1)プログラムは、3秒後から、倍のスピード4tを足しています。
 グラフが、3秒後速度2tで右下さがりだから、4tで上げています。
・Ropenで分割しています。Ropenを使わない方法がありますか?
 solveset関数はできるのに、maximum関数は、できませんでした。
・Singularity functionで、できそうですか?

(参考)
・sympyで「Heaviside step function(ヘヴィサイドの階段関数)」を使ってみた
https://qiita.com/mrrclb48z/items/ef607bd4016bb2541e55#sympy%E3%81%A7
・sympyで「Singularity function(特異関数)」を使ってみた
https://qiita.com/mrrclb48z/items/9e776ca8f365a7a36fc3

オリジナル 

 数学入試問題 様

 上と同じです。大学入試数学問題集成 様>テキスト 【2】[1]

T氏の数学日記 様
 >...2つの動点...
 https://mathmathmass.exblog.jp/33659035/

掲示板より < 大学入試数学問題集成 様 
 私の自作の会話あり。小学6年生のタツ郎先生登場。
 https://mathexamtest.bbs.fc2.com/
 24年 共通テ 本試験 I 3-2・IA 2-1 2次関数の応用問題 その1
 2024/01/23 (Tue) 13:00:47 より

sympyのplot関数で作図(Heaviside関数を使って)

・ver0.3。
・Ropen,Lopenは、解決していません。(2024/02/15)
・Heaviside関数を使って、ひとつにできないので、最大値2つの比較です。

# ver0.3
from sympy import *
var('t',real=True)
BQP_03=Triangle((4, 6),(0, 6-t*2  ),(t, 0)).area
BQP_36=Triangle((4, 6),(0, (t-3)*2),(t, 0)).area
BQP   =BQP_03-Heaviside(t-3,H0=1)*BQP_03+Heaviside(t-3,H0=1)*BQP_36
# 
print("# (1)ア    ",        BQP.subs({t:1})           )
print("# (2)イ    ",minimum(BQP,t,Interval.Ropen(0,3)))
print("# (2)ウエ  ",maximum(BQP,t,Interval.Ropen(0,3)))
# print("# (3)オ    ",minimum(BQP,t,Interval(0,6)))
# print("# (3)カキ  ",maximum(BQP,t,Interval(0,6)))
print("# (3)オ    ",min( minimum(BQP,t,Interval.Ropen(0,3)),minimum(BQP,t,Interval.Lopen(3,6))))
print("# (3)カキ  ",max( maximum(BQP,t,Interval.Ropen(0,3)),maximum(BQP,t,Interval.Lopen(3,6))))
sol=solveset(Le(BQP,10),t,Interval(0,6))      
print("# (4)クケコ",sol.args[1]-sol.args[0])
# (1)ア     9
# (2)イ     8
# (2)ウエ   12
# (3)オ     8
# (3)カキ   13
# (4)クケコ -sqrt(3) + sqrt(2) + 3

print("#",BQP_03.subs({t:3}))
print("#",BQP_36.subs({t:3}))
print("#",BQP   .subs({t:3}))
from sympy.plotting import plot
plot(0,10,BQP,(t,0,6),aspect_ratio=(1.0,1.0))
# 9
# 9
# 9

Figure_1.png

sympyで(Heaviside関数を使って)

・ver0.2。sympy風にしました。ver0.1と同じです。

# ver0.2
from sympy import *
var('t',real=True,positive=True )
Vx=Point(1,0)
Vy=Point(0,1)
B =Point(4,6)
C =Point(0,6)
P =Point(1,0)*t
t3=3
Q =C-2*Vy*t+Heaviside(t-t3,H0=0)*2*Vy*(t-t3)  +Heaviside(t-t3,H0=0)*2*Vy*(t-t3)
BQP=Triangle(B,Q,P).area           
# 
print("# (1)ア    ",BQP.subs({t:0}))
# print("# (2)イ  ",    minimum(BQP,t,Interval(0,t3)))
# print("# (2)ウエ",    maximum(BQP,t,Interval(0,t3)))
print("# (2)イ    ",    minimum(BQP,t,Interval.Ropen(0,t3)))
print("# (2)ウエ  ",    maximum(BQP,t,Interval.Ropen(0,t3)))
print("# (3)オ    ",min(minimum(BQP,t,Interval.Ropen(0,t3)),minimum(BQP,t,Interval.Lopen(t3,6))))
print("# (3)カキ  ",max(maximum(BQP,t,Interval.Ropen(0,t3)),maximum(BQP,t,Interval.Lopen(t3,6))))
sol=solveset(Le(BQP,10),t,Interval(0,6))        # ;print("# sol=",sol)
print("# (4)クケコ",sol.args[1]-sol.args[0])
# (1)ア     12
# (2)イ     8
# (2)ウエ   12
# (3)オ     8
# (3)カキ   13
# (4)クケコ -sqrt(3) + sqrt(2) + 3

・ver0.1

# ver0.1
from sympy import *
var('t',real=True,positive=True )
OC =6
Psp=1
Qsp=2
t3 =Rational(OC,Qsp)
Qy =OC-Qsp*t*Heaviside(t-0,H0=0)+2*Qsp*(t-t3)*Heaviside(t-t3,H0=0)  #;print("# Qy=",Qy  )
BQP=Triangle(Point(4,6),Point(0,Qy),Point(Psp*t,0)).area            #;print("# BQP",BQP)
# 
print("# (1)ア    ",BQP.subs({t:0}))
# print("# (2)イ  ",    minimum(BQP,t,Interval(0,t3)))
# print("# (2)ウエ",    maximum(BQP,t,Interval(0,t3)))
print("# (2)イ    ",    minimum(BQP,t,Interval.Ropen(0,t3)))
print("# (2)ウエ  ",    maximum(BQP,t,Interval.Ropen(0,t3)))
print("# (3)オ    ",min(minimum(BQP,t,Interval.Ropen(0,t3)),minimum(BQP,t,Interval.Lopen(t3,6))))
print("# (3)カキ  ",max(maximum(BQP,t,Interval.Ropen(0,t3)),maximum(BQP,t,Interval.Lopen(t3,6))))
sol=solveset(Le(BQP,10),t,Interval(0,6))        # ;print("# sol=",sol)
print("# (4)クケコ",sol.args[1]-sol.args[0])
# (1)ア     12
# (2)イ     8
# (2)ウエ   12
# (3)オ     8
# (3)カキ   13
# (4)クケコ -sqrt(3) + sqrt(2) + 3

sympyで(オリジナル 様を参考に)

・以下は、Heaviside関数を使っていません。
・A polygon with three vertices and three sides.
https://docs.sympy.org/latest/modules/geometry/polygons.html#sympy.geometry.polygon.Triangle
・小技。10を10.0にすると、小数点表示になります。困りました。

・ver0.1

# ver0.1
from sympy import *
var('t' ,real=True,positive=True)
var('Qy',real=True,positive=True)
OC =6
Psp=1
Qsp=2
t3 =Rational(OC,Qsp)
# 
PBQ_t03=Triangle(Point(Psp*t,0),Point(4,6),Point(0,6-2*t)).area   #;print("# PBQ_t03",PBQ_t03)
PBQ_t36=Triangle(Point(Psp*t,0),Point(4,6),Point(0,2*t-6)).area   #;print("# PBQ_t36",PBQ_t36)
print("# (1)ア    ",PBQ_t03.subs({t:1}))
print("# (2)イ    ",    minimum(PBQ_t03,t,Interval(0,t3)))
print("# (2)ウエ  ",    maximum(PBQ_t03,t,Interval(0,t3)))
print("# (3)オ    ",min(minimum(PBQ_t03,t,Interval(0,t3)),minimum(PBQ_t36,t,Interval(t3,6))))
print("# (3)カキ  ",max(maximum(PBQ_t03,t,Interval(0,t3)),maximum(PBQ_t36,t,Interval(t3,6))))
sol1= solveset(Eq(PBQ_t03,10),t,Interval(0 ,t3)).args[0] ;print("# sol1=",sol1)
sol2= solveset(Eq(PBQ_t36,10),t,Interval(t3,6 )).args[0] ;print("# sol2=",sol2)
print("# (4)クケコ",sol2-sol1)
# (1)ア     9
# (2)イ     8
# (2)ウエ   12
# (3)オ     8
# (3)カキ   13
# sol1= 2 - sqrt(2)
# sol2= 5 - sqrt(3)
# (4)クケコ -sqrt(3) + sqrt(2) + 3

作図

・グラフの勉強中。Heaviside関数は、plot関数が使えるはず?です。
・FreeCADの勉強中

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

(テンプレート)

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

過去問の類題

・梁の?影響線に似ていますか。

・ゼロスタート、ゼロエンド(表現は別件より)

・いつもの自転車君のゆうどうです。
2022年数列に似ていると、思いました。
https://qiita.com/mrrclb48z/items/297442a71820732d3ea3

別件の別件

>google検索 直線定規でヒットします。

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