Pitkän matematiikan ylioppilaskokeen ratkaisut syksyllä 2001

Ohessa ovat kokeen tehtävien ratkaisut Mathematicalla tehtyinä. Useat selittynevät sellaisinaan ilman kommentteja, mutta joihinkin olen lisännyt huomautuksia. Missään mielessä nämä eivät ole ylioppilaskokeen malliratkaisuja. Niitä katsellessa kannattaa pikemminkin miettiä, mihin olemme menossa: Käytetäänkö ylioppilaskokeessa jonakin päivänä Mathematican kaltaisia välineitä? Mitä tämä vaikuttaa tehtäviin?

Simo K. Kivelä

Tehtävä 1

Solve[{3 x  -  2 y  ==  1,  
        4 x  +  5 y  ==  2}, {x, y}]

Tehtävä 2

Solve[(a  -  b) x^2  +  a x  +  b  ==  0, 
      x]

Mathematica käsittelee siis ns. yleistä tapausta eikä erikoistapausta, missä a  =  b. Tehtävän oletusta a  ≠  b ei tarvitse millään tavoin antaa. Kyseessä on yleinen symbolisen laskentaohjelman piirre, josta on syytä olla tietoinen.

Tehtävä 3

Ehkä selkeintä on antaa numeroarvot ns. sijoitussäännössä:

arvot =  {t1 -> 8 + 6/60, h1 -> 9 + 58/60, 
        h2 -> 8 + 58/60, t2 -> 11 + 2/60, s -> 187, 
        v1 -> s/(h1 - t1), v2 -> s/(t2 - h2)}

Tällöin laskut voidaan tehdä symboleilla ja sijoittaa arvot vasta lopuksi:

nopeudet =  {v1, v2} //. arvot // N

kohtaamisehto =  (t - t1) v1  +  (t - h2) v2  ==  
        s

kohtaamisaika =  Solve[kohtaamisehto, t]

Kohtaamisaika ja -paikka, ts. kelloaika desimaalisena ja etäisyys Helsingistä kilometreissä:

kohtaaminen =  {t, (t - h2) v2} /. First[kohtaamisaika] //. 
          arvot // N

Kohtaamisaika voidaan esittää 60-järjestelmässä, jolloin nähdään suoraan tunnit, minuutit ja sekunnit:

RealDigits[kohtaaminen[[1]], 60]

Sekunnin tarkkuudella siis (vaikkei näin iso tarkkuus toki järkevää olekaan): 9.29.32.

Tehtävä 4

y1 =  
      y /. First[
          Solve[x^2  -  6 x  -  3  +  4 y  ==  0, 
            y]]

y2 =  
      y /. First[Solve[2 x^2  +  1  -  y  ==  0, y]]

rtk =  Solve[y1 == y2, x]

Leikkauspisteitä on siis vain yksi, koska juuret yhtyvät. Itse piste on

yhtpiste =  {x, y1} /. rtk[[1]]

Kulmakertoimetkin yhtyvät:

kulmakert =  {D[y1, x], D[y2, x]} /. rtk[[1]]

Tangentin yhtälö:

tangyht =  
      y  -  yhtpiste[[2]]  ==  
          kulmakert[[1]] (x  -  yhtpiste[[1]]) // 
        Simplify

Tehtävä 5

0.8*0.2  +  0.2*0.6

Varsin yksinkertainen lasku, kunhan tietää mitä tekee. Ja siinä Mathematica ei auta.

Tehtävä 6

troopp =  2*2*Pi*R*R*Sin[23.5 Degree]/(4*Pi*R^2)

napa =  
      2*2*Pi*R*R*(1  -  Sin[66.5 Degree])/(4*Pi*
              R^2)

Jälleen yksinkertainen lasku, mutta vyöhykkeen ja kalotin alan kaava on tiedettävä.

Tehtävä 7

Syötetään ensin pisteet:

p1 =  {2, 11 + 1/2, 2}

p2 =  {4, 1/2, -1}

q1 =  {5, 2, 0}

q2 =  {1, 1, 1}

q3 =  {4, 1, 3}

Muodostetaan suoran ja tason suuntavektorit. Vektorit esitetään Mathematicassa listoina.

s =  p2 - p1

t1 =  q2 - q1

t2 =  q3  -  q1

Tarkistetaan, onko suoran suuntavektori kohtisuorassa tason suuntavektoreita vastaan:

{s . t1 == 0, s . t2 == 0}

Tehtävä 8

Periaatteessa kyse on seuraavan lausekkeen raja-arvon laskemisesta, mutta tätä Mathematica ei osaa Limit-funktiolla suoraan, vaan lauseketta on ensin sievennettävä tavalla. Tämä taas edellyttää, että käyttäjä itse näkee, mihin kannattaa pyrkiä.

ero1 =  Log[1  +  Exp[x]] - x

ero2 =  ero1 /. x -> Log[Exp[x]]

ero3 =  ero2 /. Log[a_] - Log[b_] ->  Log[a/b]

Tarkistus, että sievennyksessä ei ole tehty virheitä:

FullSimplify[ero1 == ero3, Element[x, Reals]]

Huomattakoon, että yhtäsuuruus ei ole lainkaan ongelmatonta, jos x ei ole reaalinen. (Mathematica varautuu siihen, että muuttujat ovat kompleksisia, ellei muuta ilmoiteta.)

Ja sitten raja-arvo:

Limit[ero3, x -> Infinity]

Tehtävä 9

q =  (2 x  -  1)/(3 x  +  1)

