Fonction qui comprend un dérivé comme:
df = -2 * x * y (x) * Dérivée (y (x), x) - y (x) ** 2
I ont la valeur de Derivative (y (x), x) mais je ne sais pas comment faire un abonnement
x= sp.symbols('x ') y=sp.Function("y")(x) f = sp.Function("f")(x,y) f = -x*y**2 f_num = f.subs([(y,1),(x,2)]) df = sp.diff(f,x) # I have to calculate df_num value by using(subs) respect x,y,Derivative(y(x), x)
merci à tous ceux qui aident
p >
3 Réponses :
Est-ce que cela fait ce que vous voulez dire?
import sympy as sp x= sp.symbols('x') y=sp.Function("y")(x) f = sp.Function("f")(x,y) f = -x*y**2 f_num = f.subs([(y,1),(x,2)]) df = sp.diff(f,x) df = df.subs(sp.diff(y,x),1) sp.pprint(df)
J'essaie d'utiliser l'extension de série de Taylor pour les méthodes numériques.Je comprends que je vais partager la version finale lorsque le code fonctionne, merci pour votre soutien
Merci de m'avoir enfin donné 50 rep: D
Vous devez être prudent lorsque vous faites des sous-marins lorsque des dérivés et des fonctions sont présents. La réponse courte est:
df = f.diff(x) df_num = df.subs([(y.diff(x),1), (y,1), (x,2)])
où le dérivé (qui dépend de y) est fait avant y et y (qui dépend de x) est fait avant x.
Supplémentaire commentaires: 1) notez que vous définissez f comme f (x, y) et que vous le définissez immédiatement après comme l'expression -x * y ** 2
; la première définition n'est pas nécessaire. 2) vous définissez f_num
mais cela n'a aucun impact sur le calcul de la valeur numérique de df
.
f_num affecte les valeurs de df_num pas directement df merci beaucoup pour vos réponses
L'équation différentielle ordinaire me donne f et j'ai essayé de résoudre ce problème numériquement en utilisant le développement en série de Taylor cubique (TS3). Les valeurs initiales sont connues x = 2 et y = 1 et nous essayons de trouver les valeurs de la fonction à x = 2.5.
x= sp.symbols('x ') y=sp.Function("y")(x) f = sp.Function("f")(x,y) # f is actually y'(derived of y ) x0 = 2 y0 =1 f = -x*y**2 # ordinary differential equation and its derivatives line 33 to 35 df = sp.diff(f,x) dff = sp.diff(f,x,2) y_num = [] h = 0.1 # step size k = 0 while x0<2.5: f_num = f.subs([(y,y0),(x,x0)]) df_num = df.subs(y.diff(x),f_num).subs([(y,y0),(x,x0)]) dff_num = dff.subs(y.diff(x,2),df_num).subs(sp.Derivative(y, x),f_num).subs([(y,y0),(x,x0)]) y_num.append(y0 + h*f_num + h**2/2*df_num+h**3/6*dff_num) y0 = y_num[k] x0 = x0+h k=k+1 print(x0) print(y_num)
Je ne sais pas que c'est un article utile ou puis-je m'exprimer correctement mais merci pour tout intérêt et réponses