Introduction
Principios de Calcular
Vectores e Matrices
Expressiones e Functiones
Principios de Maxima
Intercambio inter Euler e Maxima
Alicun Exemplos
Iste pagina contine un introduction in interlingua del programma Euler.
Euler Math Toolbox (breve: Euler) es un programma scribite de René Grothmann del universitate de Eichstätt, Germania. Iste programma es un instrumento mathematic pro computar con numeros real, complexe, con intervallos, e con vectores o matrices consistente de ille numeros. Euler anque ha un producto de matrices exacte, facente possibile le exacte arithmetica e incirculamentos garantite de resultatos. De plus Euler contine le systema algebraic Maxima, un programma open source. De isto Euler pote utilisar terminos algebraic, e pote computar con illos.
Euler anque pote producer designos multo belle de functiones con un, duo o tres parametros. Le designos pote esser in le plana o in spatio 3D. Il ha grande varietates de ille designos, anque de designos anaglyphic pro spectar con oculares rubie/cyan. Naturalmente le designos pote exportar se in varie formatos, como PNG, SVG, o on pote transferer los in le clipboard.
Le interfacie del programma consiste de duo fenestras. Le prime contine le commandos, le commentarios, e le resultatos del programma, de plus le imagines, que le usator ha inserite in iste fenestra. Le secunde fenestra contine le designo passate, que le programma ha generate. Iste interfacie e facilemente comprendite, ma multo utile.
In le prime exemplo io vole demonstrar, que Euler e un systema numeric, e Maxima e un systema algebraic. Euler usa numeros limitate a 16 digitos, ma illo es multe rapide. Maxima usa numeros e fractiones infinite, ma es plus lente. Euler anque pote exprimer numeros come fractiones, e Maxima pote transformar le numeros infinite a in numeros limitate.
>1+1/7+1/8, fracprint(%) // calcular in Euler 1.2678571428571428 71/56 >:: 1+1/7+1/8, float(%) // calcular in Maxima 71 -- 56 1.267857142857143
Le lineas rubie es le commandos, que io ha facite. Le lineas nigre contine le resultatos de Euler. Le textos post "//" es commentarios.
Le prime linea contine due commandos, e esseva inviate a Euler. Euler exprimeva le resultato como un numero limite, e pois exprimeva lo como un fraction. Le % se refere al resultato passate.
Le secunde linea rubie esseva inviate a Maxima, per virtute de "::" in le principio de ille linea. Maxima calculava le fraction, exprimeva lo como un fraction, e a cause del secunde commando transformava lo in un numero limitate.
Perque le due modos de computar, Euler e Maxima? Ille es lo que face Euler multe utile. Pro calcular longe calculationes numeric Euler es le instrumento correcte, e pro derivar resultatos exacte, nos pote usar Maxima.
Naturalmente Euler ha variabiles pro immagazinar resultates. Usa ":=" (o "=" simplemente) pro assignar un numero a un variabile.
>g:=9.81; t:=5.5; 1/2*g*t^2
148.37625
Nota que le prime e secunde commando non se imprimeva a causa del ";" post le commando. Usa le comma "," pro imprimer un resultato.
Maxima anque pote usar variabiles, e illo usa le mesme syntaxe que Euler. Le syntaxe original de Maxima es un poco differente. Il es possibile anque de usar iste syntaxe in Euler. Ma io prefere le syntaxe modficate, que es plus simile al syntaxe de Euler.
Forsan vos vole usar elementos de mensura con le numeros. Isto es anque possibile. Elementos de mensura es numeros constante in Euler simplemente, solmente utile pro converter le numeros. Ecce alicun exemplos.
>3km$/h$ // converte km/h a in m/s 0.8333333333333 >0.03ly$/km$ // converte annos de luce a in km 283821914177.4 >print(28000m$^2/km$^2,3,unit="km^2") // imprime con mensura 0.028km^2
Matlab, e pois Euler, esseva inventate pro calculationes con vectores e matrices. Il es multo facile definir un matrice in Euler.
>A:=[1,2;3,4]
1 2
3 4
Le lineas se separa con ";" e le elementos de un linea con le comma ",". Euler pote calcular expressiones de algebra linear, e anque pote solver systemas linear.
>b:=[4;5] 4 5 >x:=A\b -3 3.5 >A.x-b 0 0
Il ha functiones in Euler pro calcular le plus proxime fit, o le regression linear, o valores proprie (eigenvalues) et cetera, e multe altere functiones.
Ma le plus efficace uso de vectores es illo de continer tabulas de numeros. Per exemplo, io genera un vector "x" con due mille numeros de -10 a 10, e computa un vector "y" con le valores de "sin(x)*x" de istos numeros in "x".
>x:=-10:0.01:10; y:=sin(x)*x;
Cata function in Euler, come "sin" o "*", pote applicar se a vectores e matrices. Le expression "sin(x)" es un vector con le valores "sin(x[i])" pro cata "x[i]". Le operator "*" computa le vector consistente del productos de cata elemento del duo vectores. Iste es le lingua de matrices que se trova in Matlab e Euler.
Vide un exemplo plus complexe. Io face un vector de un million numeros aleatori usante le distribution de Gauß. Pois io numera le numeros plus grande de 2, e cumputa le fraction de iste numeros.
>n:=1000000; v:=normal(1,n); sum(v>2)/n
0.022699
Le operator ">" anque functiona pro vectores. Ille computa un vector de 0 o 1, 0 pro false e 1 pro correcte. Le numero de 1 es computate per "sum". Iste function summa le numeros de un vector (o le numeros in cata linea de un matrice).
Euler anque pote designar vectores. Le plus simple forma es assi.
>n:=1000; plot2d(cumsum(normal(1,n)));
Le function "cumsum" computa le summa acccumulante del elementos de un vector. Le resultato es un promenada aleatori. Videl imagine sequente.

