Întrebări frecvente

9. Ieșirea la TE X

  • 9.1. Cum pot seta rezultatul variabilelor individuale Maxima în TE X?

1. Principalele probleme

1.1. mulțumesc

O mulțime de oameni au participat la scrierea acestui text sau în discuțiile conferinței poștale Maxima, din care au fost împrumutate multe materiale :-)







Iată oamenii pe care vrem să le acordăm mulțumiri speciale:

Mulțumiri speciale lui William Shelter.

1.2. De fapt, cineva a pus aceste întrebări?

1.3. Ce este Maxima?

Maxima se bazează pe Macsyma, dezvoltat în MIT în anii 1970, și este un program complet de calcule simbolice. Caracteristicile includ operațiuni de caractere cu polinoame, matrice și funcții raționale; integrarea, algoritmul Todd-Coxeter, construirea de grafice, calcule pe numere cu virgulă mobilă de mare precizie. Sistemul este destul de fiabil, are un debugger, o colecție bună de gunoi; Nu are scurgeri de memorie, sunt furnizate sute de teste pentru a testa munca cu ea.

1.4. Care sunt diferențele dintre Macsyma, DOE-Macsyma, Symbolics Macsyma și Maxima?

Sistemul dezvoltat în MIT a fost numit Macsyma. Uneori s-au folosit numele abreviat "MACSYM" și "MAXIMA", deoarece numele de fișiere au fost limitate la șase caractere majuscule ale codării pe șase biți.

Symbolics a acordat licența companiei Macsyma de la MIT și a înregistrat marca "Macsyma", aparent cu permisiunea MIT.

Această bază de cod a fost numită DOE Macsyma (de la "Departamentul de Energie"). Nu se știe ce drepturi legale la numele ministerului a fost Macsyma, spre deosebire de dreptul la propriul lor cod, dar, se pare, utilizatorii non-comercial DOE Macsyma, dorind să evite o dispută privind numele, la un moment dat, a devenit numele Maxima.

Deci, Maxima este doar ultima denumire a ramurii de dezvoltare, inceputa ca "DOE Macsyma".

1.5. Cine a scris sistemul?

1.6. Cine susține în prezent?

După moartea lui William Shelter, un grup de utilizatori care sprijină Maxima a fost asamblat. Acum, suntem într-un stat intermediar, alegem noi direcții de dezvoltare și evaluăm oportunitățile și resursele disponibile. În sine, Maxima are în acest stadiu un set relativ complet de caracteristici, incluzând integrarea simbolică, construirea graficii 3D și soluția ODE, dar rămân multe lucruri pentru a corecta erorile, pentru a curăța și a documenta. Ca să nu spun că nu vor exista noi oportunități, dar mai trebuie încă multe de făcut înainte de a ajunge la următoarea etapă și până acum nu putem face față unor noi oportunități.

1.7. Este Maxima gratuit (gratuit)?

Da. Maxima este distribuită sub licența publică generală GNU, cu anumite restricții privind utilizarea codului de la Departamentul Energiei al SUA.

1.8. Ce alte pachete de matematică simbolică există?

Există mai multe, dar nu toate au cod sursă deschisă și nu toate sunt gratuite.

Potrivit feedback-ului utilizatorilor, Jacal și Yacas nu au un set atât de larg de comenzi ca Maxima; Calc este un pic mai dezvoltat și, în special, include un bun integrator.

2. Documentația

2.1. Unde pot citi despre Maxima?

2.2. Unde sunt cele două "Manuale de Referință"?

2.3. Ce e cu pagina de pe utexas.edu? Acesta arată versiuni numai la 5.6.0

2.4. Cum rămâne cu LISP?

Iată câteva site-uri de engleză cu informații bune despre LISP comun:

3. Instalarea lui Maxima

3.3. Ce distribuții Linux includ Maxima?

Din câte știm, există doar două distribuții, inclusiv Maxima:

4.1. Cu ce ​​implementări LISP poate funcționa Maxima?

CLISP, CMUCL și GCL sunt pe deplin susținute de Maxima; Versiunile anterioare ale lui Maxima sunt suportate pe deplin numai de GCL. Porturile pentru alte implementări ANSI ale LISP nu trebuie să provoace dificultăți și sunt binevenite; contactați dezvoltatorii dacă sunteți interesat de portare.

4.2. clisp

CLISP include suport GNU readline. atunci când îl construiți, Maxima va avea comoditate suplimentară de editare pe linia de comandă. Maxima nu poate fi compilat pe versiunea 2.26 din cauza erorilor din CLISP. 2,28 și 2,29 de muncă; la 2.30 există probleme cu numere cu puncte în virgulă, deci se recomandă 2.29.

4.3. CMUCL

CMUCL este cea mai rapidă opțiune pentru Maxima pe acele platforme unde este disponibilă. Din păcate, nu include suportul readline. dar îl puteți adăuga prin împachetarea lui Maxima cu fișierul executabil executed. Maxima merge cu CMUCL 18c, dar se blochează pe anumite operațiuni de executare. 18d ar trebui să funcționeze.

