Maxima: For den dovne matematiker
Maxima er det man kalder et CAS, Computer Algebra System, hvilket vil sige, at det er en avanceret lommeregner. I denne artikel vil vi kigge lidt på den funktionalitet som Maxima udbyder, samt vise hvordan man kan løse enkle matematiske problemer med minimalt besvær.
Først skal vi lige have styr på den basale del af Maxima. I Ubuntu skal du skrive kommandoen,
sudo aptitude install maxima
for at installere programmet. Jeg vil lige gøre opmærksom på, at Maxima kører i terminalen. Det skal dog ikke skræmme dig fra at prøve det, hvilket du gør ved, at skrive,
maxima
i terminalen. Der findes også en grafisk brugerflade til Maxima som jeg måske vil dække senere i en anden artikel.
Du vil nu se en besked fra Maxima som fortæller om hvilken version du har installeret og lidt om licensen. Den sidste linje skulle gerne ligne dette,
(%i1)
Hvis du nu taster 2 + 2;
på tasterne og trykker enter, skulle du gerne se følgende,
(%i1) 2 + 2;
(%o1) 4
Du kan også udregne mere avancerede ting, så som,
(%i2) sin(0.5) * (sqrt(%pi) + 1);
(%o2) 0.4794255386042 (sqrt(%pi) + 1)
For at få et forståeligt tal, altså et læsbart resultat, kan du bruge funktionen float()
,
(%i3) float(sin(0.5) * (sqrt(%pi) + 1));
(%o3) 1.329185180725674
Så Maxima understøtter altså en hel del funktioner. Her fik vi demonstreret en af de trigonometriske funktioner, samt kvadratrods funktionen. Men Maxima kan langt mere end dette. Den er en veludrustet symbolsk solver. I dette eksempel starter vi med, at deklarere to funktioner,
(%i4) f(x) := 2*x + 5;
(%o4) f(x) := 2*x + 5;
(%i5) g(x) := -0.5*x - 3;
(%o5) g(x) := -0.5*x - 3;
Vi kan nu finde skæringspunktet af de to linjer ved at finde det punkt hvor de to funktioner er ens, derfor løser vi ligningerne for x
,
(%i6) float(solve(f(x) = g(x), x));
(%o6) [x = - 3.2]
Nu ved du hvordan man løser almindelige ligninger i Maxima. Det er også muligt at differentiere ligninger, som f.eks.,
(%i7) h(x) := 4*x^2 + 0.5*x - 9;
(%o7) h(x) := 4*x^2 + 0.5*x - 9
(%i8) diff(h(x), x);
(%o8) 8 x + 0.5
Vi kan selvfølgelig også integrere ligningen for et specifikt interval, f.eks. for x
mellem 0 og 10,
(%i9) integrate(8 * x + 0.5, x, 0, 10);
(%o9) 405
En sidste nyttig ting er, at du kan deklarere variabler. Dette gøres med kolon operatoren,
(%i10) r : 4.5;
(%o10) 4.5
(%i11) float(2 * %pi * r);
(%o11) 28.27433388230814
Du bør nu kende til de mest basale redskaber i Maxima. Det kan på det stærkeste anbefales, at læse noget af al den anden glimrende dokumentation der findes om Maxima. Heraf kan anbefales,
- A 10 minute tutorial for solving Math problems with Maxima
- Introduction to Maxima
- Maxima reference manual in English
- Log in to post comments
Kommentarer18
TeXmacs som maxima-interface
Dejlig artikel, Linnk!
jeg bruger Maxima rigtig meget.
Vidste du, at TeXmacs fungerer som interface til Maxima? Det betyder, at man kan foretage inline beregninger i sin artikel, rapport m.m. TeXmacs kan oversætte formatteret matematisk input (integraltegn, summationstegn osv) til Maxima-kode og den anden vej, så man kan få smukt formatteret input og output fra maxima i sit dokument. Og der er endnu flere muligheder end det. Læs denne artikel for en nem og pædagogosk vejledning i at bruge Maxima sammen med TeXmacs.
Ubuntu har et problem i denne sammenhæng: i stedet for bash linker den sin sh til dash, og det ødelægger kompatibiliteten med TeXmacs/Maxima-interfacet. Dette er dog utrolig nemt at rette: Åbn filen /usr/lib/texmacs/TeXmacs/bin/maxima_detect. Denne skal åbnes med administratorrettigheder, for eksempel ved at trykke Alt+F2 og skrive
gksudo "gedit /usr/lib/texmacs/TeXmacs/bin/maxima_detect"
(her skal citationstegnene med!)Når filen er åbnet, ændrer man den første linje fra "#!/bin/sh" til "#!/bin/bash" (uden citationstegnene), genstarter TeXmacs, og vupti! finder den Maxima-plugin'et.
En anden ting man kan komme til at savne er muligeden for at få et plot til at vise sig i dokumentet i stedet for i et separat vindue. For at give denne mulighed kan man hente scriptet tmplot, som tilføjer denne funktionalitet. Download arkivet på siden, kør installeringsscriptet og skriv
load(tmplot)
som det første i din session, så kan du ved at køre kommandoen tmplot eller tmplot3d få dine grafer til at optræde smukt inde i dokumentet. Yderligere info kan findes på tmplot-siden.Cool
Ahh super nice. Det er jo fuldstig som Ti-89'eren. :P
Installerer man btw. Maxisma på samme måde i OpenSUSE?
Re: Maxima: For den dovne matematiker
Tilføj Buildservice_science som kilde i opensuse, og installer det vha. Yast.
Overvej også at installere wxmaxima.
Re: Maxima: For den dovne matematiker
Kender godt til TeXmacs, men har ikke haft mulighed for at prøve det da jeg bruger TeXlive og TeXmacs gerne vil have, at jeg bruger (tetex tror jeg det er) en anden LaTeX distribution (oh, og så foretrækker jeg, at skrive LaTeX i hånden, bare for, at lære det grundigt).
Glæder mig, at I kunne lide artiklen. Planlægger, at skrive en som omhandler det grafisk interface til Maxima.
Til sidst planlægger jeg, at omskrive de referencer jeg har til gnuplot, LaTeX, maxima og fityk til en guide som kan bruges af studerende, da det er de værktøjer jeg bruger på min uddannelse som erstatning for de Windows programmer som skolen tilbyder os.
Ville det have nogen interesse?
Re: Maxima: For den dovne matematiker
Du kan i givet fald se på den artikel som tjansson er medforfatter på: http://www.gamma.nbi.dk/Galleri/gamma140/frieprog.pdf
den kan sagtens tåle en udvidelse, men der er jo ikke nogen grund til ikke at lade sig inspirere den.
På Ubuntu 7.10 har jeg ikke noget ptoblem med at få TeXmacs og TeXLive til at spille sammen. Foretrækker også rendyrket LaTeX, men jeg sværger, teXmacs er et dejligt, dejligt interfave til TeXmacs, Gnuplot, Shell, Octave, Matlab, maple, Mathematica, Mupad, ...
iMaxima til emacs
God artikel! - Jeg stødte selv på Maxima lidt ved et tilfælde, og synes virkeligt det har været meget brugbart, og nemt at have med at gøre.
I forlængelse af det lusepuster skriver vedr. TeXmecs: Hvis man ikke ønsker et direkte stand-alone program, som TeXmecs, kan man benytte sig af iMaxima, som er et plugin(?) til emacs. Dette plugin gør det muligt at få genereret LaTeX-formaterede formler, som man så kan kopiere ind i sit LaTeX-dokument nemt og bekvemt.
Bruger selv emacs sammen med imaxima, da TeXmecs ikke faldt helt i min smag.
På http://members3.jcom.home.ne.jp/imaxima/Site/Welcome.html kan der findes nogle screenshots og information omkring imaxima - og selvfølgelig download mulighed :)
Obs. Man skal være opmærksom på at man skal bruge "breqn"-pakken til LaTeX for at overstående virker. Pakken ligger f.eks. i "texlive-math-extra" i Debian/ubuntu.
Mvh. Morten
Hvordan løser man en matematisk ligning?
Jeg synes det er synd og skam at man ikke bruger opensource noget mere.
Jeg er matematiklærer i Virum, og jeg ved hvor store problemer der er med at distribuere licenser til MathCad og Maple.
Maxima er frit tilgængeligt, og det er let at installere.
Se her
http://kortlink.dk/6xmv
Venligst
Søren Toft
Re: Hvordan løser man en matematisk ligning?
Til elever i folkeskolen vil jeg hellere anbefale SMath Studio end Maxima. Interfacet er meget lig MathCad og programmet er nemt at komme i gang med. Det er dog ikke open source og kræver Mono for at køre, så der er nok nogle som ikke vil røre det. Det kører desuden på Windows desktops og smartphones hvis man er til sådan noget.
SMath har også funktioner som solve og kan plotte funktioner i både 2D og 3D.
http://en.smath.info/forum/default.aspx?g=posts&t=202
Udvikles af en russer som ser ud til at være meget lydhør overfor nye forslag.
/Lars
#7
Jeg er ked af at sige
#7
Jeg er ked af at sige det, men jeg kan desværre ikke åbne din side, da den er i et eller andet MS-format, der kræver et plugin for at virke.
Tror det ville være smart at gemme i et mere tilgængeligt format, hvis du vil noget med dit open source budskab :D.
Re: Maxima: For den dovne matematiker
Flere artikler om matematik tak!
#9 tak for linket, har aldrig set det før, meget spændende.
Forklaring på Regression formlen i maxima
Er der nogle der kan forklare mig simple_linear_regression
Efter som det ikke er særligt uddybet i manulaen http://maxima.sourceforge.net/docs/manual/en/maxima.pdf. se side 934.
That's a hell of a question
That's a hell of a question ...
Måske kan dette hjælpe
http://da.wikipedia.org/wiki/Regressionsanalyse#Simpel_line.C3.A6r_regr…
God artikel, keep 'em coming
God artikel, keep 'em coming :-)
Vil lige slå et slag for Octave, Godt alternativ til Matlab.
#13
Har du set dato for artikel? 2008!!
Ups næh, det havde jeg
#14:
Ups næh, det havde jeg nu godt nok ikke. - doh, min fejl! :-S
SF har jeg det.
Men derfor kan man da godt spørge i denne tråd i stedet for at oprette en ny.
For samtidigt ville folk der ikke kendte til maxima eller wxmaxima læse den glimrende artikkel. Så jo jeg ved godt den er gammen. Men programmet er ret godt. For står bare ikke output'et fra simpel_linear_regression.
Og der er ikke et decideret maxima forum med mindre der snakkes om en bil hvilken jeg ikke har brug for at vide noget om.
SF har jeg det.
Men derfor kan man da godt spørge i denne tråd i stedet for at oprette en ny.
For samtidigt ville folk der ikke kendte til maxima eller wxmaxima læse den glimrende artikkel. Så jo jeg ved godt den er gammen. Men programmet er ret godt. For står bare ikke output'et fra simpel_linear_regression.
Og der er ikke et decideret maxima forum med mindre der snakkes om en bil hvilken jeg ikke har brug for at vide noget om.
For står bare ikke
#17: For står bare ikke output'et fra simpel_linear_regression.
Er det matematikken eller softwaren, du ikke forstår?
Som det fremgår af manualen returnerer den et inference_result objekt. Du kan trække de enkelte parametre ud af objektet med bl.a. 'take_inference'. Fx.:
load("stats");
s:[[125,140.7], [130,155.1], [135,160.3], [140,167.2],[145,169.8]];
z:simple_linear_regression(s,conflevel=0.99);
take_inference(model,z);
Returnerer:
1.405999999999985*x-31.18999999999804