Maximo systemegenskapers historikvärden. En manual för att arbeta med maxima. Individuellt arbete med kort

Efter lansering Maxima Programfönstret visas, i den övre grafiska delen av gränssnittsfönstret anges vilken version som är laddad. Låt oss försöka skriva några kommandon. Kommandoavgränsaren är symbolen “ ; ” (i tidigare versioner Maxima och några av dess skal, närvaron av ett semikolon efter varje kommando är absolut nödvändigt, så det rekommenderas att lägga till; efter varje kommando).

Efter att ha angett kommandot måste du trycka på tangenterna Flytta Och Stiga på att bearbeta det och mata ut resultatet. Efter inmatning tilldelas varje kommando ett sekvensnummer (%i1), (%i2), (%i3), etc. Resultaten av beräkningarna har ett motsvarande serienummer (%o1), (%o2), etc. Där "i" är en förkortning för engelska. input (input), och "o" är engelska. produktion. Detta gör att du kan skriva ytterligare kommandon för att referera till tidigare skrivna, till exempel kommer (%i1)+(%i2) att innebära att du lägger till uttrycket för det andra till uttrycket för det första kommandot och sedan beräknar resultatet. Du kan också använda antal beräkningsresultat, till exempel så här (%o1)*(%o2). maxima matematik graf funktion

Symbolerna som används för att mata in kommandon. Ange numerisk information

Regler för inmatning av siffror Maxima exakt samma som för många andra liknande program:

  • * Hela och bråkdelar av decimalbråk separeras av punktsymbolen.
  • * Negativa tal föregås av ett minustecken.
  • * Täljaren och nämnaren för vanliga bråk separeras med symbolen / (snedstreck).

Observera att om resultatet av en operation är ett visst symboliskt uttryck, men du behöver få ett specifikt numeriskt värde i form av ett decimaltal, så kan du lösa detta problem genom att använda sifferoperatorn. I synnerhet låter det dig gå från vanliga bråk till decimaler.

Konstanter

I Maxima För att underlätta beräkningen finns det ett antal inbyggda konstanter:

Aritmetiska operationer

För att beteckna aritmetiska operationer i Maxima matematiska tecken används: "+" - addition, "-" - subtraktion, "*" - multiplikation, "/" - division.

Exponentiering kan betecknas på tre sätt: ^, ^^, **.

Extrahera roten till en examen n skrivet som examen ^^(1/ n).

Låt oss komma ihåg en annan inbyggd Maxima En användbar operation är att hitta ett tals fakultet. Denna operation indikeras med ett utropstecken.

Till exempel, 6!=1. 2. 3. 4. 5. 6=120.

Att öka prioritet för en operation, som i matematik, när man skriver kommandon för Maxima använd parenteser ()

Variabler

Variabler används för att lagra resultaten av mellanliggande beräkningar. Observera att när du anger namnen på variabler, funktioner och konstanter är bokstäverna viktiga, så variabler x Och X- det här är två olika variabler. Att tilldela ett värde till en variabel görs med hjälp av symbolen

: (kolon), Till exempel, x: 5-"variabel X tilldelas värdet 5" eller b: a^2+3- "variabel b kommer att ha samma värde a2+3». -

Om det är nödvändigt att ta bort värdet på en variabel (rensa den), används killmetoden:

döda( x) - ta bort värdet på en variabel x;

kill(all) - ta bort värdena för alla tidigare använda variabler.

Dessutom startar kill en ny numrering för körbara kommandon.

Matematiska funktioner

I Maxima Det finns en ganska stor uppsättning inbyggda matematiska funktioner. För att skriva en funktion måste du ange dess namn och sedan, inom parentes, skriva argumentens värden, separerade med kommatecken.

Till exempel synd( x);

Man bör komma ihåg att vissa funktionsnamn skiljer sig från de namn som används i inhemsk litteratur:

Beteckning

Trigonometrisk

sin(x) (sinus),

cos(x) (cosinus),

tan(x) (tangens),

cot(x) (kotangens),

sek(x) (sekant,),

csc(x) (cosecant,).

Omvänd trigonometrisk

asin(x) (arcsine),

acos(x) (bågekosinus),

atan(x) (arctangens),

acot(x) (arc cotangens).

Hyperbolisk

sinh(x) (hyperbolisk sinus),

cosh(x) (hyperbolisk cosinus),

tanh(x) (hyperbolisk tangens),

coth(x) (hyperbolisk kotangens),

sek(x) (hyperbolisk sekant),

csch(x) (hyperbolisk cosecant).

Naturlig logaritm,

Resten av divisionen

Roten ur

Minsta element från listan

Maximalt antal element från listan

Anpassade funktioner

Användaren kan definiera sina egna funktioner. För att göra detta, ange först namnet på funktionen, namnen på argumenten listas inom parentes, efter tecknen: = (kolon och lika) finns en beskrivning av funktionen. När den väl har angetts anropas den användardefinierade funktionen precis som inbyggda funktioner Maxima.

