Mat-1.415 Matematiikan peruskurssi V2

Tammikuu 2002

Maple-perusteita, harj0.mws

Maple 7

Versio 7 saatiin juuri vuoden 2002 alussa.

Yleisiä toimintaohjeita

Muista tallettaa aika ajoin . Maple näyttää luokissa silloin tällöin kaatuvan (ainakin ennen, toivottavasti ei enää).

Talletus on joka tapauksessa syytä tehdä aina ennen jotain potentiaalisesti isoa laskentaa. Muista lyhyt: CTR-S

Tämä työarkki sisältää ohjeita ja ohjeisiin liittyviä tehtäviä, joita voi samantien

ryhtyä kokeilemaan. Voit tehdä muistiinpanoja työarkille ja tallettaa sen itsellesi.

Suositus: Selaa työarkkia jonkin matkaa, totuttele heti helpin käyttöön.

Harjoitustehtävädokumentti:

Kannattaa aloittaa INSERT-valikon SECTION-valinnalla ja napsauttaa muutama sektio heti kättelyssä arkille.

Huomaa, että työarkin voi tallettaa myös HTML-muotoon. Tosin harjoitusratkaisuja esiteltäessä Maple ws-muoto

on yleensä parempi, mutta myöhempää katselua varten taas htlm-doku on tosi hyvä juttu.

Elämänohje:

Maplen filosifiaa kannattaa opetella senverran, että työskentely käy nautittavaksi. Kannattaa yrittää itse ja kaverien kanssa (ja kirjoista) selvitellä myös pulmatilanteita, tällaiseen omatoimisuuteen on nyt ainutlaatuinen tilaisuus, kun puolet neuvontaharjoituksista on "vapaita opettajasta".

Viikon oppitavoitteita:

Kannattaa harjoitella myös teknisiä asioita, kuten työarkin printtaamista ym.

Katsotaan ensin työarkkiin (worksheet) liittyviä asioita.

>

Suurenna Maple-ikkuna riittävän isoksi ja ota rinnalle työarkki http://www.math.hut.fi/teaching/v/maple/pohja.mws

Tämä on yleinen pohja, jota voidaan käyttää harjoituksissa. Huomaa, että voit leikata/liimata työarkilta toiselle (tietysti). Nimeä se uudelleen, jotta voit tallettaa itsellesi.

Viitteitä

[HAM] Apiola: Symb ja num. lask Maple-ohjelmalla, Otatieto 588

Tämä teos ilmeisine puutteineenkin on suositeltava, sitä tarvitaan niin V2 kuin V3-kursseilla. Täydennystä vaatii erityisesti matriisilaskentaosuus, sillä uusi LinearAlgebra-tyyli tuli vasta versioon 6.

Kurssin Maple-hakemisto : www.math.hut.fi/teaching/v/maple/

gsg.pdf, lrnguide.pdf, prguide.pdf (Getting Started, Learning, Programming, Maple 7)

1. Aivan ensiksi

Huom:

Jos haluat jatkaa kokeiluja tällä kohdalla, tee lisää kehotteita joko klikkaamalla kohtaa >

tai CTR-J (jos jälkeen)

> 247*3756;

927732

Työarkin painikkeita ja käsittelyä on sellostettu havainnollisin kuvin gsg.pdf: ssä.

2. Laskentoa numeroilla

Laskuoperaatiot ovat "normaalit" +-*/^ , kertomerkkiä ei saa jättää pois (kuten Mathematicassa)

Harjoittelemme laskentoa. Hyppää yli, jos pitkästyttää.

> tai:=sitten=kokeile*jotain/tassa;

tai := sitten = kokeile*jotain/tassa

Maple vaatii loppumerkin, joko ; tai : Kokeile, jos et jo tiedä.

Lue lisää:

3. Laskentoa symboleilla ja numeroilla

Pohdiskelua

Lue

(see Heck Ch 3 Variables and names p. 65 -..

The secret behind success of CA : free (unbound) variables . )

