Kapitel 5:
»`« (Unix) oder »'« (Windows) versus »´«
' oder ` unterdrücken die Auswertung von Variablen
> restart:
> x:=3: x;
Die Bindung von x aufheben:
> x:='x': x;
Mit komplizierteren Namen gibt es Probleme:
> for i from 1 to 4 do: a[i]:=i:end do;
>
> for i from 1 to 4 do: a[i]:='a[i]':end do;
> a[2];
> for i from 1 to 4 do: a[i]:=evaln(a[i]):end do;
> a[3];
>
>
> x:=sin(2);
>
x wird nicht sofort ersetzt. Mit einem optionalen Parameter kann man eval genau anweisen, wieviele Ebenen ausgewertet werden sollen.
> f:='''x^2+7''';
> f;
> seq(eval(f,i),i=1..4);
> x:=5: f;
` markiert Symbole
f wird an das Symbol `a+b` gebunden, eval hilft hier nicht
> f:=`a+b`;
> f;
> a:=3: b:=2: f;
> eval(f);
> whattype(f);
op, nops, remove, select
> restart:
> expr := 1+diff( sin(x)/x^2, x);
> remove(has,expr,sin);
> expr;
> expr:=(1+cos(x)/x^2)^(1/2);
> remove(has,expr,cos);
> op(expr);
> has(expr,cos);
> select(has,expr,cos);
> whattype(expr);
>
Folgen, Mengen und Listen
> restart;
solve returns a sequence of sets
> solve( {x^2+y^2=13, x^2-y^2=5}, {x,y});
> l1:=[1, 2, 3, 4];
> l2:=map( sqrt, l1);
> sum( l2[i], i=1..4) / nops(l2);
Mengen werden nach der internen Speicheradresse ihrer Elemente geordnet
> data:={seq(i, i=1..10)};
> seq( {i, sqrt(i)}, i=1..5);
> seq( [i, sqrt(i)], i=1..5);
Maple macht Fehler!
> restart;
Beispiel
falsch
> evalf( Limit(Int(1/x^2, x=n..infinity), n=0));
richtig
> int(1/x^2, x=0..infinity);
Manchmal ist Maple zu genau
> f:=n->if (n=0) then 0;else 1/4*f(n-1)^2+1:fi:
> f(20):evalf(numer(%)),evalf(denom(%));
> f:=n->if (n=0) then 0;else 0.25*f(n-1)^2+1:fi:
> f(100);
>