Maxima är ett annat program för att utföra matematiska beräkningar, symboliska transformationer och skapa en mängd olika grafer. Komplexa beräkningar formaliseras i form av separata procedurer, som sedan kan användas för att lösa andra problem. Maxima-systemet distribueras under GPL-licensen och är tillgängligt för både Linux- och MS Windows-användare.

För att arbeta med det här systemet i Linux OS, skriv kommandot i skalfönstret maxima eller xmaxima för att lansera sitt grafiska skal. Ett annat praktiskt verktyg för att arbeta med Maxima-systemet är programmet texmacs. I verktygsfältet för detta program finns en knapp med en bild av en bildskärm, genom att klicka på vilken öppnar en meny för att välja en interaktiv session. Genom att välja maxima-posten kan du starta en session med det här programmet.

När resultaten av beräkningar visas använder detta skal standard matematisk notation, medan xmaxima eller maxima endast använder tecken från ASCII-kodtabellen.

Vid uppstart visas viss information om systemet och en "etikett" (C1). Varje ingång och utgång markeras av systemet och kan sedan användas igen. Symbolen C (för kommando) används för att indikera kommandon som angetts av användaren, och D (för visning) används för att visa resultaten av beräkningar.

För att initiera beräkningsprocessen, skriv in ett kommando och sedan en symbol; (semikolon) och tryck på Enter. Om du inte behöver visa den mottagna informationen på skärmen, används symbolen $ istället för semikolon. Du kan komma åt resultatet av det senaste kommandot med hjälp av symbolen %. För att upprepa ett tidigare inmatat kommando, säg (C2), skriv bara in två apostrof och sedan den önskade kommandoetiketten, till exempel ""C2.

Maxima-systemet uppmärksammar inte skiftläge för tecken som anges i namnen på inbyggda konstanter och funktioner. Notation sin(x) är ekvivalent med notation SIN(x), men vid utmatning av resultat i textläge används stora bokstäver. Case är dock viktigt när man använder variabler, till exempel Maxima räknar x och x annorlunda variabler.

Notationen som används för matematiska standardkonstanter är %e (eller %E) för basen av naturliga logaritmer, %i (%I) för den imaginära enheten (kvadratroten ur -1) och %pi (%PI) för siffra
.

Att tilldela ett värde till en variabel görs med hjälp av tecknet : (kolon) och symbolen = (lika) används när ekvationer eller substitutioner specificeras.

(Cl) x:2; (Dl) 2 (C2) y:3; (D2) 3 (C3) x + y; (D3) 5

Fungera döda avbryter tidigare tilldelade variabelvärden. Parametern all till denna funktion tar bort värdet på alla variabler, inklusive Ci- och Di-etiketterna.

(C8) döda(x); (D8) KLAR (C9) x + y; (D9) x + 3 (C10) döda (alla); (DO) KLART (Cl) x + y; (Dl) y + x

För att slutföra arbetet med systemet, använd funktionen sluta med();, och beräkningsprocessen avbryts genom att trycka på tangentkombinationen Ctrl+c (följt av inmatning:q för att återgå till normal drift).

Hjälp om en viss funktion visas med kommando beskriva(funktionsnamn). När du arbetar i XMaxima grafiska skal kan du använda menyalternativet hjälp. Procedur exempel(funktionsnamn) visar exempel på hur funktionen används.

Ämne: Kommandosystem, beräkningar i Maxima.

Mål: fortsätt bekanta dig med Maxima-programmet, introducera Maxima-kommandosystemet; utveckla minne, uppmärksamhet; odla en informationskultur.

Under lektionerna:

    Organisatorisk start:

    Hälsningar.

    Arbetar med vakthavande befäl.

    Repetitiv träning börjar.

    Individuellt arbete med kort.

Kort nr 1.

    1. Konceptet med ett matematiskt beräkningssystem.

      Funktioner i det matematiska beräkningssystemet.

Kort nr 2.

    1. Begreppet datoralgebra.

      Funktioner i datoralgebra.

    Muntlig individuell undersökning.

Maxima koncept. Egenheter. Starta programmet.

Maxima programgränssnitt.

    Arbeta med att förstå och bemästra nytt material.

    Tillkännage ämnet och syftet med lektionen.

    Att lära sig nytt material.

Ange grundläggande kommandon i wxMaxima

Efter att ha startat wxMaxima visas programfönstret.

Den övre grafiska delen av Maxima-gränssnittsfönstret berättar att version 5.14.0 har laddats ner, att den distribueras under GNU-licensen, från vilken sida den är tillgänglig och vem dess förälder är. I det nedre fönstret i ENTER-fältet: Maxima är redo att acceptera kommandon. Kommandoavgränsaren är ett tecken; (semikolon). När du har skrivit in ett kommando måste du trycka på Enter för att bearbeta det och visa resultatet.

I tidiga versioner av Maxima och några av dess skal (till exempel xMaxima), och i konsolversionen, är närvaron av ett semikolon efter varje kommando absolut nödvändigt. Därför rekommenderar vi starkt när du använder Maxima