Epäyhtälön ratkaisemiseksi ladataan lisäpaketti:

<< Algebra`InequalitySolve`

ehdot =  InequalitySolve[Abs[q] < 1, x]

summa =  Sum[q^k, {k, 0, Infinity}]

Hävitetään aiemmin luotu symboli s:

Remove[s]

Summafunktio määritellään vain niillä muuttujan x arvoilla, joilla sarja suppenee:

s[x_ /; ehdot] = summa

Plot[s[x], {x, -5, 5}, PlotRange -> {-1, 15}]

Tehtävä 10

ympyra =  (x  -  a)^2  +  (y  -  b)^2  ==  
        r^2

yhtalo1 =  ympyra /. {x -> 28, y -> 98}

yhtalo2 =  ympyra /. {x -> 70, y -> 112}

yhtalo3 =  ympyra /. {x -> 126, y -> 84}

rtk =  Solve[{yhtalo1, yhtalo2, yhtalo3}, {a, b, r}]

sade =  25 r /. rtk[[2]]

Tehtävä 11

f =  1/(x^2  +  x  +  1)

Koulukurssilla lausekkeen integrointi ei välttämättä onnistu (eikä se toki ole tarpeenkaan, tehtävästä selviää muutenkin), mutta Mathematica integroi:

ala =  Integrate[f, {x, a, a + 2}]

deriv =  D[ala, a] // ExpandAll

arvo =  Solve[deriv == 0, a]

Kuvia käyrästä:

kayra =  Plot[f, Evaluate[{x, a, a + 2} /. First[arvo]]]

Show[kayra, 
      Graphics[{Line[{{a, 0}, {a, 1}}], Line[{{a + 2, 0}, {a + 2, 1}}]} /. 
          arvo]]

Geometrisesti lienee selvää, että integroimisvälin tulee sijaita symmetrisesti käyrän huippuun nähden.

Tehtävä 12

Aluksi kuvioita:

f =  x^3  +  1

kayra =  Plot[f, {x, -1, 3}, PlotRange -> {0, 9}]

Show[kayra, 
      Graphics[{Line[{{3, 0}, {3, 9}}], Line[{{2, 9}, {3, 9}}]}]]

Jotta päästään integroimaan pyörähdyskappaleen tilavuutta, ratkaistava x muuttujana y:

rtk =  Solve[f == y, x]

Juuria saadaan kolme (tietenkin), mutta ei ole selvää, mikä niistä on reaalinen ja siis se, mitä tarvitaan. Itse asiassa yksi ja sama lauseke ei kelpaa koko alueella:

Table[
        Element[Expand[x /. rtk[[k]]], Reals], {y, 0, 9, 1/2}, {k, 1, 
          3}] // TableForm

Tulos lienee hiukan yllättävä, mutta liittyy siihen, miten kuutiojuuri (eli potenssi 1/3) määritellään kompleksitasossa. Integrointi on syytä tehdä tämän takia kahdessa osassa:

sade1 =  3  -  x /. rtk[[3]]

sade2 =  3  -  x /. rtk[[1]]

tilav =  
      Integrate[Pi sade1^2, {y, 0, 1}]  +  
        Integrate[Pi sade2^2, {y, 1, 9}]

Tehtävä 13

Tehtävässä ei juurikaan ole iloa Limit-funktiosta eikä kovin paljon Mathematicastakaan. Piirretään kuitenkin kuvia ja taulukoidaan jotakin.

Hävitetään ensin vanha f ja määritellään sitten funktiot:

Remove[f]

f[x_ /; x ≠ 0] = 0

f[0] = 1

g[x_ /; x ≠ 0] =  Sin[1/x]

g[0] = 0

h[x_] = x g[x]

Plot[f[x], {x, -1, 1}, Axes -> False]

Arvo f(0)  =  1 ei lainkaan erotu.

Funktion g nollakohtien etsiminen ei kunnolla onnistu:

rtk =  Solve[g[x] == 0, x]

rtk =  Solve[Sin[1/x] == 0, x]

rtk =  Solve[1/x == n Pi, x]

Lopulta on kuitenkin saatu jotakin, mutta ei tässä Mathematicasta paljonkaan iloa ollut:

Simplify[Sin[1/x] /. First[rtk], Element[n, Integers] ]

Kuvioita kuitenkin voidaan piirtää:

Plot[g[x], {x, -1, 1}, PlotPoints -> 201]

Plot[h[x], {x, -1, 1}, PlotPoints -> 201]

Funktio h siis näyttää jatkuvalta origossa.

Yhdisteyllä funktiolla sen sijaan ei ole raja-arvoa origossa, koska se miten lähellä origoa tahansa saa sekä arvon 1 että arvon 0:

Table[{f[h[x]], f[h[x +  .000001]]} /. x -> 1/(n Pi), {n, 1, 
          20}] // TableForm

Tehtävä 14

Poistetaan jälleen historia

Remove[f, g, h]

ja syötetään vasta sitten uudet funktiot:

f[x_] =  Exp[x]  +  Sin[x]

g[x_] := x  -  f[x]/f'[x]

g[x]

Plot[f[x], {x, -10, 2}]

Newtonin iteraatio sujuu tämän jälkeen helposti:

NestList[g, 0.0, 7]

Tehtävä 15

diffyht =  e'[t]  ==  k/e[t]

rtk =  DSolve[diffyht, e[t], t]

e[t_] = e[t] /. rtk[[2]]

e[t]

e''[t]

Plot[e[t] /. {k -> 2, C[1] -> 3}, {t, -2, 5}]