On hyvä totutella laittamaan restart työarkin alkuun (ja muihinkin hengähdyspaikkoihin)

Painele nyt ENTER:iä ja palaa ohjeen mukaan takaisin.

> restart: # PALUURIVI 2

Warning, the name changecoords has been redefined

> (a+b)^2; # PALUURIVI 1

(a+b)^2

> expand(%);

a^2+2*a*b+b^2

> a:=x^2 :b:=exp(c*z):

>

1) Palaa alkuu kohtaan PALUURIVI 1 ja napsuttele komennot läpi.

2) Palaa alkuu kohtaan PALUURIVI 2 ja napsuttele komennot läpi.

Jos haluat vapauttaa vain joitakin valittuja muuttujia, niin:

Muuttujien vapauttaminen arvostaan:

Joko a:='a'; tai unassign('a'):

> a:='a':b:='b':

> a:=1: b:=kissa; unassign('a','b'); a,b;

b := kissa

a, b

> c:=exp(x^ 3); unassign('c'); c;

c := exp(x^3)

c

Vakiot Pi ja I

> Pi,I;

Pi, I

> evalf(Pi);

3.141592654

> evalf(Pi,30);

3.14159265358979323846264338328

> 2/3+4/5;evalf(%);

22/15

1.466666667

> evalf(pi);

pi

Huomaa tämä : Maple osaa vain "tekstinkäsitellä" pi :tä, laskentaan tarvitaan Pi

Tässä tulee usein virheitä alkavalle Maple-urheilijalle.

Kompleksilukuja, imag. yksikkö I

> (1+2*I)/(2-3*I); # Numeerinen kompleksiluku muuntuu automaattisesti muotoon x+I*y .

-4/13+7/13*I

> z1:=a1+I*a2;z2:=a2+I*b2;

z1 := a1+I*a2

z2 := a2+I*b2

> z1/z2;evalc(%);polar(%%);

(a1+I*a2)/(a2+I*b2)

