質問
xを解きたい。 Schemeでどうすればいいですか?
T1-F2=0
F1+T2=GM-Gm
Cos(60)(2.5*Gm+x*GM-l*F1)-l*Sin(60)*T1=0
F1=0.1*T1
F2=0.3*T2
M=20
m=80
l=5
私の試みは:
(lambda T1 . ;; T1=F2
(lambda F2 . ;; F2=0.3*T2
(lambda F1 . ;; F1=0.1*T1
(lambda Gm .
( lambda GM .
(-
( * 1/2
( -
( + ( * 2.5 Gm ) ( * x GM ) ) ;; solve x
5 * F1
)
)
( *
( * 10 1/sqrt(3) )
T1
)
)
) 80
) 20
) ( * 0.1 T1 )
) ( * 0.3 T2 )
) F2
;; ??? F1+T2=GM-Gm
解決
これらの高階関数をすべて作成している理由はわかりませんが、私の意見では混乱を招くだけです。代わりに、代数学の帽子からほこりを取り除き、少し考えてみてください。
5つの未知数を持つ5つの方程式があります。 (F1、F2、T1、T2、およびx)。これらの方程式の3つ( T1-F2 = 0
、 F1 = 0.1 * T1
および F2 = 0.3 * T2
)は、ごく簡単なことです。実現するために、置換により、バットからすぐに3つの未知数を排除します。 T1が表示されるすべての場所で、T1 = F2なのでF2をその場所に固定します(あなたが私と似ていて、自分自身をあまり信用していない場合は、いつでも元の方程式に最終的な数値を代入して、正しいことを確認できます。)
次に、2つの方程式が残ります。手で方程式を解くことができる場合、xの方程式が得られ、それを評価するプログラムを作成するだけです。それ以外の場合は、2つの方程式と2つの未知数のシステムで一般的なアプローチを使用します。
一般に、既知の量が与えられた未知数x1、x2、... xnの線形方程式を解くには、それらを標準形式(AおよびB係数が既知)に入れます:
A11*x1 + A12*x2 + A13*x3 ... + A1n*xn = B1
A21*x1 + A22*x2 + A23*x3 ... + A2n*xn = B2
.
.
.
An1*x1 + An2*x2 + An3*x3 ... + Ann*xn = Bn
または、マトリックス形式:
Ax = B
これにはxを解決する多くの方法があります。 wikipedia を参照してください。大規模システムの標準的な方法。
2つの方程式と2つの未知数のシステムの場合:
A11*x1 + A12*x2 = B1
A21*x1 + A22*x2 = B2
先に進んで Cramerのルールを使用できる十分な方程式があります。 Cramerのルールは、数値の精度とエラーに対する感度の両方、および他の手法と比較して非常に遅いため、大きなNに対してひどいです。ただし、N = 2の場合は問題ありません。