パイソニスタの方へ
・コマンド1個で、(ChatGPTとsympyとFreeCADを)投稿する方法がありますか?
・(省略)だらけで申し訳ありません。ChatGPT用のステキなテンプレートありませんか?
・黒背景に、2色があってもいいですね。
オリジナル
河合塾 様
問題解答解説
https://nyushi.sankei.com/honshi/24/hr1-21p.pdf#page=2
https://kaisoku.kawai-juku.ac.jp/nyushi/honshi/24/hr1-21a.pdf#page=2
>2024年解答速報 数学入試問題 様
https://kamelink.com/exam/index.php?2024%C7%AF%B2%F2%C5%FA%C2%AE%CA%F3#hf2992ad
公式ホームページ
未登録(2024/02/27)
sympyで(オリジナル 様の方法で)
・勉強中
ChatGPT-3.5先生へ
大学入試数学問題集成 様> 2024 広島大学 前期MathJax【2】テキスト
https://mathexamtest.web.fc2.com/2024/202410721/2024107210100mj.html#top-0102
・ページのソースを表示です。MathMLです。
<p class="slevel"><a name="q-0102"
id="q-0102"></a><span
class="qnum">【2】</span> 座標空間内の<math>
(途中省略)
</math>を求めよ.
</p>
・上記を、ChtGPTのnewchatにコピー貼り付けです。
(始めから、sympyで。ありかも。)
...各問題の解答を求めるには、具体的な計算と方程式の解を行う必要があります。
sympyで
(私)Matrixがキターーー (chrombookの文字変換です。)
Pointでお願いします。
理解しました。以下に、問題の解決にPointを使用するsympyコードを示します。
(省略)
・SymPy Liveで
(SymPy Live エラー多数)
(vscode ValueError: Line3D.new requires two unique Points.)
FreeCADでお願いします。
(省略)
sympyで、私のいつもの方法です。
・大学入試数学問題集成 様へ ありがとうございます。
元ネタは、MathJaxです。
ChatGPTのコードを改良して作成です。数値のキーインしなくて、いいですね~。
・??? ChatGPT-3.5先生は、planeのarea ???
# ver0.1
from sympy import *
from sympy import Point, Plane, Line
O = Point(0, 0, 0)
A = Point(1, 1, 0)
B = Point(0, 1, 1)
C = Point(1, 2, -1)
dot_product_AB = (A - O).dot(B - O)
dot_product_AC = (A - O).dot(C - O)
dot_product_BC = (B - O).dot(C - O)
print("#(1) 内積 OA・OB:", dot_product_AB)
print("#(1) 内積 OA・OC:", dot_product_AC)
print("#(1) 内積 OB・OC:", dot_product_BC)
alpha = Plane(O, A, B )
M = alpha.projection(C)
print("#(2) 点Mの座標:", M)
D = C + 2 * (M-C)
print("#(3) 点Dの座標:", D)
def myMensekiVector3D(P,Q,R):
return Rational(1,2)*sqrt(P.distance(R)**2*Q.distance(R)** 2 \
-(P-R).dot(Q-R)**2)
print("#(4) 三角形CADの面積:", myMensekiVector3D(C, A, D))
#(1) 内積 OA・OB: 1
#(1) 内積 OA・OC: 3
#(1) 内積 OB・OC: 1
#(2) 点Mの座標: Point3D(5/3, 4/3, -1/3)
#(3) 点Dの座標: Point3D(7/3, 2/3, 1/3)
#(4) 三角形CADの面積: 2*sqrt(2)/3
FreeCADのマクロで作図
・3次元FreeCADのワイヤーフレームです。
・マクロプログラムの計算部分は、コピーしています。
import FreeCAD
import Part
import Draft
import Mesh
#########################################################################################################
# 計算
##############################################################
# ver0.1
from sympy import *
from sympy import Point, Plane, Line
O = Point(0, 0, 0)
A = Point(1, 1, 0)
B = Point(0, 1, 1)
C = Point(1, 2, -1)
dot_product_AB = (A - O).dot(B - O)
dot_product_AC = (A - O).dot(C - O)
dot_product_BC = (B - O).dot(C - O)
print("#(1) 内積 OA・OB:", dot_product_AB)
print("#(1) 内積 OA・OC:", dot_product_AC)
print("#(1) 内積 OB・OC:", dot_product_BC)
alpha = Plane(O, A, B )
M = alpha.projection(C)
print("#(2) 点Mの座標:", M)
D = C + 2 * (M-C)
print("#(3) 点Dの座標:", D)
def myMensekiVector3D(P,Q,R):
return Rational(1,2)*sqrt(P.distance(R)**2*Q.distance(R)** 2 \
-(P-R).dot(Q-R)**2)
print("#(4) 三角形CADの面積:", myMensekiVector3D(C, A, 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 = '0.2 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_S (A,O,B)
myLine_S (O,M)
myLine_S (A,C)
myLine_S (A,M)
myLine_S (A,D)
myLine_C (A,C,D)
myTxtXYZ_S(O,"O",A,"A",B,"B",C,"C",D,"D",M,"M")
#
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")
・作図はしましたが、正しいか、誤っているかよくわかりません。