a1*a2/(a2^2+b2^2)+a2*b2/(a2^2+b2^2)+I*(a2^2/(a2^2+b...

polar(abs((a1+I*a2)/(a2+I*b2)),argument((a1+I*a2)/(...

Maple olettaa symbolit a1,b1, ... reaalisiksi, ellei tyyppimäärityksiä anneta.

Tässä voit laskea vaikka joitakin KRE-kirjan tehtäviä.

> polar((1+2*I)/(3-4*I));

polar(1/5*sqrt(5),-arctan(2)+Pi)

> w:=exp(I*2*k*Pi/n);

w := exp(2*I*k*Pi/n)

> with(plots): setoptions(scaling=constrained,axes=framed): # Sama skaala akseleilla

> w:=exp(I*2*k*Pi/n);

w := exp(2*I*k*Pi/n)

> n:=5: ykkosen5juuret:=seq(w,k=0..n-1);

ykkosen5juuret := 1, exp(2/5*I*Pi), exp(4/5*I*Pi), ...

> complexplot([ykkosen5juuret],style=point,symbol=circle,symbolsize=15);

[Maple Plot]

> complexplot(exp(I*Pi*t),t=0..2*Pi,color=blue);

[Maple Plot]

Grafiikat saadaan samaan kuvaan funktiolla display (joka asustaa plots -pakkauksessa), kts alempana.

4. Komentojen "hidastusmuodot" alkavat isolla kirjaimella.

Usein on hyvä estää lopullinen evaluointi ainakin aluksi. Joillakin funktioilla on iso-kirjainalkuinen "inert form".

Yleensä etuhipsukoita ' ' voi myös käyttää evaluoinnin estoon.

> Int(x*sin(x),x); # hidastusmuoto (inert form), alkaa isolla I:llä

Int(x*sin(x),x)

> int(x*sin(x),x);

sin(x)-x*cos(x)

> Int(x*sin(x),x);

Int(x*sin(x),x)

> value(%);

sin(x)-x*cos(x)

Aika kätevä tyyli (ala Heck): (Näet heti, ymmärsikö Maple sinut oikein.)

> Int(x*sin(x),x); value(%);

Int(x*sin(x),x)

sin(x)-x*cos(x)

Hidastusmuoto estää evaluoinnin , se tarjoaa kätevän tavan kirjoittaa matemaattisia kaavoja käyttämällä Maplen yhtälörakennetta.

> Int(x*sin(x),x)=int(x*sin(x),x);

Int(x*sin(x),x) = sin(x)-x*cos(x)

> Int(x*sin(x),x): %=value(%); # Kirjoitustyötä säästävä (Heck-)tyyli.

Int(x*sin(x),x) = sin(x)-x*cos(x)

Evaluointi voidaan estää myös 'hipsukoilla' , vrt [SOL] s. 9 rivi 1 ja s. 15. Tähänpä tuo edellä ollut muuttujan vapauttaminen arvostaankin perustuu.

> 'int(x*sin(x),x)'=int(x*sin(x),x);
'diff(x*sin(x),x)'=diff(x*sin(x),x);

int(x*sin(x),x) = sin(x)-x*cos(x)

diff(x*sin(x),x) = sin(x)+x*cos(x)

Otetaan vielä sin:n ja cos:n yhteenlaskukaavat (Maple korvaa MAOL-taulukkoja):

> sin(alpha+beta): %=expand(%);
cos(alpha+beta): %=expand(%);

sin(alpha+beta) = sin(alpha)*cos(beta)+cos(alpha)*s...

cos(alpha+beta) = cos(alpha)*cos(beta)-sin(alpha)*s...

5. Defining Variables and Functions

Pohdiskelua

Matemaattisen funktion käsittely Maple-lausekkeena

perustuu samaan ilmiöön kuin edellä PALUURIVI1 ja 2-tilanteet.

> f := x^2;

f := x^2

Määrittelemme muuttujan f, jota käytämme matemaattisen funktion tavoin. Maplen kannalta f on muuttuja, jonka arvoksi olemme sijoittaneet lausekkeen x^2 .

Jos haluamme laskea lausekkeen arvon eri x:n arvoilla, joudumme käyttämään subs-komentoa.

> subs(x=5, f);

25

Jos haluat seurata lauseke/funktio-juonta, hyppää tässä kohdassa seq-kometojen yli.

> seq(subs(x=k, f),k=0..10);

0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100

> a:=-4: b:=4: N:=10: h:=(b-a)/N: arvojono:=seq(subs(x=a+k*h, f),k=0..N);

arvojono := 16, 256/25, 144/25, 64/25, 16/25, 0, 16...

> evalf(arvojono);

16., 10.24000000, 5.760000000, 2.560000000, .640000...


VAROITUS: Kun matemaattista funktiota käsitellään lausekkeena, on oltava johdonmukainen. Siitä ei saa välillä käyttää merkintää f(x).

Maple on inhottavan pikkutarkka. Kokeile vaikka:

> f(x); f(5);

x(x)^2

x(5)^2


Matemaattisen funktion käsittely
Maple-funktiona:

> f := x -> x^2;

f := proc (x) options operator, arrow; x^2 end proc...

> f(x),f(y),f(5);

x^2, y^2, 25

unapply on toinen funktion määrittelytapa.

> g := x^3;

g := x^3

> g(5); # Tämä on tuhoon tuomittu.

x(5)^3

Huomaamme nyt, että olis ollut mukavampi käsitellä funktiona. No sehän käy:

> g := unapply(g, x);

g := proc (x) options operator, arrow; x^3 end proc...

> g(5);

125

What is the difference unapply vs -> ?

Ensi tutustumisvaiheessa voidaan jättää unapply vähemmälle huomiolle, mutta se on useissa yhteyksissä varsin käyttökelpoinen.

> a:=x^2: f:=x->a;g:=unapply(a,x);

f := proc (x) options operator, arrow; a end proc

g := proc (x) options operator, arrow; x^2 end proc...

> f(3);

x^2

> g(3);

9

> a:=Pi;

a := Pi

> f(3);

Pi

> g(3);

9

Jatketaan tästä (harj0):

Varoitus: Hengenvaarallista: Älä koskaan määrittele funktiota tyyliin F(x):=lauseke;

Tällöin nimittäin et tosiaankaan määrittele funktiota, vaan kummallisennimisen muuttujan F(x)

arvon (näin on hyvä ajatella).

Poikkeus : Funktion määrittelyä täydentävien poikkeusarvojen määrittelyssä tää on ihan JEES, esimerkki otetaan kohta.)

Palataan nyt vielä tuohon hengenvaaraan:

> restart:F(x):=x^3; # Näin ei sitten tosiaankaan tehdä paitsi alla mainitussa poikkeuspistetilanteessa.

Warning, the name changecoords has been redefined

F(x) := x^3

Tuo on syntaksiltaan oikein, mutta hyvin hämäävää.

Mitä on F(x)

> F(x);

x^3

Näyttää, kuin toimisi oikein. Vaan eipas toimi muilla kuin x:llä.

> F(x),F(3),F(a),F(sin(z));

x^3, F(3), F(a), F(sin(z))

Nyt se sallittu (hallittu) käyttö:

Haluamme määritellä funktion, jota esim. GLJ-kirjassa kutsutaan nimellä sinc, olkoon tässä vain F

> F:=x->sin(x)/x;

F := proc (x) options operator, arrow; sin(x)/x end...

> F(0);

Error, (in F) numeric exception: division by zero

> F(0):=1;

F(0) := 1

> seq(F(x),x=-2..2);evalf(%);

1/2*sin(2), sin(1), 1, sin(1), 1/2*sin(2)

.4546487134, .8414709848, 1., .8414709848, .4546487...

> F(0);

1

Harjoitustehtävä

Määrittele polynomifunktio p(x) = x^3-4*x^2+4*x-1 .

Määritä nollakohdat ja paikalliset minimit sekä maksimit. Piirrä funktio ja sen derivaatta.

Tarkista laskemalla funktion arvot, että nollakohdat ovat nollakohtia.

Käsittele polynomia ensin lausekkeena ja sitten funktiona. Mitkä ovat kunkin tavan hyvät/huonot puolet.

Derivaattalauseke -- diff

Derivaattafunktio -- D (Käyttele helppiä )

?plot, ?solve,?fsolve ?diff, ?D

Tämäntyyppisten tehtävien, niin yksinkertaisia matemaattisesti kuin ovatkin, sujuva hallinta tekee Maple-työskentelystä nautittavaa puuhaa ja auttaa pitkälle.

6. Sievennystä ja yhtälön ratkaisua

Pohdiskelua
simplify - yleissieventäjä, ensimmäiseksi tarjoiltava.

expand - kertoo auki

collect - kokoaa

? collect ja kokeile joitakin esimerkkejä. Varsin hyvä komento monessa paikassa.

factor - Jakaa tekijöihin.
convert - ... Monenmoisiin konverioihin sievennyksessä esim convert(lauseke,parfrac,muuttuja);

Huomaa, että lauseke ei muutu, uusi tulos palautetaan. Jos halutaan päivittää lauseke, on komennetava

lauseke:=convert(lauseke,parfrac,muuttuja);

solve - ratkaisee yhtäön tai systeemin

fsolve - ratkaisee numeerisesti

> (x^3+1)/(x^2-x+1);simplify(%);

(x^3+1)/(x^2-x+1)

x+1

> expand((x^2-4)*(x+1)*(x-2)*(x^2+x+1));

x^6-6*x^4-3*x^3+6*x^2+12*x+8

> factor(%);

(x+2)*(x+1)*(x^2+x+1)*(x-2)^2

Yhtälöistä

> yhtalot:={2*x-5*y=12, 12*x+4*y=17}; # Kyseessä on joukko

yhtalot := {2*x-5*y = 12, 12*x+4*y = 17}

> ratk:= solve(yhtalot, {x,y});

ratk := {x = 133/68, y = -55/34}

Maple ei sijoita ratkaisuja muutujille arvoiksi, vaan palauttaa sijoitussäännöt. Ne voidaan antaa suoraan

subs-komennolle. Mieti seuraavan komnetojonon logiikkaa!

> subs(ratk,x),subs(ratk,y);

133/68, -55/34

> X:=subs(ratk,x); Y:=subs(ratk,y);

X := 133/68

Y := -55/34

Tarkistaminen käy vaivattomasti:

> subs(ratk,yhtalot);

>

{12 = 12, 17 = 17}

Voidaan myös käyttää lhs (left hand side) ja rhs (right hand side)-tapaa, mutta se on hiukan vähemmän elegantti ja myös altis Maplen harrastamalle järjestyksen vaihtumiselle ratkaisujoukossa. Niinpä tätä tyyliä ei voida ajaa automaattisesti, vaan tuloksiin on puututtava interaktiivisesti, mikä voi olla kiusallista, jos on "vakavahenkisestä" dokumentista kyse. Joka tapauksessa tämäkin tyyli kannattaa omaksua.

> rhs(ratk[1]);lhs(ratk[1]);

133/68

x

> lhs(ratk[2])=rhs(sol[2]);

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

Ratkaisun sijoittaminen muuttujan arvoksi

Tässä nyt on toisin sanoin selitetty samaa, pyyhi omasta dokustasi pois tai järjestä paremmin.

Tietysti näin:

> X:=rhs(ratk[1]);Y:=rhs(ratk[2]);

X := 133/68

Y := -55/34

Turvallisempi ja elegantimpi tapa (jota edellä mainostettiin):

Suorita ratk-yhtälöiden ilmaisemat korvaamiset lausekkeessa (pelkkä) x ja
suorita ratk-yhtälöiden ilmaisemat korvaamiset lausekkeessa (pelkkä) y .

Edellisessä y-yhtälö jää vaille käyttöä (kun pelkkä x ei sisällä y:tä) ja jälkimmäisella vastaavasta syystä x-yhtälö. sol-joukon

järjestys ei näyttele mitään osaa.

> X:=subs(ratk,x);Y:=subs(ratk,y);

X := 133/68

Y := -55/34

Tehokkain, mutta turvattomin tapa, joskus tosi kätevä: assign(ratk);

> assign(ratk);

> x;y;yhtalot;

133/68

-55/34

{12 = 12, 17 = 17}

> solve(yhtalot,{x,y});

Error, (in solve) a constant is invalid as a variable, -55/34, 133/68

assign(ratk); toimii ikäänkuin ratk-yhtälöissä yhtälömerkki (=) vaihdettaisiin sijoitusmerkkin (:=)

Yhtälöiden toteutuminen saadaan hyvin kätevästi tarkistetuksi kirjoittamalla vain yhtalot;

Sensijaan yhtälöiden ratkaisua ei voida toistaa, ennekuin muuttujat x ja y on vapautettu arvoistaan.

> x:='x':y:='y':solve(yhtalot,{x,y});

{x = 133/68, y = -55/34}

Joukot { }, jonot, listat [ ]

Tässä vähän University of North Carolinan sivulta poimittua tekstiä:

Observe that we have now employed three different kinds of grouping symbols: "()","{}", and "[]". They are used for different purposes, and Maple requires that they be used correctly. The standard parentheses "()" are used with functions as in factor(x^2-1) and sin(Pi). The braces "{}" are used to group a set as in {x,y}. The square brackets "[]" are used to pick a coordinate from a group as in sol[2]. We will see other uses for these symbols.
Hakasulut ovat myös listasulut.
Tärkeimmät tietorakenteet:

> op(joukko); # Vastaavasti joukon operandi

Huom : Listan järjestys on käyttäjän hallinnassa, joukon ei.
Joukon hyöty on ainakin se, että Maple osaa poistaa toistot ja joukko-operaatiot toimivat.

map - funktion soveltaminen listan (tai muun rakenteen) jokaiseen alkioon (osaan)

> lista:=[a,b,c];map(f,lista);

lista := [a, b, c]

[f(a), f(b), f(c)]

> jono:=a,b,c;lista:=[a,b,c];op(lista);joukko:={a,b,c}; op(joukko);

jono := a, b, c

lista := [a, b, c]

a, b, c

joukko := {b, c, a}

b, c, a

>

7. Piirtoa

[SOL] ss. 10 - 11

[HAM] Luku 3 ss. 89 - 100

Tavallinen käyrien piirto

Käyräparven voi sulkea joko joukkosulkuihin { } tai listasulkuihin [ ] .
Jälkimmäinen lienee suositeltavaa, koska järjestys on silloin käyttäjän hallinnassa (ei siinä
muuta, mutta jos vaikka halutaan värit hallitusti).

> plot([sin(x),cos(x)],x=0..4*Pi);

[Maple Plot]

Valitse sama mittakaava akseleilla (1:1)

Parametrimuotoinen piirto

Syntaksi poikkeaa aika vähän, tämä täytyy vain oppia (tai katsoa aina uudelleen helpistä).

Aina ei ole hauskaa joutua valitsemaan hirellä, samaskaalaiisuus (ja monia muita) voidaan antaa plot-komennon tarkentimena.

> plot([sin(t),cos(t),t=0..2*Pi],scaling=constrained);

[Maple Plot]

Pisteet voidaan yhtä hyvin ajatella kompleksitason pisteinä. complexplot osaa käsitellä suoraan reaalimuuttujan kompleksiarvoista funktiota. Tässä on sekin mukava piirre, että syntaksi on luonnollisempi ja siten helpompi muistaa kuin tuossa parametrimuotoisessa R^2-piirrossa.

> complexplot(cos(t)+I*sin(t),t=0..2*Pi,scaling=constrained,color=blue);

[Maple Plot]

Kunhan opimme kompleksisen exp-funktion, niin edellinen voidaan ilmaista lyhyemmin:

> complexplot(exp(I*t),t=0..2*Pi,scaling=constrained,color=cyan,style=point);

[Maple Plot]

Taulukoidun datan piirto ("listaplotti")

Sometimes we will be interested in functions defined in terms of a discrete
table of values rather than a formula. For example, consider the following table of
temperatures recorded at various times on a spring day in Raleigh.

Time: | 6:00 a.m. | 10:00 a.m. | 12:00 p.m. | 4:00 p.m. | 5:00 p.m.
----------------------------------------------
Temp: | 45 deg. | 57 deg. | 65 deg. | 67 deg. | 66 deg.

Table of Temperatures on a Spring Day in Degrees Fahrenheit

To plot this data you must first define the points as a list. Since the time is recorded in a cyclic fashion, we will plot the times in the so-called "military style", i.e. 6:00 a.m. is 0600 and 6:00 p.m. is 1800.

> ListOfPoints := [[600,45], [1000,57], [1200,65], [1600,67], [1700,66]];

ListOfPoints := [[600, 45], [1000, 57], [1200, 65],...

The plot command allows you to plot a list of points and to connect them with straight lines (unless you choose another option). This is illustrated in the next command. Notice also the option which produces a title on the plot.

> plot(ListOfPoints, title=`Temperatures at Various Times`);

[Maple Plot]


While the data can be plotted in this way, because the data is given for a discrete set of points you may prefer the
style=POINT option as illustrated in the next command. Note also the effect of the symbol=CIRCLE option.

> plot(ListOfPoints, style=POINT, symbol=CIRCLE,symbolsize=20, title=`Temperatures at Various Times`);

[Maple Plot]

>

Exercise

1. Plot the graph of f(x) = exp(-x)*sin(2*x) over the interval [ -pi, pi ] .

2. Make a plot of the points in the following table:

X: | -1 | 0 | 1 | 2 | 3
-------------------------------------------
Y: | 2.72 | 1 | 0.368 | 0.135 | 0.0498

Make two plots, one with the points connected and the other with only the data points.

Miten saadaan kätevästi koordinaattiparien lista [[x1,y1],[x2,t2],...] ?

Olkoon annettu numeeriset listat (Matlabissa sanoisimme vektorit) X ja Y. Matlabin plot toimii tyyliin plot(x,y);

Maplessa täytyy muodostaa parien lista vaikkapa tähän tapaan:

> a:=-Pi:b:=Pi:N:=20:h:=(b-a)/N:x:=seq(evalf(a+i*h),i=0..N);

x := -3.141592654, -2.827433389, -2.513274123, -2.1...
x := -3.141592654, -2.827433389, -2.513274123, -2.1...
x := -3.141592654, -2.827433389, -2.513274123, -2.1...

Olkoot y-arvot vaikkapa sin-funktion arvoja x-pisteissä. Parijono saataisiin nyt näin:

> xy:=[seq([x[i],sin(x[i])],i=1..N+1)];

xy := [[-3.141592654, .4102067615e-9], [-2.82743338...
xy := [[-3.141592654, .4102067615e-9], [-2.82743338...
xy := [[-3.141592654, .4102067615e-9], [-2.82743338...
xy := [[-3.141592654, .4102067615e-9], [-2.82743338...
xy := [[-3.141592654, .4102067615e-9], [-2.82743338...

> plot(xy);plot(xy,style=point,symbol=circle);

[Maple Plot]

[Maple Plot]

Huom: plots -pakkauksessa on listplot ja pointplot . Maplelle luonteenomaista on, että siinä on joukko redundantteja funktioita. Mielestäni on parempi oppia käyttämään harvempaa ydinfunktiojoukkoa kuin omaksua monenlaisia synonyymejä. Niissä voi toki olla joitakin uusia mahdollisuuksia, mutta esim. näissä ei välttämättä ole (kuka noita kaikkia tuhansia ehtii penkoa).

Taulukointi

Tässä teimme itse asiassa taulukon, jonka on havainnollisempi usein matriisina.

> txy:matrix(xy):linalg[transpose](xy):

Tilan säästämiseksi otetaan vähemmän dataa esimerkkiimme. Jätetäänpä myös evalf pois.

> a:=-Pi:b:=Pi:N:=8:h:=(b-a)/N:x:=seq(a+i*h,i=0..N);
xy:=[seq([x[i],sin(x[i])],i=1..N+1)];
matrix(xy);

x := -Pi, -3/4*Pi, -1/2*Pi, -1/4*Pi, 0, 1/4*Pi, 1/2...

xy := [[-Pi, 0], [-3/4*Pi, -1/2*sqrt(2)], [-1/2*Pi,...

matrix([[-Pi, 0], [-3/4*Pi, -1/2*sqrt(2)], [-1/2*Pi...

> linalg[transpose](xy);

matrix([[-Pi, -3/4*Pi, -1/2*Pi, -1/4*Pi, 0, 1/4*Pi,...

> array(xy); # Taas synonyymi, mutta tiettyjä erojakin yleisyydessa / matriisilaskukyvyissä.

matrix([[-Pi, 0], [-3/4*Pi, -1/2*sqrt(2)], [-1/2*Pi...

Grafiikoiden yhdistäminen, plots[display] ja textplot

Tässä tarvitaan lisägrafiikkapakkaus plots

> restart:with(plots):

Warning, the name changecoords has been redefined

Selvitä itsellesi, mitä seuraavassa tehdään. Mieti tarkkaan, miksi jossain pitää antaa plot:lle argumentiksi

f(x) ja miksi taas jossain esim. tang. Voit sitten huvitella vaihtelemalla funktion määritelmää

ja / tai pistettä x0. Kirjoitetaan pieni malliskripti, jonkalaisia voit tehdä moninaisissa yhteyksissä.

> x0:=1: f:=x->x^3: # Vaihtuva syöte

> df:=diff(f(x),x): kk:=subs(x=1,df);

kk := 3

> x0:=1: tang:=f(x0)+kk*(x-x0);

tang := -2+3*x

> fkuva:=plot(f(x),x=0..2,color=red): tangkuva:=plot(tang,x=0..2,color=blue): p0kuva:=plot([[x0,f(x0)]],style=point,symbol=circle,symbolsize=15,color=black):

> display([fkuva,tangkuva,p0kuva]);

[Maple Plot]

>

>

Kokeile (mutta vain kerran elämässäsi, silloinkin syvästi katuen, että olit yllytyshullu),

mitä tapahtuu, kun vaihdat (:) -> (;) vaikkapa fkuva:=; . .. yllä. PLOT-tietorakenne paljastuu.

- No, mene edit-valikkoon ja -> remove output, kyllä se siitä.

Sometimes it will be desirable to print text on a plot. The plots procedure textplot will allow this. The following commands will serve as examples of the textplo t and display routines. Make sure you notice where colons and semicolons are used in these commands.

In the next commands it is important to use colons to punctuate the first two statements. Otherwise Maple V will ouput an entire page of text describing the plot structure rather than the graph. The textplot in the second command causes the text x=0.6356,y=0.5000 to be printed at the point (.6356,.5000). The statement align=RIGHT aligns this text to the right of the point. Also make sure you notice that backward quotes (`) surround the text statement. Nykyisin käyvät myös " " -merkit.

> f := x -> exp(-x)*sin(3*x);
plot1 := plot(f, 0..3):# tai plot1:=plot(f(x),x=0..3):
plot2 := plots[textplot]([0.6356, 0.5000, `x=.6356, y=.5000`], align=RIGHT):
plots[display]({plot1, plot2});

f := proc (x) options operator, arrow; exp(-x)*sin(...

[Maple Plot]

Huom:

plots-pakkauksen (kuten muidenkin pakkausten) funktioita voidaan käyttää myös lataamatta

koko pakkausta, tällöin pakkauksen nimeä ikäänkuin indeksoidaan ao. funktion nimellä

tyyliin plots[display]

>

3d-grafiikkaa, animaatiot

Otetaan lämmönjohtumisesimerkki, jossa valaistaan

Tarkastellaan sivuiltaan lämpöeristettyä sauvaa, jonka päät upotetaan hetkellä t=0 jäävesisäiliöihin (0 astetta) ja jonka
alkulämpötilajakauma on

> f:=x->100*sin(Pi*x/80);

f := proc (x) options operator, arrow; 100*sin(1/80...

Huomaa funktiomääritys .

Olkoon sauvan pituus L=80.

Tässä tapauksessa lämpöyhtälön ratkaisuna olevasta Fourier-sarjasta tulee vain yksi termi. Ratkaisu on (sopivalla lämmönjohtumiskertoimella)

> u:=(x,t)->100*sin((Pi*x)/80)*exp(-0.001785*t);

u := proc (x, t) options operator, arrow; 100*sin(1...

Pintapiirros

> with(plots):

> plot3d(u(x,t),x=0..80,t=0..400);

[Maple Plot]

Animaatio

> animate(u(x,t),x=0..80,t=0..300,frames=30,color=blue);

[Maple Plot]

Lämpötilaprofiilit ja korkeuskäyrät

> plot({seq(u(x,t),t=[0,10,50,100,200,300,400])},x=0..80);

[Maple Plot]

> contourplot(u(x,t),x=0..80,t=0..400);

[Maple Plot]

>

Implicitplot

Tämä on periaatteessa sama kuin yhden korkeuskäyrän piirto.

> implicitplot({x^2+y^2=1,x^3+y^3=1,x^10+y^10=1},x=-2..2,y=-2..2);

[Maple Plot]

>

>

Tuohon tekisi mieli laittaa loppuun esim: ,color=[red,blue,black]);

mutta näköjään kaikki plot :n hyväksymät optiot eivät tässä toimi.