Zurück zum Inhaltsverzeichnis

Kapitel 5:

»`« (Unix) oder »'« (Windows) versus »´«

' oder ` unterdrücken die Auswertung von Variablen

> restart:

> x:=3: x;

3

Die Bindung von x aufheben:

> x:='x': x;

x

Mit komplizierteren Namen gibt es Probleme:

> for i from 1 to 4 do: a[i]:=i:end do;

>

a[1] := 1

a[2] := 2

a[3] := 3

a[4] := 4

> for i from 1 to 4 do: a[i]:='a[i]':end do;

a[1] := a[i]

a[2] := a[i]

a[3] := a[i]

a[4] := a[i]

> a[2];

a[5]

> for i from 1 to 4 do: a[i]:=evaln(a[i]):end do;

a[1] := 'a[1]'

a[2] := 'a[2]'

a[3] := 'a[3]'

a[4] := 'a[4]'

> a[3];

a[3]

>

>

> x:=sin(2);

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 := ''x^2+7''

> f;

'x^2+7'

> seq(eval(f,i),i=1..4);

''x^2+7'', 'x^2+7', x^2+7, sin(2)^2+7

> x:=5: f;

32

` markiert Symbole

f wird an das Symbol `a+b` gebunden, eval hilft hier nicht

> f:=`a+b`;

f := `a+b`

> f;

`a+b`

> a:=3: b:=2: f;

`a+b`

> eval(f);

`a+b`

> whattype(f);

symbol

op, nops, remove, select

> restart:

> expr := 1+diff( sin(x)/x^2, x);

expr := 1+cos(x)/(x^2)-2*sin(x)/(x^3)

> remove(has,expr,sin);

1+cos(x)/(x^2)

> expr;

1+cos(x)/(x^2)-2*sin(x)/(x^3)

> expr:=(1+cos(x)/x^2)^(1/2);

expr := sqrt(1+cos(x)/(x^2))

> remove(has,expr,cos);

undefined

> op(expr);

1+cos(x)/(x^2), 1/2

> has(expr,cos);

true

> select(has,expr,cos);

1+cos(x)/(x^2)

> 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});

{y = 2, x = 3}, {y = 2, x = -3}, {y = -2, x = 3}, {...

> l1:=[1, 2, 3, 4];

l1 := [1, 2, 3, 4]

> l2:=map( sqrt, l1);

l2 := [1, sqrt(2), sqrt(3), 2]

> sum( l2[i], i=1..4) / nops(l2);

3/4+1/4*sqrt(2)+1/4*sqrt(3)

Mengen werden nach der internen Speicheradresse ihrer Elemente geordnet

> data:={seq(i, i=1..10)};

data := {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

> seq( {i, sqrt(i)}, i=1..5);

{1}, {2, sqrt(2)}, {3, sqrt(3)}, {2, 4}, {5, sqrt(5...

> seq( [i, sqrt(i)], i=1..5);

[1, 1], [2, 2^(1/2)], [3, 3^(1/2)], [4, 2], [5, 5^(...

Maple macht Fehler!

> restart;

Beispiel

falsch

> evalf( Limit(Int(1/x^2, x=n..infinity), n=0));

2.000000000

richtig

> int(1/x^2, x=0..infinity);

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(%));

.3100545086e315653, .1685285031e315653

> f:=n->if (n=0) then 0;else 0.25*f(n-1)^2+1:fi:

> f(100);

1.962416880

>

Zurück zum Inhaltsverzeichnis