2009-10-21 6 views
0

Je veux résoudre x. Comment puis-je le faire dans Scheme?Résoudre X à partir d'équations linéaires dans le schéma?

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 

Mon essai est:

(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 
+0

On dirait que vous avez quelques fautes de frappe/confusion: sont les variables "GM" et "Gm", ou sont-elles égales à G * M et G * m respectivement? (plus tard vous dites M = 20 et m = 80, et ne faites aucune mention de G, sauf si vous voulez dire la constante gravitationnelle) –

+0

G est une constante gravitationnelle, en effet. – hhh

Répondre

3

Je ne sais pas pourquoi vous créez toutes les fonctions d'ordre supérieur, il rend les choses confuses à mon avis. Au lieu de cela, époussetez votre chapeau d'algèbre et mettez un peu de réflexion dans ceci.

Vous avez 5 équations avec 5 inconnues. (F1, F2, T1, T2 et x). Trois de ces équations (T1-F2=0, F1=0.1*T1 et F2=0.3*T2) sont triviales, comme vous semblez le réaliser, donc éliminer 3 des inconnues dès le départ par substitution, par ex. partout où vous voyez T1, mettez F2 à sa place depuis T1 = F2. (Si vous êtes comme moi et que vous n'avez pas confiance en vous, vous pouvez toujours remplacer les chiffres finaux par les équations d'origine pour vérifier que vous avez bien compris.)

Ensuite, il vous reste deux équations. Si vous pouvez résoudre les équations à la main, vous aurez une équation pour x et il vous suffira d'écrire un programme pour l'évaluer. Sinon, utilisez l'approche générale avec un système de 2 équations et 2 inconnues.

En général, pour résoudre des équations linéaires pour les inconnues x1, x2, ... xn, compte tenu des quantités connues, les mettre en forme standard (où les coefficients A et B sont connues):

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 

ou , sous forme matricielle:

Ax = B 

Cela a plusieurs façons de résoudre pour x, voir wikipedia; la méthode standard pour les grands systèmes.

Pour un système de 2 équations et 2 inconnues:

A11*x1 + A12*x2 = B1 
A21*x1 + A22*x2 = B2 

il y a quelques équations assez que vous pouvez aller de l'avant et d'utiliser Cramer's Rule. La règle de Cramer est terrible pour un grand N, à la fois en raison de la précision numérique et de la sensibilité à l'erreur, et parce qu'elle est très lente par rapport aux autres techniques. Mais pour N = 2, ça va.

Questions connexes