2017-05-23 2 views
0

Supposons a est une constante et x est ma variable par rapport au temps, donc fondamentalement x (t).Maxima simplifier l'expression avec diff

Puis dans Maxima, quelle est la meilleure façon de remplacer 'diff(a*x,t) par a*'diff(x,t) automatiquement sans utiliser subst commande.

La raison pour laquelle je n'utilise pas subst est que j'ai beaucoup de variables et de dérivées d'ordre supérieur. Il n'est pas efficace d'utiliser subst pour remplacer toutes les occurrences.

Merci.

MISE À JOUR

J'ai essayé avec commande depends(x,t), mais il fonctionne uniquement avec le cas simple. Voici un exemple minimal de ma situation.

depends([x,y],t); 
eq1:diff(x,t)-b=c; 
eq2:subst([x=a*y],eq1); 
sol_dy=solve(eq2,diff(y,t)) 

Bien entendu, a, b, c sont des constantes et x, y sont des variables sur t. Maxima ne peut pas résoudre diff (y, t) directement. Comment faire face à cela?

Répondre

0

je vois que 'diff(...) (à savoir l'expression dérivée de nom) ne sont pas linéaires (ne distribue pas sur + et ne tient pas compte des constantes) mais diff(...) (expression verbe) est linéaire. C'est un mauvais fonctionnement, au moins.

J'allais suggérer declare(nounify(diff), linear) mais cela fait que les dérivées sortent comme 0 dans votre exemple ... c'est probablement un bug, je vais devoir y penser plus.

Essayez ev(eq2, nouns); pour réévaluer les dérivés sous forme de verbes - je pense que cela devrait faire en sorte que la constante soit éliminée.