4 svar
212 visningar
lund behöver inte mer hjälp
lund 529
Postad: 3 dec 2020 01:07

Symbolisk derivering

Hej, Jag vill utföra en symbolisk derivering i python på ett visst polynom p = 2+ x2 och jag har fått till en program som utför detta korrekt. Men just nu är p (polynomet) definierat enligt nedan och jag vill istället ha den definierad som en lista p = [2,0,1] och jag vill även att dess output ska bli en lista enligt [0,2] men med min nedanstående programmering blir den 2x. Hur kan jag ordna detta?

import sympy as sym

sym.Symbol('x')

p = 2 + x ** 2 # vill definiera denna som en lista p = [2,0,1]

print(sym.diff(p))


>>> Out: 2*x # vill ha denna output som [0,2] 
Skaft 2373 – F.d. Moderator
Postad: 3 dec 2020 09:03

Då kanske numpy.polyder är bättre lämpad än sympy?

lund 529
Postad: 3 dec 2020 10:34

Ja det tänkte jag också först men övergår det inte till en numerisk derivering då istället för en symbolisk?

Skaft 2373 – F.d. Moderator
Postad: 3 dec 2020 11:20

Är det en inexakt derivata du vill undvika? Jag vågar nog påstå att polyder inte räknar approximativt, utan att den tar fram de exakta koefficienterna enligt deriveringsreglerna. Polynom är ju lättderiverade - koefficienten multipliceras med exponenten, exponenten minskar med ett. Det är inga problem att göra den processen exakt i en dator (iallafall om polynomet har heltalskoefficienter), så det finns inget skäl till varför den skulle ta till en generell, approximativ deriveringsmetod.

Sen om det kallas "symbolisk derivering" vet jag inte. Den använder ju inga symboler (som 'x'). 

lund 529
Postad: 3 dec 2020 15:31
Skaft skrev:

Är det en inexakt derivata du vill undvika? Jag vågar nog påstå att polyder inte räknar approximativt, utan att den tar fram de exakta koefficienterna enligt deriveringsreglerna. Polynom är ju lättderiverade - koefficienten multipliceras med exponenten, exponenten minskar med ett. Det är inga problem att göra den processen exakt i en dator (iallafall om polynomet har heltalskoefficienter), så det finns inget skäl till varför den skulle ta till en generell, approximativ deriveringsmetod.

Sen om det kallas "symbolisk derivering" vet jag inte. Den använder ju inga symboler (som 'x'). 

Okej, tusen tack! Jag kollar på numpy då istället!

Svara
Close