Versiunile 2.4.4 și 2.5.0 ar trebui să fie bine. 2.5.0 nu este publicat la momentul scrisului, cvs-versiunea 2.5.0 a fost folosită cu succes pentru a construi Maxima. Versiunile cu 2.4.3 pot fi construite cu suport readline.

5.1. Cum se face modul Maxima disponibil în Emacs?

/.emacs ceva de genul:

În loc de a schimba calea de încărcare, puteți copia toate fișierele din .el /usr/share/maxima/5.9.0/emacs (sau oriunde altundeva), într-un director de calea de încărcare-site-ul Lisp.

6. Erori și alte probleme

6.1. De ce există încă o eroare elementară într-un astfel de program vechi?

Tocmai am trimis un mesaj de eroare la SourceForge și sunt surprins de faptul că încă există erori elementare în acest program vechi. Acesta este ceea ce poate face acum calculatorul meu, iar acest program, se pare, este deja de aproximativ 30 de ani.







  1. Ați putea spune că nu este o greșeală, dar se datorează lipsei de înțelegere a ceea ce ar trebui să facă programul. (Acest lucru este foarte frecvent, deși, desigur, este posibil să nu se aplice raportului dvs.).
  2. Oportunitatea pe care ați folosit-o nu a fost scrisă acum 30 de ani de către utilizator, la fel ca tine, și nu a fost testată, deoarece nu este principala funcție a sistemului. Poate că a fost scrisă la sfârșitul anilor '70.
  3. Cea mai mare parte a acestui sistem nu a fost testată din 1982, astfel încât ultimii 20 de ani (când lucrarea se desfășura numai pe versiunea comercială) nu se iau în calcul.
  4. Dacă a fost găsită o eroare, sperăm că este rezolvată.

6.2. Care este cel mai bun mod de a raporta o eroare?

Erori trebuie introduse direct în baza de date. Acesta este cel mai bun mod de urmărire decât scrierea rapoartelor în lista de discuții. Desigur, dacă doriți să discutați ceva, puteți scrie abonaților. Interfața bazei de date cu erori vă permite să trimiteți fișiere care vă pot ajuta în documentarea problemei.

Raportul de eroare de bază include suficiente informații pentru ao reproduce, inclusiv informațiile despre versiune obținute cu ajutorul bug_report ().

Un raport calitativ complet include:

  • Un titlu bun care transmite culmea problemei.
  • O ordine clară de reproducere a erorilor. Asigurați-vă că eroarea poate fi redată în cea mai recentă versiune a sistemului. Dacă nu puteți repeta eroarea, includeți cât mai multe informații despre ceea ce ați făcut înainte de a se manifesta. Cu cât este mai simplu ghidul de reproducere a erorii, cu atât mai bine; De asemenea, este mai bine dacă se reduce la un caz simplu. De asemenea, este util să menționăm cazuri care au diferențe minore, dar nu duc la o eroare.
  • Dacă acest lucru nu este complet clar, explicați de ce răspunsul este greșit și care este răspunsul corect.
  • Versiunea completă pe care o utilizați, după cum arată bug_report ().
  • O notă scurtă despre motivul pentru care este important pentru a rezolva problema (pentru a ajuta dezvoltatorii de a partaja lucrul asupra priorităților), de exemplu, „aproape fiecare utilizator se va întâlni mai devreme sau mai târziu, cu această greșeală insidios și își pierd toate lucrările sale,“ sau „această eroare nu dă grupul nostru a folosit Maxima deoarece această clasă de matrici este utilizat pe scară largă în genetica populației, „sau“ pentru a începe workaround este bine „“ este creată artificial de caz, eu sunt aproape sigur că el nu se va întâlni de utilizator comun „(deși de multe ori de eroare ki în cazuri complexe se manifestă și în situații simple).
  • Dacă știți cum să evitați problema sau dacă aveți un cod care o corectează, specificați în antetul "FIX", astfel încât dezvoltatorii să poată înregistra rapid raportul.
  • Unele probleme pot să nu fie erori, ci limitări funcționale. În acest caz, este interesant să știți ce fac alte sisteme, în special Macsyma comercială. Dacă știți de ce ar trebui să existe o restricție, specificați ("Potrivit teoriei lui Kratov, problema nu poate fi rezolvată în cazul general"). De asemenea, metoda de procesare a acestora este interesantă, de exemplu, "pachetul pentru ODE nu procesează cazul tri-exponențial de ordinul șaptesprezece, dar poate muPad 29.23; Cred că metoda modificată Fouka-Mafuz în realizarea lui Odibwa (J.Sym.Alg.23: 5: 230) o tratează corect ". Și este chiar mai bine să adăugați "... și am implementat acest lucru pentru Maxima 6.0" :-).

6.3. Textele sesiunilor din mesajele de eroare

