2017-08-12 5 views
0

Es gibt die folgende Formel:Mathematica, vereinfachen Gleichung mit subsitutions

s = R*(lat - lat0) 
rho = R/Tan[lat] 
f = (x^2 + (rho + s - y)^2 - rho^2)*(Sin[lat])^2 

und seine Ableitung

fd = D[f, lat] 

wo

Output[1] = 2 Cos[lat] (x^2 - R^2 Cot[lat]^2 + ((lat - lat0) R - y + R Cot[lat])^2) Sin[lat] + 
(2 R^2 Cot[lat] Csc[lat]^2 + 2 ((lat - lat0) R - y + R Cot[lat]) (R - R Csc[lat]^2)) Sin[lat]^2 

Ich mag würde fd unter Verwendung der Substitutionen von auszudrücken s, rho

FullSimplify[fd, TransformationFunctions -> {Automatic, # /. R (lat - lat0) -> s &, # /. R/Tan[lat] -> rho &}] 

jedoch nur die vereinfachte Formel ohne Substitution erscheint:

Output[2] = 2 Cos[lat] ((1 + (lat - lat0)^2) R^2 + x^2 + 2 (-lat + lat0) R y + y^2 + R (lat R - lat0 R - y) Cot[lat]) Sin[lat] 

Vielen Dank für Ihre Hilfe.

Antwort

1

die Substitution Versuchen und bestätigen, dass das Ergebnis

s = R*(lat - lat0); 
rho = R/Tan[lat]; 
f = (x^2 + (rho + s - y)^2 - rho^2)*(Sin[lat])^2; 
fd = D[f, lat]; 
FullSimplify[fd, TransformationFunctions->{Automatic, 
    #/.R(lat-lat0)->s&, #/.R/Tan[lat]->rho &}]; 
Simplify[% == fd] 

unverändert ist und der Ausgang ist True

Beachten Sie, dass Sie vorher definiert s=R*(lat-lat0) so scheint es, dass Sie R(lat-lat0) mit R(lat-lat0)

ersetzen Versuchen Sie undefined s, bevor Sie den Austausch

vornehmen
s =.; 
FullSimplify[fd, TransformationFunctions -> {Automatic, 
    #/.R(lat-lat0)->s&, #/.R/Tan[lat]->rho&}] 

und das Ergebnis ist 2 Cos[lat](R(s-y)Cos[lat]+(R^2+x^2+(s-y)^2)Sin[lat])

Nun, warum nicht die R/Tan[lat] Austauscharbeiten in den ursprünglichen fd?

D[f, lat]==2 Cos[lat](x^2-R^2 Cot[lat]^2+((lat-lat0)R-y+R Cot[lat])^2) Sin[lat]+(2 R^2 Cot[lat]Csc[lat]^2+2((lat-lat0)R-y+R Cot[lat])(R-R Csc[lat]^2)) Sin[lat]^2

Hinweis gibt es keine R/Tan[lat], dass. Mathematica Mustervergleich ist sehr wörtlich und hat keine Fähigkeit zu verstehen, dass R/Tan[lat]==R Cot[lat] Vor vielen Jahren gab es ein Paket, das ein Typ schrieb, die "mathematische Substitutionen" anstelle der Mathematica "literale Substitutionen", aber das ist veraltet und ich don ' Ich weiß genug, um das mit den aktuellen Versionen zu machen.

Lassen Sie uns stattdessen die R Cot[lat] Ersetzung versuchen und undefiniert Rho, so dass keine Substitution rückgängig gemacht wird.

s =.; rho =. 
fd /. {R Cot[lat] -> rho} 

Das Ergebnis ist 2 Cos[lat](x^2+((lat-lat0)R+rho-y)^2-R^2 Cot[lat]^2) Sin[lat]+(2 R^2 Cot[lat]Csc[lat]^2+2 ((lat-lat0)R+rho-y)(R-R Csc[lat]^2))Sin[lat]^2

Beachten Sie, dass R^2 Cot[lat]^2 bleibt und wieder wörtliche Substitution nicht weiß, dass Sie wahrscheinlich R Cot[lat]->rho erwarten, dass in rho^2 zu ändern, so dass Regel hinzufügen

s=.; rho=. 
fd /. {R Cot[lat] -> rho, R^2 Cot[lat]^2 -> rho^2} 

Beachten Sie, dass R^2 Cot[lat] bleibt und Sie wahrscheinlich gemeint, dass durch R rho ersetzt werden, so fügen Sie diese Regel hinzu.

s =.; rho =. 
fd /. {R Cot[lat]->rho, R^2 Cot[lat]^2->rho^2, R^2 Cot[lat]->R rho} 

Beginnen Sie die Idee, dass Muster Substitution in Mathematica zu erhalten eine dunkle und Zwirn Flur führt zu einer Tür beschriftet werden kann „Frustration.“

Es gibt einen Trick, den Sie möglicherweise verwenden können.

Simplify[fd, R Cot[lat] == rho] 

, die versuchen, fd zu vereinfachen und versuchen, in der Regel R Cot[lat] mit rho zu ersetzen. Und in diesem speziellen Beispiel, das funktioniert sogar mit

Simplify[fd, R/Tan[lat] == rho] 

Aber es gibt keine Garantie, dass dies immer arbeitet oder tun, was Sie wollen, und in einigen Fällen wird dies tun, noch seltsame und bizarre Dinge.

Vielleicht gibt Ihnen das genug Hinweise, dass Sie etwas Fortschritte machen können.

+0

@ Bill: Vielen Dank für Ihre Erklärung und Kommentare .... – justik

Verwandte Themen