glöm inte att lägga till semikolon; efter varje kommando. I det fall uttrycket behöver visas och inte utvärderas måste det föregås av ett (")-tecken (enkelt citattecken). Men den här metoden fungerar inte när uttrycket har en explicit betydelse,

Maxim anser till exempel att uttrycket sin(π) är noll även i närvaro av en apostrof. Det är svårt att föreställa sig mångfalden av möjliga användningsområden för Maxima för att beräkna eller transformera uttryck. I svåra fall kan du försöka få ett certifikat på engelska. För att få hjälp, skriv bara? i ENTER-fältet. och tryck på Enter.

Beteckning av kommandon och beräkningsresultat

Efter inmatning tilldelas varje kommando ett serienummer. I figuren nedan är de inmatade kommandona numrerade 1–3 och betecknas (%i1), (%i2), (%i3) respektive. Resultaten av beräkningar har ett motsvarande serienummer (%o1), (%o2), etc. Där "i" är en förkortning för engelska. Input (ingång) och "o" är engelska. Produktion

Denna mekanism gör det möjligt att, när ytterligare skrivkommandon skrivs, hänvisa till tidigare skrivna, till exempel kommer (%i1)+(%i2) att innebära att man lägger till uttrycket för det andra till uttrycket för det första kommandot, följt av att man beräknar resultatet. Du kan också använda antal beräkningsresultat, till exempel så här (%o1)*(%o2).

För det senast körda kommandot i Maxima finns en speciell notation - %.

Exempel: Beräkna derivatan av en funktion

vid punkten x=1.

Kommandot (%i9) utfördes och resultatet (%o9) erhölls. Därför hänvisade nästa kommando (%i10) till det resultat som redan erhållits, men specificerade värdet på variabeln x, så kommandot fick formen (%i10) (%o9), x=1.

Ange numerisk information

Reglerna för att ange siffror i Maxima är exakt desamma som för många andra liknande program. Hel- och bråkdelen av decimalbråk separeras av punktsymbolen. Negativa tal föregås av ett minustecken.

Täljaren och nämnaren för vanliga bråk separeras med hjälp av symbolen / (snedstreck).

Observera att om resultatet av operationen är ett visst symboliskt uttryck, men du behöver få ett specifikt numeriskt värde i form av en decimalbråk, så kommer användningen av sifferoperatorn att lösa detta problem. I synnerhet låter det dig gå från vanliga bråk till decimaler

Här agerade Maxima i första hand som standard. Hon adderade bråken 3/7 och 5/3 exakt enligt räknereglerna: hon hittade en gemensam nämnare, reducerade bråken till en gemensam nämnare och lade till täljarna. Till slut fick hon

44/21. Först efter att vi bad henne att få ett numeriskt svar, kom hon fram till ett ungefärligt numeriskt svar, med en noggrannhet på 16 siffror, 2,095238095238095.

Konstanter

Maxima har ett antal inbyggda konstanter för att underlätta beräkningen, varav de vanligaste visas i följande tabell (tabell 1):

Aritmetiska operationer

Notationen av aritmetiska operationer i Maxima skiljer sig inte från den klassiska representationen, matematiska tecken används: + – * /.

Exponentiering kan betecknas på tre sätt: ^, ^^, **. Att extrahera en rot av grad n skrivs som grad ^^(1/n). Låt oss komma ihåg en annan användbar operation som är inbyggd i Maxima – att hitta ett tals faktorial. Denna operation indikeras med ett utropstecken

Till exempel, 6!=1⋅ 2⋅ 3⋅ 4⋅ 5⋅ 6=120.

För att öka prioritet för en operation, som i matematik, används parenteser () när man skriver kommandon för Maxima.

Variabler

Variabler används för att lagra resultaten av mellanliggande beräkningar. Observera att när du anger namnen på variabler, funktioner och konstanter är skiftlägen på bokstäver viktig, så variablerna x och X är två olika variabler.

Att tilldela ett värde till en variabel görs med hjälp av symbolen: (kolon), till exempel x : 5;.

Om det är nödvändigt att ta bort värdet på en variabel (rensa den), används killmetoden:

kill (x) – ta bort värdet för variabel x;

döda (alla) – ta bort värdena för alla tidigare använda variabler.

Och dessutom startar kill-metoden en ny numrering för körbara kommandon (observera att svaret på kommandot (%i 3) ovan visade sig vara ett svar med nummer noll (%o 0) gjort, och sedan numreringen av kommandon fortsatte från ett).

Matematiska funktioner

Maxima har en ganska stor uppsättning inbyggda matematiska funktioner. Här är några av dem (tabell 2). Man bör komma ihåg att vissa namn på funktioner skiljer sig från de namn som används i den inhemska litteraturen: Istället för tg - tan, istället för ctg - cot, istället för arcsin - asin, istället för arcos - acos, istället för arctg - atan , istället för arcctg - acot, istället för ln - log , istället för cosec – csc .

Regel för skrivfunktioner

För att skriva en funktion måste du ange dess namn och sedan, inom parentes, skriva argumentens värden, separerade med kommatecken. Om värdet på argumentet är en lista, är det omgivet av hakparenteser, och elementen i listan är också separerade med kommatecken.

integrera(sin(x),x,-5,5); plot2d(,,);

Anpassade funktioner

Användaren kan definiera sina egna funktioner. För att göra detta, ange först namnet på funktionen, namnen på argumenten listas inom parentes, efter tecknen: = (kolon och lika) finns en beskrivning av funktionen. När den väl specificerats anropas den användardefinierade funktionen på exakt samma sätt som Maximas inbyggda funktioner.

Översätta komplexa uttryck till linjär notation

En av de svåraste uppgifterna för nybörjare av Maxima-användare är att skriva komplexa uttryck som innehåller potenser, bråktal och andra konstruktioner i linjär form (i textform, med ASCII-tecken, på en rad).

För att göra denna process enklare är det värt att ge några rekommendationer:

1. Glöm inte att sätta multiplikationstecknet! I det grafiska fönstret Maxima, enligt matematikens regler, skrivs det dubbla värdet av variabeln x som 2x, men i ENTER-fönstret: kommandot för Maxima ska se ut som 2*x.

2. I tveksamma fall är det alltid bättre att sätta "extra", ytterligare parenteser (). Ett uttrycks täljare och nämnare måste alltid stå inom parentes.

Och även när man höjer till en makt, är det bättre att alltid sätta basen och kraften inom parentes.

3. En funktion existerar inte separat från dess argument (om några). Därför kan du till exempel, när du höjer till en potens, ta hela funktionen med argument inom parentes, och sedan höja den resulterande konstruktionen till önskad potens: (sin (x))**2.

Kom också ihåg att flera funktionsargument skrivs inom parentes, separerade med kommatecken, till exempel min(x1,x2,x3,xN);

5. Det är inte tillåtet att skriva funktionen sin(2*x) på formen sin*2*x eller sin2x.

6. Om du skriver ett komplext uttryck, dela upp det i flera enkla komponenter, skriv in dem separat och kombinera dem sedan med den tidigare diskuterade notationen för de inmatade kommandona.

Exempel: Du måste ange följande uttryck:

Låt oss dela in detta uttryck i tre komponenter: täljaren, uttrycket inom parentes och potensen. Låt oss skriva ner varje komponent och kombinera dem till ett uttryck.

Maxima kommer att förenkla uttrycket

råtta (uttryck). omvandlar ett rationellt uttryck till dess kanoniska form. Den där

där öppnar alla parenteser, för sedan allt till en gemensam nämnare, summerar det och minskar det; dessutom reducerar den alla tal i finita decimalnotation till rationella.

    Läxa:

Stakhin N.A., från 10-18, stödanteckningar.

    Lektionssammanfattning.

Vad är Maxima-programmet avsett för?

Lista huvudelementen i Maxima-programgränssnittet.

Lista de grundläggande Maxima-kommandona.

Eftersom denna artikelserie kommer att fokusera på ett matematiskt program för symboliska beräkningar, först några ord om vad dessa symboliska eller, som de också kallas, analytiska beräkningar är, till skillnad från numeriska beräkningar. Datorer är kända för att arbeta med tal (heltal och flyttal). Till exempel kan lösningar till ekvationen x 2 = 2 x + 1 erhållas som −0,41421356 och 2,41421356, och 3 x = 1 som 0,33333333. Men jag skulle inte vilja se en ungefärlig digital inspelning, utan ett exakt värde, dvs 1±√2 i det första fallet och 1/3 i det andra. Skillnaden mellan numeriska och symboliska beräkningar börjar med detta enkla exempel. Men utöver detta finns det också problem som inte alls går att lösa numerärt. Till exempel parametriska ekvationer, där man i form av en lösning behöver uttrycka det okända genom en parameter; eller hitta derivatan av en funktion; Ja, nästan alla ganska generella problem kan endast lösas i symbolisk form. Därför är det inte förvånande att det för denna klass av problem har dykt upp datorprogram som fungerar inte bara med siffror, utan med nästan alla matematiska objekt, från vektorer till tensorer, från funktioner till integro-differentialekvationer, etc.

Maxima inom vetenskap och utbildning

Bland matematisk programvara för analytiska (symboliska) beräkningar är den mest kända kommersiella ( Lönn, Mathematica); Detta är ett mycket kraftfullt verktyg för en forskare eller lärare, doktorand eller student, som låter dig automatisera den mest rutinmässiga delen av arbetet som kräver ökad uppmärksamhet, samtidigt som du arbetar med en analytisk registrering av data, det vill säga i själva verket matematiska formler. Ett sådant program kan kallas en programmeringsmiljö, med skillnaden att elementen i programmeringsspråket är matematiska notationer som är bekanta för människor.

Programmet, som blev ämnet för artikeln, fungerar på samma principer och ger liknande funktionalitet; Dess mest radikala skillnad är att den varken är kommersiell eller stängd. Vi talar med andra ord om fri programvara. Faktum är att användningen av fri programvara är mer naturlig för grundläggande vetenskap än för kommersiell vetenskap, eftersom modellen som används i fri programvara är en modell för öppenhet och allmän tillgänglighet för all utveckling. Uppenbarligen är samma egenskaper inneboende i resultaten av vetenskaplig verksamhet. Genom att använda denna likhet av tillvägagångssätt kan man faktiskt överväga utökningar av funktionaliteten hos fri programvara eller ytterligare bibliotek som kan skapas för deras behov i processen för vetenskaplig forskning som en integrerad del av resultaten av sådan forskning. Och dessa resultat kan användas och distribueras efter användarens gottfinnande utan hänsyn till de begränsningar som ställs av licenserna för källprogramvaran. När det gäller kommersiell programvara, som tillhör dess tillverkare, är denna typ av frihet avsevärt begränsad, allt från oförmågan att fritt (och lagligt) överföra sådan programvara själv tillsammans med utvecklingen och upp till eventuella patentanspråk från mjukvaruutvecklaren företag i fråga om distribution av hemgjorda ytterligare bibliotek till det.

Å andra sidan är den huvudsakliga riktningen, förutom vetenskaplig utveckling, där sådana program efterfrågas högre utbildning; och användningen av fri programvara för utbildningsbehov är en verklig möjlighet för både universitetet och studenter och lärare att ha lagliga kopior av sådan programvara till sitt förfogande utan stora, eller till och med några betydande, monetära kostnader.

Den här artikeln inleder en serie tillägnad det fria analytiska datorprogrammet Maxima. I den här serien kommer jag att försöka ge dig det mest kompletta intrycket av programmet: det kommer att ägnas åt både principerna och grunderna för att arbeta med Maxima, såväl som en beskrivning av dess bredare möjligheter och praktiska exempel.

Lite historia

Historien om projektet, numera känt som Maxima, började i slutet av 60-talet vid legendariska MIT (Massachusetts Institute of Technology), när man inom ramen för det stora MAC-projekt som fanns under dessa år började arbeta med en symbolisk datoranvändning program som fick namnet Macsyma (från MAC Symbolic MAnipulation). Systemets arkitektur utvecklades i juli 1968, själva programmeringen började i juli 1969. Lisp valdes som språk för att utveckla systemet, och historien har visat hur det var det rätta valet: av de programmeringsspråk som fanns vid den tiden , det är den enda som fortsätter att utvecklas idag - nästan ett halvt sekel efter projektets start. Principerna bakom projektet lånades senare av de mest aktivt utvecklande kommersiella programmen idag - Mathematica och Maple; Därmed blev Macsyma faktiskt grundaren av hela riktningen för symboliska matematikprogram. Naturligtvis var Macsyma ett slutet kommersiellt projekt; det finansierades av offentliga och privata organisationer, inklusive det historiska ARPA (Advanced Research Projects Agency; minns du ARPAnet - Internets förfader?), USA:s energi- och försvarsdepartement, DOE och DOD. Projektet utvecklades aktivt och de organisationer som kontrollerade det förändrades mer än en gång, vilket alltid är fallet med långlivade slutna projekt. 1982 började professor William Schelter utveckla sin egen version baserad på samma kod, kallad Maxima. 1998 kunde Shelter erhålla rättigheterna att publicera koden under GPL från DOE. Det ursprungliga Macsyma-projektet upphörde att existera 1999. William Shelter fortsatte att utveckla Maxima fram till sin död 2001. Men, som är typiskt för programvara med öppen källkod, dog inte projektet tillsammans med dess författare och curator. Nu fortsätter projektet att aktivt utvecklas, och deltagande i det är det bästa visitkortet för matematiker och programmerare runt om i världen.

Några ord om programmet

För tillfället släpps Maxima för två plattformar: Unix-kompatibla system, det vill säga Linux och *BSD, och MS Windows. Jag kommer naturligtvis att prata om Linux-versionen.

Maxima i sig är ett konsolprogram och ritar alla matematiska formler med vanliga texttecken. Det finns åtminstone två fördelar med detta. Å ena sidan kan Maxima själv användas som en kärna, med grafiska gränssnitt byggda ovanpå den för att passa alla smaker. Det finns ganska många av dem idag; den här gången kommer jag att fokusera på de två mest populära (se sidofältet) - och de mest visuella och lättanvända, och vi kommer att prata om resten i nästa nummer; de är också intressanta på sitt sätt, fastän mer specifika.

Å andra sidan, i sig själv, utan några gränssnittstillägg, är Maxima föga krävande vad gäller hårdvara och kan fungera på datorer som ingen nu betraktar som datorer (detta kan vara relevant t.ex. för ett universitet eller ett vetenskapligt laboratorium, som sannolikt inte har pengar för att uppdatera sin maskinpark, men behovet av programvara för symbolisk datoranvändning kan uppstå).

Funktions- och variabelnamn i Maxim är skiftlägeskänsliga, det vill säga de skiljer sig åt i versaler och gemener. Detta kommer inte att vara nytt för någon som har arbetat med POSIX-kompatibla system eller programmeringsspråk som till exempel C eller Perl. Detta är också bekvämt ur en matematikers synvinkel, för vilken det också är vanligt att stora och små bokstäver kan beteckna olika objekt (till exempel mängder respektive deras element).

För att börja arbeta med programmet behöver du Maxima-paketet; Om det inte finns i standardförråden för din distribution, kan du få det på projektets webbplats, vars adress anges i sidofältet.

Principerna för att arbeta med programmet beror inte på vilket gränssnitt du väljer för det, så jag kommer att försöka abstrahera så mycket som möjligt från ett specifikt gränssnitt och begränsa mig till endast små kommentarer i de fall de beter sig annorlunda.

För tillfället är den senaste versionen av programmet 5.9.3, vilket är vad jag kommer att prata om; om din distribution fortfarande har en äldre version kan du i princip använda den: både 5.9.2, som var relevant för några månader sedan, och 5.9.1, som släpptes i slutet av förra året, har inga grundläggande skillnader från nuvarande.

Grafiska gränssnitt för Maxima

Ur synvinkeln att lära känna Maxima själv är två gränssnitt av största intresse.

Det första är ett separat oberoende grafikprogram som kallas . Den, liksom Maxima själv, finns förutom Linux/*BSD även i en version för MS Windows. I wxMaxima anger du formler i textform, och Maximas utdata visas grafiskt med hjälp av välbekanta matematiska symboler. Dessutom läggs stor vikt vid enkel inmatning: kommandoraden är separerad från I/O-fönstret, och ytterligare knappar och ett menysystem låter dig ange kommandon inte bara i text utan också i dialogläge. Den så kallade "autokompletteringen" på kommandoraden har faktiskt bara likheten med den genom att den anropas av "Tab"-tangenten. Tyvärr beter den sig bara som en smart kommandohistorik, det vill säga att den anropar kommandot från de som redan har angetts i den här sessionen som börjar med de tecken som anges på kommandoraden, men som inte kompletterar kommandonamnen och deras parametrar. Således är det här gränssnittet mest praktiskt när du behöver göra många beräkningar och se resultaten på skärmen; och kanske också om du inte riktigt gillar att ange alla kommandon från tangentbordet. Dessutom ger wxMaxima ett bekvämt gränssnitt till systemdokumentation; men eftersom dokumentationen kommer i html-format kan du använda en vanlig webbläsare istället.


Det andra ganska intressanta gränssnittet till Maxima är ett extra läge i editorn . Även om den här redaktören delar en gemensam historisk bakgrund med de välkända Emacs, som namnet antyder, finns det få praktiska likheter mellan dem. TeXmacs utvecklas för visuell redigering av vetenskapliga texter, där du ser den redigerade texten på skärmen i nästan samma form som den ska skrivas ut. I synnerhet har den ett så kallat matematiskt inmatningsläge, vilket är mycket bekvämt för att arbeta med en mängd olika formler, och kan importera/exportera text till LaTeX och XML/HTML. Maxima, anropad från TeXmacs, använder förmågan att arbeta med formler. Faktum är att formler visas i den vanliga matematiska notationen, men samtidigt kan de redigeras och kopieras till andra dokument som vanlig text. Maxima-sessionen anropas från menyn: " Föra inSessionMaxima", och en extra meny med Maxima-kommandon visas. Efter att du har startat sessionen kan du redan växla till det matematiska inmatningsläget inuti det (menyn för inmatningsläge kallas upp av den första knappen på inmatningspanelen) och även använda element av matematisk notation när du går in. Detta gränssnitt kommer att vara mest praktiskt för dem som vill använda beräkningsresultat i sina texter och gillar att redigera dem visuellt.



Låt oss börja

Efter att ha startat Maxima-sessionen ser vi följande rader:

Maxima startade om. (%i1)

Det första är ett meddelande om att Maxima-kärnan just har lanserats (istället, beroende på versionen och den specifika byggnaden, kan kort information om programmet visas); den andra är en inbjudan att ange det första kommandot. Ett kommando i Maxim är valfri kombination av matematiska uttryck och inbyggda funktioner, som i enklaste fall avslutas med semikolon. Efter att ha angett kommandot och tryckt på "Enter", kommer Maxima att skriva ut resultatet och vänta på nästa kommando:


För aritmetiska operationer används traditionella notationer: -, +, *, /; ** eller ^ för exponentiering, sqrt() för kvadratrot.

Om det för vissa notationer inte är självklart hur man skriver dem på en rad, kommer jag att förklara detta allt eftersom.

Som du kan se har varje cell sin egen etikett; denna etikett är cellnamnet inom parentes. Indataceller benämns %i med nummer (i från inmatning- input), utdataceller - som %o med motsvarande nummer (o from produktion- slutsats). Alla inbyggda tjänstenamn börjar med %-tecknet: för att å ena sidan göra dem tillräckligt korta och lätta att använda, och å andra sidan för att undvika eventuella överlappningar med anpassade namn, som också ofta är bekväma att behålla kort. Tack vare denna enhetlighet behöver du inte komma ihåg, vilket ofta händer i andra system, vilka av dessa korta och bekväma namn som är reserverade av programmet och vilka du kan använda för dina behov. Till exempel, de interna namnen %e och %pi betecknar välkända matematiska konstanter; och %c med ett tal betecknar konstanter som används i integration, för vilka användningen av bokstaven "c" är traditionell i matematik.

När vi går in kan vi hänvisa till någon av de tidigare cellerna med dess namn, och ersätta den i alla uttryck. Dessutom betecknas den sista utdatacellen med % och den sista ingångscellen betecknas med _. Detta låter dig komma åt det senaste resultatet utan att bli distraherad av vad dess nummer är.

Här är %+47/59 detsamma som %o1+47/59 .

Beräkningsresultatet behövs inte alltid på skärmen; det kan undertryckas genom att avsluta kommandot med en $-symbol istället för; . Det dämpade resultatet utvärderas fortfarande; Som du kan se, i det här exemplet är cellerna %o1 och %o2 tillgängliga, även om de inte visas (cell %o2 nås via symbolen %, vars betydelse är dechiffrerad ovan):

Varje efterföljande kommando behöver inte skrivas på en ny rad; Om du anger flera kommandon på en rad kommer vart och ett av dem fortfarande att ha sitt eget cellnamn. Till exempel, här på raden efter %i1-etiketten, skrivs celler från %i1 till %i4 in; cell %i3 använder %i1 och %i2 (indikerat med _ - föregående inmatning):


I wxMaxima och TeXmacs behöver det sista eller enda kommandot på en rad inte följas av ett efterföljande tecken - detta kommer att fungera på samma sätt som om det hade avslutats; , dvs utgången kommer inte att stängas av. I ytterligare exempel kommer jag ofta att utelämna; . Om du väljer ett annat gränssnitt, glöm inte att lägga till det.

Förutom att använda cellnamn kan vi givetvis ge namn till alla uttryck själva. På ett annat sätt kan vi säga att vi tilldelar värden till variabler, med skillnaden att vilket matematiskt uttryck som helst kan fungera som värdet på en sådan variabel. Detta görs med hjälp av ett kolon - likhetstecknet lämnas till ekvationer, som, med tanke på notationens allmänna matematiska sammanhang, är lättare och mer bekanta att läsa på detta sätt. Och dessutom, eftersom Maximas huvudsakliga hobby är symbolisk notation och analytiska beräkningar, används ekvationer ganska ofta. Till exempel:

På sätt och vis är tjocktarmen ännu tydligare i sammanhanget än likhetstecknet: det kan förstås som att vi definierar en viss beteckning, och sedan använder kolon för att tyda vad det exakt betyder. När uttrycket har fått ett namn kan vi när som helst kalla det vid namn:

Vilket namn som helst kan rensas från uttrycket som tilldelats det med funktionen kill() och minnet som upptas av detta uttryck kan frigöras. För att göra detta behöver du bara skriva kill(name) , där namn är namnet på uttrycket som ska förstöras; dessutom kan detta antingen vara ett namn som du tilldelat eller vilken ingångs- eller utdatacell som helst. På samma sätt kan du rensa allt minne på en gång och frigöra alla namn genom att skriva kill(all) . I det här fallet kommer alla I/O-celler också att rensas, och deras numrering börjar igen från ett. I framtiden, om sammanhanget innebär en logisk fortsättning på de tidigare I/O-linjerna, kommer jag att fortsätta numreringen (jag har redan använt denna teknik ovan). När den nya "sessionen" inte på något sätt är kopplad till den föregående, kommer jag att börja numreringen igen; detta kommer att vara ett indirekt kommando för att göra "kill(all)" om du skriver exempel i Maxima, eftersom variabel- och cellnamn kan upprepas i sådana "sessioner".

Tillgång till Maxima dokumentation

I exemplen ovan använde vi två inbyggda funktioner. Som du lätt kan gissa från sammanhanget är solve en funktion för att lösa en ekvation, och diff är en differentieringsfunktion. Nästan all Maxima-funktionalitet implementeras genom sådana inbyggda funktioner. En funktion i Maxima kan ha ett variabelt antal argument. Till exempel kallas solve-funktionen, som vi använde med ett argument, oftare med två argument. Den första anger ekvationen eller funktionen vars rötter måste hittas; den andra är variabeln för vilken ekvationen måste lösas:


Om formeln som definierar ekvationen som ska lösas bara innehåller en symbol, som i föregående exempel, kan det andra argumentet utelämnas, eftersom valet av vad ekvationen ska lösas för fortfarande är entydigt.

Våra nya vänners andra funktion - diff - kan också ta ett argument; i det här fallet hittar den differentialen för det givna uttrycket:

Här betecknar del(x) och del(y) skillnaderna mellan motsvarande symboler.

Varje inbyggd funktion har en beskrivning i Maxima-dokumentationen. Den innehåller information om vilka argument funktionen accepterar och i vilka varianter, samt en beskrivning av dess agerande i olika fall och specifika exempel på tillämpning. Men det är naturligtvis inte alltid bekvämt att leta efter en beskrivning av varje funktion som krävs i html-dokumentation eller informationssidor, särskilt eftersom denna information vanligtvis behövs direkt i arbetet. Därför har Maxima en speciell funktion - describe(), som ger information från dokumentationen för specifika ord. Dessutom, speciellt för att göra det lättare att få referensinformation, finns det en förkortad version av anropet av denna funktion: ? namn istället för beskriv(namn) . Här? är namnet på operatorn, och argumentet måste separeras från det med ett mellanslag (?namnuttrycket används för att anropa en Lisp-funktion med namnet namn). beskriv funktion och operatör? visar en lista med hjälpsektioner och funktionsnamn som innehåller den angivna texten och uppmanar dig sedan att ange numret på avsnittet eller beskrivningen av funktionen som du vill visa:

När du väljer ett avsnitt kommer dess innehåll att visas:


Om för ordet du skrev in efter? eller beskriv , en enstaka matchning hittas, dess beskrivning visas omedelbart.

Förutom hjälp har många Maxima-funktioner exempel på hur de används. Ett exempel kan laddas med funktionen example(). Att anropa denna funktion utan ett argument kommer att visa en lista med alla tillgängliga exempelnamn; ett anrop som exempel(namn) kommer att ladda den angivna exempelfilen i den aktuella sessionen och köra den:


Löser problemet med att starta från TeXmacs

Om du har problem med att starta en Maxima-session från TeXmacs, var uppmärksam på vem som kör under namnet /bin/sh på ditt system. Faktum är att initieringen av alla olika sessioner implementeras i TeXmacs genom skalskript som kallas att använda /bin/sh. Och skriptet som ansvarar för Maxima-sessionen använder en funktion som inte är standardiserad som krävs för /bin/sh , men som finns i dess bash-emulering. Med andra ord, om din /bin/sh inte är en länk till /bin/bash , utan något annat, kan detta vara orsaken till oförmågan att öppna en Maxima-session (till exempel i Debian och distributioner baserade på andra än bash link /bin/sh kanske också vill installera ett lättare streck; i det här fallet kan du återställa status quo med dpkg-reconfigure dash). Om det inte är möjligt att göra /bin/sh till en länk till /bin/bash, kan du prova att ändra #!/bin/sh till #!/bin/bash i /usr/lib/texmacs/TeXmacs/bin/maxima_detect . Jag skrev till TeXmacs-utvecklarna om detta problem, men har ännu inte fått något svar från dem, så jag kan ännu inte säga om detta fel kommer att rättas till i nästa versioner.

Grundläggande principer

Att Maxima är skrivet i Lisp blir tydligt för en person som är bekant med detta språk redan i början av arbetet med programmet. Faktum är att Maxim visar tydligt "Lisp"-principen för att arbeta med data, vilket visar sig vara mycket användbart i samband med symbolisk matematik och analytiska beräkningar. Faktum är att det i Lisp i stort sett inte finns någon separation mellan objekt och data: variabelnamn och uttryck kan användas i nästan samma sammanhang. I Maxima utvecklas den här egenskapen ännu mer: i själva verket kan vi använda vilken symbol som helst, oavsett om något uttryck har tilldelats den. Som standard kommer symbolen som är associerad med ett uttryck att representera det uttrycket; en symbol som inte är kopplad till någonting kommer att representera sig själv, återigen tolkad som ett uttryck. Låt oss förklara med ett exempel:

Det följer särskilt av detta att värdet på symbolen som ingår i det automatiskt ersätts i uttrycket endast om detta värde tilldelades symbolen innan uttrycket definierades:

Om en symbol redan har en viss betydelse, kan vi använda symbolen i sig snarare än dess betydelse i ett uttryck? Säkert. Detta kan göras med apostroftecknet - inmatat före något tecken eller uttryck förhindrar det dess beräkning:

Resultatet av uttrycket %i12 skulle vara liknande om b och y inte hade några värden i det ögonblicket; sålunda kan vi säkert blockera symbolutvärdering utan att ens komma ihåg (eller veta) om några uttryck överhuvudtaget är tilldelade dem.

Vi kan göra detsamma med vilken inbyggd funktion som helst om vi inte vill exekvera den, utan använda den i vårt matematiska sammanhang. Till exempel kan den redan nämnda differentieringsfunktionen vara användbar för oss för att beteckna derivatan i en differentialekvation; i det här fallet finns det naturligtvis inget behov av att beräkna det:

Tack vare de beskrivna funktionerna blir arbetet i Maxim å ena sidan på många sätt likt traditionellt "manuellt" arbete med matematiska formler, vilket praktiskt taget eliminerar den psykologiska barriären för att börja arbeta med programmet. Å andra sidan är du redan i detta inledande skede effektivt befriad från det mest rutinmässiga manuella arbetet, som att hålla reda på aktuella symbolvärden, och kan koncentrera dig helt på själva uppgiften. Att blockera utvärderingar är naturligtvis inte det enda sättet att påverka hur Maxima utvärderar ett givet uttryck; denna process kan styras ganska flexibelt.