E-mailurile cu mesaje de eroare includ adesea teste de sesiune Maxima, ceea ce este foarte bun. Din păcate, aspectul este adesea distorsionată ca file sunt tratate în mod diferit în programele de e-mail, browsere, HTML, și așa mai departe. D. Chiar și pentru clienții de mail pentru a afișa filele corect toate prăzile ca mesajul original este aliniat la citat (la începutul liniilor ">").

Deci, dacă citați textele sesiunilor, faceți una dintre următoarele acțiuni:

  • înlocuiți caracterele filelor cu spații (de exemplu, utilizând utilitarul de extensie UNIX sau comanda Emacs untabify)
  • dezactivați display2d la extragerea textului.

Primul este mai bine dacă este important să păstrați expresia lizibilă, a doua este dacă doriți să copiați și să inserați expresia în linia de intrare.

Se pare că la unii agenți poștali:

Același lucru după untabify:

Dacă se folosește display2d: false:

6.4. Ce să faci cu problemele de compilare?

6.5. Maxima 5.9.0 nu funcționează cu GCL 2.4.0

Aveți nevoie de o versiune ulterioară a GCL. Se știe că 2.4.0 nu este potrivit. Aparent, 2.4.x funcționează pentru unele x, precum și 2.5.x.

7. Pachete suplimentare

7.1. Grafice și hipergrafe

8. Întrebări pentru începători

8.1. inchar și outchar

Când am intrat în ecuație

Am primit la concluzie nu este ceea ce mă așteptam.

În caz contrar, puteți schimba caracterele folosite în etichete prin setarea inchar și outchar:

8.2. Soluția sistemelor de ecuații

Vreau să obțin n [v] = 2 * n-n [c] -2 de la

Cu alte cuvinte, vreau să exprim n [v] prin alte variabile. Dar rezolvarea nu face asta pentru mine. Ce funcție ar trebui să folosesc?

Trebuie să utilizați soluția pentru două variabile:

8.3. Cum pot elimina o coloană de matrice?

m [i] este rândul i al matricei m. Există vreo modalitate de a obține o coloană? Știu despre col (m, i). dar col returnează matricea și nu îi puteți atribui o valoare. Este convenabil să scrieți "m [i]: [1,2,3]". De ce nu pot face același lucru cu coloanele?

Încercați să transpuneți m. și apoi transpuneți din nou.

8.4. De ce nu "întoarceți" munca în cicluri?

1 este returnat de către buclă for. atunci blocul returnează 0.

8.5. desolve nu functioneaza?

desființează (diff (y (x), x) = (4-2 * x) / (3 * y ^ 2-5), y (x)) dă răspunsul greșit.

După cum se precizează în documentație, "relațiile funcționale ar trebui indicate clar". Prin urmare, în desolve, nu puteți scrie diff (y (x), x) = y + x. trebuie să scrieți diff (y (x), x) = y (x) + x. Prin urmare desolve nu poate rezolva acest lucru, dar poate ode2. totuși, ode2 ia altă formă de intrare (da, este ilogică și este enervantă): depinde (y, x); diff (y, x) = y + x. Cod sursă:

Acum să verificăm răspunsul:

8.6. Am nevoie de un citat?

Mai sus, în exemplul cu desolve. dacă spuneți sistemului că y depinde de x, nu trebuie să puneți o cotă înainte de instrucțiunea dif. Este necesar un citat dacă nu se imprimă depinde (y, x).

Așa e. În exemplul cu ODU, nu puteți specifica depinde și puneți un ghilimele înainte de diff. sau specificați depinde și pune o diferență în fața diff la discreția sa.

Citația subliniază că vrei să spui o diferență și să nu diferențiezi.

Desigur, discuția și ode2 desolve trebuie să fie în contextul mai larg al „modul de a rezolva ecuații diferențiale.“ Aici, numai abordarea desolve dependențe (utilizarea de funcții explicite cum ar fi f (x)) este comparată cu abordarea ode2 (pentru a indica faptul că y depinde de x sau pur și simplu cităm diferențial).

8.7. substituție

Am o astfel de funcție apel într-o expresie mai complexă:

Am o altă funcție acref care are două argumente, primul este argumentul funcției de eroare, al doilea este ordinea de aproximare. Vreau să înlocuiesc apelul acerf în loc de erf în expresia mea mai complexă, de exemplu:

Există o modalitate ușoară de a face asta în Maxima?

Sau ceva de genul asta.

9. Ieșirea la TE X

9.1. Cum pot seta rezultatul variabilelor individuale Maxima în TE X?

Creați un fișier "foo.lisp" (sau orice altul) cu instrucțiuni LISP cum ar fi

Apoi încărcați-l în scenariul dvs., de exemplu:

Maxima 5.9.0 și versiunile ulterioare au funcția auxuta texput. care vă permite să personalizați ieșirea la TE X. Aici este același exemplu ca înainte:

Rețineți că aici trebuie să folosim o tăietură dublă înainte de alfa. Pentru a obține o slash în TE X.

Întrebări despre Maxima sau pe acest site: Listele de discuții







Articole similare

Trimiteți-le prietenilor: