Computer Algebra

Dit is de plek voor onzin, off-topic gebrabbel en idiote moppen.
Plaats reactie
magicsander
Vast lid
Vast lid
Berichten: 58
Lid geworden op: 09 jul 2009, 19:01

Computer Algebra

Bericht door magicsander » 28 okt 2009, 18:40

Je hebt het vast al eens gezien, een computer die een vergelijking kan oplossen, of zelfs kan integreren. WolframAlpha en Matlab zijn voorbeelden. Wat ik me nou afvroeg is hoe ze dat hebben geprogrammeerd en hoe de computer een probleem kan oplossen.
Ik probeer het ook zelf na te doen en ik ben een programma aan het schrijven. Het probleem is echter dat het erg ingewikkeld is. Ik laat mijn programma een (lineare) vergelijking nu oplossen zoals een mens dat zou doen, aleen dat lijkt heel erg Inefficiënt.
Dus hebben jullie enig idee?

arie
Moderator
Moderator
Berichten: 3911
Lid geworden op: 09 mei 2008, 09:19

Re: Computer Algebra

Bericht door arie » 29 okt 2009, 10:28

Zo'n programma schrijven lijkt me een behoorlijk grote klus.
Je programma moet ten eerste de invoer kunnen interpreteren en vervolgens de oplossing van het probleem zien te vinden, zo die oplossing al bestaat.

Ook de bestaande programma's kunnen nog steeds niet alles oplossen.
Kijk voor symbolische integratie bijvoorbeeld eens naar http://en.wikipedia.org/wiki/Risch_algorithm.
Als je de daar gegeven voorbeeldfunctie in Wolfram Alpha stopt (copy/paste):
integral((x^2+2x+1+(3x+1)*sqrt(x+ln(x)))/(x*sqrt(x+ln(x))*(x+sqrt(x+ln(x)))))dx
kan Wolfram de primitieve niet vinden, maar dit programma kan wel de afgeleide vinden van de primitieve, voer maar in (copy/paste):
d(2*sqrt(x+ln(x))+2*ln(x+sqrt(x+ln(x))))/dx

Als je al deze problemen hebt overwonnen, lijkt het me ook wel handig dat je als volgende stap een probleemvertaler maakt die Nederlandse teksten kan lezen. Dan kan je programma tenminste ook je huiswerk maken. ;-)

magicsander
Vast lid
Vast lid
Berichten: 58
Lid geworden op: 09 jul 2009, 19:01

Re: Computer Algebra

Bericht door magicsander » 29 okt 2009, 21:39

Ik heb al scripts geschreven voor herleiden en uitdrukken in factoren, alleen nog maar linear. Ik ben nu bezig met de vergelijkingen. Ik moet het invoer-systeem ook verbeteren, want nu moet ik zelf aangeven wat de coefficenten zijn en wat de variabelen zijn.
Voorbeeld:
voer in:factor_terms(11,x,55,y)
en je krijgt:11(1x+5y)

Plaats reactie