Le lingua de matrices anque combina duo vectores un date in un columna e le altere in un linea. Le resultato es un matrice. Per exemplo, io face le tabula de multiplication. Io usara un altere formato plus curte pro imprimer le tabula. Le commando "n'" computa le vector transponite, que es le mesme vector ponite a in un columna.
>n=1:10; format(5,0); n*n', longformat;
1 2 3 4 5 6 7 8 9 10
2 4 6 8 10 12 14 16 18 20
3 6 9 12 15 18 21 24 27 30
4 8 12 16 20 24 28 32 36 40
5 10 15 20 25 30 35 40 45 50
6 12 18 24 30 36 42 48 54 60
7 14 21 28 35 42 49 56 63 70
8 16 24 32 40 48 56 64 72 80
9 18 27 36 45 54 63 72 81 90
10 20 30 40 50 60 70 80 90 100
Maxima anque ha vectores e matrices, e un lingua de matrices. Ma il non ha le function "sum", per exemplo. In vice de iste illo ha un function plus complexe.
>:: v:=[1,2,3,4] [1, 2, 3, 4] >:: sqrt(v) [1, sqrt(2), sqrt(3), 2] >:: sum(v[k],k,1,4) 10
Le matrices de Maxima se defini per le function "matrix". Maxima pote usar variabiles symbolic in matrices. Iste es un avantage in comparation con Euler.
>:: A:=matrix([a,1],[1,2]) [ a 1 ] [ ] [ 1 2 ] >:: invert(A) [ 2 1 ] [ ------- - ------- ] [ 2 a - 1 2 a - 1 ] [ ] [ 1 a ] [ - ------- ------- ] [ 2 a - 1 2 a - 1 ]
Pro usar le resultatos de Maxima in Euler videl section sequente de intercambiar resultatos inter Maxima e Euler.
Euler anque ha un typo de datos pro texto. Iste typo es usate inter altere cosas pro expressiones. Iste es le plus facile forma de representar un function in Euler. Multe commandos de Euler utilisa expressiones continite in texto. Ma per isto le expressiones debe usar le variabile "x" pro le argumento del function (o "x" e y" pro functiones con duo parametros).
Per exemplo, le plus facile designo de un function se face per le commando "plot2d" e un expressione in "x". Hic vos trova duo exemplos.
>plot2d("x^3-x",-1,1,user=1);
>plot2d("cos(x)/x^2",a=1,b=2pi,c=-1,d=1);
Le prime commando designa le function in [-1,1], ma le usator pote controlar le designo con le claves. Ille pote displaciar le sector a ubi le function se designa, ille pote aggrandir o reducer, e anque marcar un sector rectangular con le mus.

Il es multo simplice de evalutar expressiones. Le variabile x es usate pro assignar le argumento. Altere variabiles pote assignar como a=5, o per un variablile global. Videl exemplo sequente.
>expr:="x^3-a*x" x^3-a*x >expr(3,a=2) 21
Pro plus grande flexibilitate vos debe usar functiones. Il ha functiones simple definite in un linea usante un expression, e functiones plus complexe definite in multe lineas, que pote continer repititiones de commandos e conditiones. Un simple function se defini in Euler and Maxima assi.
>function f(x) := x^3-x >f(4) 60 >:: function f(x) := x^3-x 3 f(x) := x - x >:: f(4) 60
Il es possibile de definir un function e un variabile tanto in Euler como in Maxima in un sol definition usante "::=". Ma iste forma es ristricte a expressiones multo simple.
Functiones plus complexe debe esser definite in plure lineas. Pro exemplo nos defini un function que evaluta un de duo functiones polynomial dependente de si "x" es positive o negative.
>function map f(x) ... $ if x<=0 then return x^2 $ else return x^3 $ endif $endfunction >f(-1:0.5:1) 1 0.25 0 0.125 1
Un function complexe comencia con "function" e fini con "endfunction". Pro retornar un valor, on usa "return". Le prime linea de iste function fini con "...". Per isto tote le definition de iste function se entra con le evaluation del prime linea. Usa le clave F9 pro rediger un function.
Pro le functiones de Euler il es desiderate que illos functionara anque pro vectores e matrices, quando il es utile. Le parola "map" face, que le function "f" se evalutara pro cata elemento in caso de un vector "x". Dunque le function "f" travalia como le lingua de matrices demanda.
Euler anque pote designar functiones de duo parametros. Le function "plot3d" pote facer designos in 3D usante expressiones in "x" e "y" o functiones a duo parametros.
>plot3d("x^2+y^3",contour=1,user=1);

Le usator pote tornar isto designo, e anque magnificar o reducer. Ille pote anque mover le luce. De plus, ille pote facer un version anaglyphic con le clave "a".
Pro un altere exemplo, io genera un promenada aleatori in tres dimensiones. Io designara iste promenada in un vista anaglyphic. Vos debe usar oculares rubie/cyan pro vider le vista correctemente. Le effecto 3D es multo grandiose.

Iste section demonstrara le principios de base de Maxima. Maxima, como Euler, es un multe grande systema, e il es impossibile de explicar tote le commandos sue in una pagina. Le documentationes de Euler e Maxima es continite in le installation de Euler Math Toolbox, in ultra se trova un referentia complete del programmas.
Maxima pote computar con numeros infinite, e con expressiones symbolic. Un variabile de Maxima es symbolic usque iste recipe un valor. Pois le variabile non es symbolic. Pro remover le valor usa le commando "remvalue".
>:: a^2-1 2 a - 1 >:: a:=4; a^2-a 12 >:: remvalue(a); a^2-a 2 a - a
Maxima pote expander e factorar expressiones. Illo pote computar quotientes differential e integrales de functiones. Illo pote simplificar multe expressiones, o tranformar les in altere formas. Vide alicun exemplos.
>:: expand((x+3)^2), factor(diff(%,x)) 2 x + 6 x + 9 2 (x + 3) >:: ratsimp(1/x+1/(x+1)+1/(x+2)), partfrac(%,x) 2 3 x + 6 x + 2 --------------- 3 2 x + 3 x + 2 x 1 1 1 ----- + ----- + - x + 2 x + 1 x >:: log(100)/log(10), radcan(%) log(100) -------- log(10) 2 >:: trigexpand(sin(x)^2+sin(2*x)^2), trigsimp(%), trigreduce(%) 2 2 2 4 cos (x) sin (x) + sin (x) 2 2 (4 cos (x) + 1) sin (x) cos(4 x) cos(2 x) - -------- - -------- + 1 2 2
Multe commandos de simplification come "ratsimp" ha un altera forma. Iste commandos se pote usar como signos. Attacha le signos post le expression con "|".
>:: (x^2-1)/(x+1) | ratsimp x - 1 >:: sum(k^2,k,1,n) | simpsum | factor n (n + 1) (2 n + 1) ------------------- 6
Le problema de integral non ha sempre un solution in un expression. On debe usar un methodo numeric de Euler o de Maxima in iste casos. Videl exemplos.
>:: integrate(diff(x^2*exp(-x),x),x) | ratsimp 2 - x x %e >:: integrate(x^x,x,1,2) 2 / [ x I x dx ] / 1 >integrate("x^x",1,2) 2.050446234534
Alicun vices Maxima demanda informationes additional pro solver un problema. Il es possibile de dar iste informationes antea ponente restriones sur variabiles.
>:: integrate(x^n,x,0,1) Is n positive, negative, or zero? >:: positive 1 ----- n + 1 >:: assume(n>0); integrate(x^n,x,0,1) 1 ----- n + 1 >:: forget(n>0);
Maxima pote solver un equation o un systema de equationes. Illo ritorna le solutiones como un vector de equationes. Pro mitter le mano a un solution specific, usa "at". Iste commando evaluta un expression a condition que le equationes es ver. In le exemplo sequente io evalutara le expression "1//1+x" per le prime solution "x=...".
>:: solutions := solve(x/(1+x)=1/(2+x),x) sqrt(5) + 1 sqrt(5) - 1 [x = - -----------, x = -----------] 2 2 >:: at(1/(x+2),solutions[1]) | ratsimp | algebraic sqrt(5) + 3 ----------- 2
Nota le signo "algebraic" que converte le expression in un expression continente le radical solmente in le numerator.
Ecce un examplo de un systema de equationes.
>:: solve([x^2+y^2=1,x+y=1/2],[x,y])
sqrt(7) - 1 sqrt(7) + 1
[[x = - -----------, y = -----------],
4 4
sqrt(7) + 1 sqrt(7) - 1
[x = -----------, y = - -----------]]
4 4
Maxima anque pote solver systemas de equationes differential. Io pote dar solmente un exemplo in iste pagina.
>:: ode2(eq,y,x), y(x) := at(y,[%,%k1=0,%k2=1])
2
x
- -- 2
2 %i x x
sqrt(2) sqrt(%pi) %i %k1 %e erf(-------) - --
sqrt(2) 2
y = - -------------------------------------------- + %k2 %e + 1
2
2
x
- --
2
y(x) := %e + 1
Finalmente io vole indicar que Euler pote usar se como un interfacie pro Maxima. Tunc non es necesse commenciar le commandos de Maxima con "::". Commandos pro Euler debe comenciar con "euler" in iste moda.
>maximamode on; >diff(x^x,x) x x (log(x) + 1) >maximamode off;
Euler e Maxima anque pote intercambiar resultatos. Variabiles numeric de Euler se transfere a Maxima, e expressiones algebraic de Maxima valorisa se in Euler.
Per exemplo, io calcula un quotiente differential complicate con Maxima, e usa le resultato pro trovar le minimo del function in Euler. Pro isto io usa le rapide methodo de secar. Maxima pote solver iste problema exactemente. Ma le solution es multe longe. Altere problemas non pote esser solvite exactemente per Maxima in alicun maniera.
>expr := "x^5+exp(x)*x^4-exp(x^2)*x" x^5+exp(x)*x^4-exp(x^2)*x >dexpr := "::diff(@expr,x)" -2*x^2*%e^x^2-%e^x^2+x^4*%e^x+4*x^3*%e^x+5*x^4 >solve(dexpr,0.5) 0.60074682307753902
Nota que le expression es definite in Euler. In le secunde linea io usava iste expression in un altere expression per le syntaxe "@expr". Iste syntaxe permitte se in un definition de un function, e in un commando directe pro Maxima. Per exemplo io facera un function de un expression.
>function f(x) := @expr
>type f
function f (x)
useglobal; return x^5+exp(x)*x^4-exp(x^2)*x
endfunction
Pro demonstrar le definition io imprimeva le function. Il ha un truco pro inserer un resultato de maxima a in function. In le exemplo sequente io usara Maxima pro computar le quotiente differential durante le definition de un function. Usa le syntaxe "@:..." pro iste truco.
>function df(x) := @:"diff(@expr,x)"
>type df
function df (x)
useglobal; return -2*x^2*%e^x^2-%e^x^2+x^4*%e^x+4*x^3*%e^x+5*x^4
endfunction
Pro un altere exemplo, nos solvera un problema plus complexe. Nos vole trovar le vertices de un collection de parabolas, e nos vole designar iste situation. Primo nos definira le collection in Maxima como un function "p(x,t)". Pois nos trovera le zero del quotiente differential de "x" del function "p(x,t)" dependente de "t". Finalmente, nos defini functiones pro le coordinatas "x" e "y" del vertices.
>:: function p(x,t) := (1+t)*x^2+(1-2*t)*x; >:: sol := solve(diff(p(x,t),x)=0,x) 2 t - 1 [x = -------] 2 t + 2 >:: xm(t):=at(x,sol), ym(t):=factor(p(xm,t)), 2 t - 1 xm(t) := ------- 2 t + 2 2 (2 t - 1) ym(t) := - ---------- 4 (t + 1)
Nunc nos pote designar le functiones e le vertices in Euler. Pro usar le resultatos e definitiones de Maxima, on pote usar texto como "::...". Nota que le parametro "t" de "plot2d" es un variabile global. Perque "plot2d" pote trovar iste variabile. Le secunde commando de "plot2d" designa un curvo parametric pro le vertices. Le coordinatas de iste curva es le expressiones de Maxima.
>t:=(-10:1:10)'; plot2d("::p(x,t)",r=10);
>plot2d("::xm(x)","::ym(x)",xmin=-10,xmax=10, ...
> add=1,color=2,thickness=3);

Evidente le curvo parametric es un function. Nos pote trovar un expression pro iste function usante le commando "solve" de Maxima.
>:: solve(xm(t)=x,t), f(t):=ratsimp(at(ym(t),%))
2 x + 1
[t = - -------]
2 x - 2
2
3 x
f(t) := -------
2 x - 2
Io vole discuter un function. Prime io computara le zeros del quotiente differential.
>:: function f(x) := (exp(x)-1)/(exp(2*x)+1)^2 exp(x) - 1 f(x) := --------------- 2 (exp(2 x) + 1) >:: solve(diff(f(x),x)=0,x), xs:=at(x,%[2]), float(xs) 2 sqrt(7) sqrt(7) 2 x [x = log(- - -------), x = log(------- + -), %e = 0] 3 3 3 3 sqrt(7) 2 log(------- + -) 3 3 0.43734081671078
Maxima computava tres solutiones. Le prime non es definite ben, pois que le logarithmo non e definite in le numeros negative. Maxima o Euler computerea iste solution como un numero complexe. Le tertie solution non face multe senso. Il es le seconde solution que interessa nos. Io definiva "xs" como iste solution.
Pois io computara le valor del function ibi, e le valor del secunde quotiente differential.
>:: f(xs) | radcan, float(%) 27 sqrt(7) - 27 ----------------- 160 sqrt(7) + 512 0.047508099295379 >:: at(diff(f(x),x,2),x=xs) | radcan, float(%) 4877852643 sqrt(7) + 12905572617 - --------------------------------- 15083171840 sqrt(7) + 39906379648 - 0.32339661753
Le limites del function es assi.
>:: limit(f(x),x,inf) 0 >:: limit(f(x),x,-inf) - 1
Io ha demonstrate, que le function possede un maximo in xs=0.0475... Pro desingar functiones io prefere Euler. Maxima anque ha un commando pro designar basante de "gnuplot".
>plot2d("::f(x)",a=-5,b=5,c=-2,d=1);
>plot2d(mxmeval("xs"),mxmeval("f(xs)"),points=1,add=1);

Le function "mxmeval" es un altere methodo pro obtener un resultato de Maxima in Euler.
Lassa vos facer un exemplo de statistica. Io computera un function polynomal in alicun punctos, e disturbara iste valores un pauc. Post isto io probara restaurar le paramteros del function.
>p:=[1.2,-0.5]; >x:=0:0.1:1; y:=polyval(p,x)+normal(size(x))*0.1; >plot2d(x,y,a=0,b=1,c=-0.5,d=2,points=1); >q:=polyfit(x,y,1) 1.230439627565 -0.6056158813181 >plot2d("polyval(q,x)",add=1,color=2,thickness=2); >sum((y-polyval(q,x))^2)/cols(q) 0.02818410201875

Le ultime commando computava le medie deviation quadrate.
Considera le matrices sequente.
>:: A(x,y) := matrix([x,y,x],[y,x,y],[x,y,x+1])
[ x y x ]
[ ]
A(x, y) := [ y x y ]
[ ]
[ x y x + 1 ]
Qual matrices ha le plus parve radio spectral? On debe computar le eigenvalues de iste matrices. Io facera un function in Euler pro iste problema.
>function A(x,y) := @:"A(x,y)"
>function f([x,y]) := max(abs(eigenvalues(A(x,y))))
>plot2d("f",r=1,contour=1,user=1);

Le imagine suggere que le minimo es in y=0 e in alicun x. Io vole trovar iste puncto con Euler. Il ha un function "nelder" in Euler que pote trovar minimas de functiones con multe variabilesl. Que nos probar iste function.
>v=nelder("f",[1,2]) -0.5000000000002 1.306657682649e-007 >h(v) 0.7071067811866
Hic es le fin de iste introduction. Io spera que vos ha multe successo con Euler!
(Multe gratias al senior McDutchie pro le adjuta con le lingua!)
Euler Homepage