Numerisk lösning av diff. ekv.
Varför?
Vissa differentialekvationer kan vara ganska knepiga att lösa, men man kan ändå bilda sig en uppfattning om hur deras lösning ser ut genom att skissa ett så kallat riktningsfält. Genom att använda Eulers stegmetod kan man också beräkna approximativa funktionsvärden.
Den här appleten låter dig mata in en differentialekvation av första ordningen. Du kan sedan låta den rita lösningens riktningsfält, dvs små korta tangenter i olika punkter i planet. På så sätt kan du bilda sig en uppfattning om hur lösningskurvan ser ut.
För att beräkna funktionsvärden med Eulers stegmetod behöver du en startpunkt (x0, y0) att börja i. Du behöver också bestämma hur stora steg, dx, du vill ta. Ju större steg desto snabbare når du målet, men det blir även större fel.
Hur?
Börja med att skriva om din differentialekvation på formen y' = ett uttryck med x och y. Läs mer nedan om hur du skriver uttryck.
- I textrutan under "y' =" matar du in ditt uttryck och klickar på +knappen. Då sparas uttrycket i listan under rutan.
Eller också väljer du ett av de uttryck som redan finns i listan. - Klicka sedan på knappen "Draw field".
- För att beräkna funktionsvärden anger du startvärdena x0, y0 och steglängden dx i respektive fält.
- Stega dig nu fram med knappen "One step" och se hur lösningskurvan ritas. Är du otålig kan du istället ta fem steg i taget.
- För varje steg beräknas ett nytt y' och med hjälp av det ett nytt y-värde. Alla värden visas i fönstret under grafen.
Om du ändrar startpunkt eller steglängd måste du klicka på "Restart"-knappen innan du kan börja om.
Du kan ställa in vilken del av koordinatsystemet som visas genom att klicka på "Set coords".

Syntax för uttryck
Programmet följer de vanliga reglerna för i vilken ordning räkneoperatioern ska utföras.
För decimaltal används punkt som decimaltecken.
Du kan använda följande symboler och funktioner i de uttryck du matar in:
| + | för addition. |
|---|---|
| - | för subtraktion och negativa tal. |
| * | för multiplikation. |
| / | för division. |
| ^ eller ** |
för upphöjt till. (^ fungerar inte på alla system, använd ** istället. 2**3 är alltså detsamma som 23.) |
| ( och ) | för att kunna skapa mer sammansatta uttryck. |
| pi | |
| sqrt(x) | roten ur x, (x>=0). |
| sin(x) | sinus för x, (x i radianer). |
| cos(x) | cosinus för x, (x i radianer). |
| tan(x) | tangens för x, (x i radianer). |
| asin(x) | arcussinus för x, (-1<x<1 och svaret i intervallet
[- |
| acos(x) | arcuscosinus för x, (-1<x<1 och svaret i
intervallet [0, |
| atan(x) | arcustangens för x. |
| exp(x) | ex, (e = 2.718...). |
| log(x) | naturliga logaritmen för x, (x>0). |
MathParser.java
För att kunna tolka och beräkna sådana här inmatade matematiska uttryck i ett program
behöver man en "parser".
Om någon matar in 2+3*5 i ett textfält vill jag i programmet kunna spara talet 17 i en
variabel. Vill jag dessutom kunna använda funktioner och mer komplexa uttryck blir det
jobbigt att programmera.
Som tur är finns det folk som redan gjort detta. I mina matteappletar använder jag en
parser som skrivits av Ari Y.
Benbasat.
Du
kan ladda ner den härifrån.