Μάθημα 1 : Σταθερές

> 4+5;

9

> 4+5 ?help # πρέπει να μπαινει ';' στο τέλος

Syntax error, character `?` unexpected

> 4+2*5;

14

> 100*365*24*60; # πόσα λεπτά ζωής σε 100 χρονια (περίπου)

52560000

> (")*60; #πόσα δευτερόλεπτα ζωής σε 100 χρόνια περίπου

3153600000

> pi;

pi

> Pi;

Pi

> evalf(");

3.141592654

Σημείωσε ότι το Pi ειναι διαφορετικό από το pi.

> Digits ;

10

> Digits := 30;

Digits := 30

> evalf(Pi);

3.14159265358979323846264338328

> evalf(Pi, 100);

3.1415926535897932384626433832795028841971693993751...

Κατάλογος με όλες τις σταθερές που διαθέτει το πρόγραμμα:

> constants;

false, gamma, infinity, true, Catalan, FAIL, Pi

> 3/7 + 5/11;

68/77

> evalf(");

.883116883116883116883116883117

> 2^8;

256

> 2^16;

65536

> 2^32;

4294967296

> 2^64;

18446744073709551616

To δυαδικό σύστημα παράστασης αριθμών. Τα α0, ...., α7 ειναι τα 8 ψηφία (παίρνουν τις τιμές 0 ή 1) ενος αριθμού γραμμενου στο δυαδικό σύστημα

> a7*2^7+a6*2^6+a5*2^5+a4*2^4+a3*2^3+a2*2^2+a1*2^1+a0*2^0;

128*a7+64*a6+32*a5+16*a4+8*a3+4*a2+2*a1+a0

> convert( 7, binary ); # 111 = 1*4 + 1*2 + 1*1

111

> convert( 111011001, decimal, binary ); # η αντίστροφη διαδικασία

473

> convert( 11111111111111111111111111111111, decimal, binary ); # ο πίο μεγάλος 32-ψήφιος στο 2-δικό σύστημα

4294967295

exp(1);

exp(1)

> evalf(");

2.71828182845904523536028747135

> constants := constants, e ;

constants := false, gamma, infinity, true, Catalan,...

> e := exp(1); #ορισμός τιμής νέας σταθεράς

e := exp(1)

> evalf(e);

2.71828182845904523536028747135

> 4!;

24

> 5!

> ;

120

> 10!

> ;

3628800

> 1/10!;

1/3628800

> 1.0/10!;

.275573192239858906525573192240e-6

> Digits := 10;

Digits := 10

> 1.0/10!;

.2755731922e-6

Μερικές από τις συναρτήσεις της θεωρίας αριθμών:

> ifactor(50);

``(2)*``(5)^2

> ifactor(13333);

``(67)*``(199)

> ifactor(13331); #πρώτος !

``(13331)

> ifactor(12321);

``(3)^2*``(37)^2

> ifactor(1234321);

``(11)^2*``(101)^2

> ifactor(123454321);

``(41)^2*``(271)^2

> ifactor(12345654321);

``(3)^2*``(7)^2*``(11)^2*``(13)^2*``(37)^2

Το ερώτημα: είναι όλοι αυτοί οι αριθμοί μη-πρώτοι;

> expand(");

12345654321

> isprime(12345654321);

false

> igcd(11,121);

11

> igcd(112, 22232);

56

> ilcm(2,3,5,7);

210

> ilcm(4,12,70,14);

420

Πραγματικοί αριθμοί σε αντίθεση με τους φυσικούς, γράφονται με μιά τελεία για δεκαδικά ψηφία.

> 1./3.;

.3333333333

> 1/3;

1/3

> eval(1/3);

1/3

> evalf(1/3);

.3333333333

> iquo(23/5); # πραξεις με ακεραίους

Error, wrong number (or type) of parameters in function iquo

> iquo(23,5);

4

> irem(23,5);

3

Αθροισμα ρητών μετατρέπεται σε πραγματικό ακόμη και με μία εμφάνιση τελείας:

> 1/2+1/3+1/5+1/7;

247/210

> 1/2+1/3.+1/5+1/7;

1.176190476

Ακολουθίες ρητών αριθμών:

> seq( i/(i+1), i=1..10);

1/2, 2/3, 3/4, 4/5, 5/6, 6/7, 7/8, 8/9, 9/10, 10/11...

> seq( (i+1)/i, i=1..12);

2, 3/2, 4/3, 5/4, 6/5, 7/6, 8/7, 9/8, 10/9, 11/10, ...

> seq( i^2/(i+1)^3, i=1 .. 10 );

1/8, 4/27, 9/64, 16/125, 25/216, 36/343, 49/512, 64...

> sum( 1/i, i=1..10);

7381/2520

> Sum( 1/i, i=1..10);

Sum(1/i,i = 1 .. 10)

> sum(i, i=1..20);

210

> sum(i^2, i=1..10);

385

Τυχαίος ακεέραιος αριθμός με 12 ψηφία:

> rand();

427419669081

> rand();

321110693270

> rand();

343633073697

> length(%); #πόσα ψηφία ...

12

Και λίγα για μιγαδικούς. Ι παριστάνει την φανταστική μονάδα

> 3+4*I;

3+4*I

> (1+I)/(1-2*I); # διαίρεση μιγαδικών

-1/5+3/5*I

> cos(Pi/4)+I*sin(Pi/4);

1/2*sqrt(2)+1/2*I*sqrt(2)

> eval(%);

1/2*sqrt(2)+1/2*I*sqrt(2)

Εύρεση μεγίστου ελαχίστου:

> max(2^3/4!, 3^2/3!);

3/2

Συνδυασμοί n ανά k:

> binomial( 5,3);

10

> expand( (a+b)^5 );

a^5+5*a^4*b+10*a^3*b^2+10*a^2*b^3+5*a*b^4+b^5

> expand( (a+b)^10 );

a^10+10*a^9*b+45*a^8*b^2+120*a^7*b^3+210*a^6*b^4+25...

Από την γραμμική άλγεβρα:

> vector(3, [a,b,c]);

VECTOR([a, b, c])

> vector(4, [1,2,3,4]);

VECTOR([1, 2, 3, 4])

> vector(7, [a, b, 1,2,3,4,c]);

VECTOR([a, b, 1, 2, 3, 4, c])

> vector(2, [1,3]) + vector(2, [2,5]);

VECTOR([1, 3])+VECTOR([2, 5])

Πρώτα φορτώνουμε το πακέτο Γραμμικής Άλγεβρας.

> with linalg;

Syntax error, missing operator or `;`

> with (linalg):

Warning, new definition for norm

Warning, new definition for trace

Εισάγουμε μερικά τυχαία διανύσματα. (Η εντολή randvector(n) δημιουργεί ένα διάνυσμα διάστασης n με τυχούσες συντεταγμένες.)

> randvector(3);

VECTOR([-35, 97, 50])

> randvector(10);

VECTOR([79, 56, 49, 63, 57, -59, 45, -8, -93, 92])

> randmatrix(3,3);

MATRIX([[-12, -18, 31], [-26, -62, 1], [-47, -91, -...

> det(");

-30206

> randmatrix(3,3);

MATRIX([[-61, 41, -58], [-90, 53, -1], [94, 83, -86...

> inverse(");

MATRIX([[-4475/673997, -1288/673997, 3033/673997], ...

> matrix(3,3,[1,2,3,4,5,6,7,8,9]);

MATRIX([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

> matadd(",");

MATRIX([[2, 4, 6], [8, 10, 12], [14, 16, 18]])

> det(");

0

> matrix(3,1,[1,2,3]);

MATRIX([[1], [2], [3]])

> randmatrix(3,2);

MATRIX([[23, -84], [19, -50], [88, -53]])

> transpose(");

MATRIX([[23, 19, 88], [-84, -50, -53]])

> inverse(");

Error, (in inverse) expecting a square matrix

Ορισμός πίνακα με τύπο:

> matrix(4,5,(i,j)->1/(i+j));

MATRIX([[1/2, 1/3, 1/4, 1/5, 1/6], [1/3, 1/4, 1/5, ...

> matrix(5,5, (i,j)->if i<>j then 1/(i*j) else 1 fi );

MATRIX([[1, 1/2, 1/3, 1/4, 1/5], [1/2, 1, 1/6, 1/8,...

> col(",3);

VECTOR([1/3, 1/6, 1, 1/12, 1/15])

> stack( vector(3,[1,2,3]), vector(3, [7,7,7]) ;

Syntax error, `;` unexpected

> stack( vector(3,[1,2,3]), vector(3, [7,7,7])) ;

MATRIX([[1, 2, 3], [7, 7, 7]])

> row(",2);

VECTOR([7, 7, 7])