Simo K. Kivelä

Kevään 2000 pitkän matematiikan ylioppilastehtävät Mathematicalla ratkaistuina

Tarkoituksena on antaa aineksia pohdiskeluun, miten symboliset laskentaohjelmat saattavat muuttaa matematiikan opetusta ja samalla julkaista ylioppilastehtävien ratkaisut. Koska ylioppilaskokeessa ei symbolisia ohjelmia käytetä eikä tehtäviä ole laadittu tällaista ratkaisemista ajatellen, ei oheisia ratkaisuja voida pitää minkäänlaisina malliratkaisuina. Ne eivät myöskään sisällä mitään informaatiota kokeen arvosteluperusteista.

Ratkaisuissa selitykset ja perustelut on jätetty mahdollisimman vähiin. Toivon kuitenkin, että ratkaisujen idea tulee ymmärrettäväksi. Jotkut käytetyistä komennoista saattavat olla tottuneellekin käyttäjälle outoja. Tarvittaessa on syytä turvautua Mathematican dokumentaatioon.

Kaikissa kohdin ratkaisut eivät hyödynnä parhaalla tavalla Mathematicassa olevia funktioita. HTML-version ulkoasussa on myös toivomisen varaa. Syy on yksinkertainen: Mathematica ei toimi, kuten dokumentaation perusteella voisi odottaa. Tämä ei sinänsä ole mullistavaa: Ohjelmistoissa on aina virheitä. Tuotteet tuodaan markkinoille raakileina. Olkaa varovaisia, jos suunnittelette ydinvoimalaa tms. tietotekniikkaa hyödyntäen.

SKK

Tehtävä 1

ehto1= kylki == kanta+1.5

ehto2= 2 kylki + kanta == 15

ratk= Solve[{ehto1,ehto2},{kylki,kanta}]

{kanta,korkeus}=
{kanta,Sqrt[kylki^2 - (kanta/2)^2]}/.Flatten[ratk]

ala= kanta korkeus/2

Vastaus: 10.2 (cm^2) .

Tehtävä 2

Solve[192/jasenet == 192/(jasenet+2) + 8,jasenet]

Vastaus: 6 jäsentä

Tehtävä 3

a= (1/x - x)/(1/x + 1)//Simplify

b= (x - 1)/(1 - 1/Sqrt[x])/(1 + 1/Sqrt[x])//Simplify

Solve[a==b,x]

Vastaus: 1/2

Tehtävä 4

sokeria= 0.04 omenia

kuivaa= 0.20 omenia

Kuivien omenien massa = niiden sisältämä vesi + kuiva-aine:

ratk= Solve[kuiviaomenia == 0.20 kuiviaomenia + kuivaa,
kuiviaomenia]

sokeriprosentti= sokeria/kuiviaomenia/.Flatten[ratk]

Vastaus: 16 %

Tehtävä 5

a= 5.27

b= 3.16

kulma= (72 + 50/60) Degree

etaisyys= Sqrt[a^2 + b^2 - 2 a b Cos[kulma]]//N

Vastaus: 5.28 km

Puhdistetaan välillä työtilaan kertyneet muuttujat:

Remove["Global`*"]

Tehtävä 6

karki= {1,2}

piste1= {4,6}

piste2= {13,-3}

vekt1= piste1 - karki

vekt2= piste2 - karki

suunta= vekt1/Sqrt[vekt1.vekt1] + vekt2/Sqrt[vekt2.vekt2]

suunta/Sqrt[suunta.suunta]//Simplify

Vastaus: (1/(Sqrt[130])) {11, 3}

Tehtävä 7

k= 1 - Exp[-2 x]

f= Integrate[k,x] + c

ratk= Solve[k==0,x]

cnarvo= Solve[(f/.First[ratk])==2,c]

f/.First[cnarvo]

Vastaus: f(x)  =  
        (1/2) (e^(-2 x))  +  x  +  (3/2)

Tehtävä 8

p[n_]:= a^n Exp[-a] / n!

todennakoisyys= 1 - Sum[p[k],{k,0,4}]/.a->3//N

Vastaus: 0.18

Tehtävä 9

keskus= {1,4}

Määritellään projektiokuvaus:

proj[{x_,y_}]:= Module[{},sade= keskus + t ({x,y} - keskus);
ratk= Solve[sade[[2]]==0,t]; sade/.First[ratk]]

a= {0,1}

b= {4,3}

Projisioidaan pisteet edellä määritellyn kuvauksen avulla:

a1= proj[a]

b1= proj[b]

c= (a+b)/2

c1= proj[c]

a1 - c1 == c1 - b1

Vastaus: välille [-(1/3), 13], ei ainakaan aina projisioidu tasaväliseksi

Tehtävä 10

Piirretään ensin rombidodekaedri. Seuraavat syötteet päättyvät puolipisteisiin, joten pitkähköjä tulostuksia ei näytetä.

Määritellään yksi tahko ja kierretään sitä z-akselin ympäri uusiin asentoihin; tätä varten määritellään kiertokuvaus matriisin avulla:

tahko= {{2,0,0},{1,1,1},{0,2,0},{1,1,-1},{2,0,0}};

kiertomatr= {{0,1,0},{-1,0,0},{0,0,1}};

kuvaus[matriisi_,kohde_]:=
Transpose[matriisi.Transpose[kohde]]

tahkot1= {kuvaus[kiertomatr,tahko],
kuvaus[kiertomatr.kiertomatr,tahko],
kuvaus[kiertomatr.kiertomatr.kiertomatr,tahko],
kuvaus[kiertomatr.kiertomatr.kiertomatr.kiertomatr,tahko]};

Lisää sivutahkoja saadan kiertovaihtelulla:

tahkot2= tahkot1/.{x_,y_,z_}:>{y,z,x};

tahkot3= tahkot2/.{x_,y_,z_}:>{y,z,x};

Määritellään tahkot läpinäkymättömiksi monikulmioiksi:

rombidode= Map[Polygon,Flatten[{tahkot1,tahkot2,tahkot3},1]];

Lisätään rombidodekaedrin sisällä olevan kuution kärjet, jotta saadaan havainnollisempi kuva:

kuutionkarjet= Map[Point,{{1,1,1},{1,1,-1},{1,-1,1},{1,-1,-1},
{-1,1,1},{-1,1,-1},{-1,-1,1},{-1,-1,-1}}];

Piirretään:

Show[Graphics3D[{PointSize[0.03],kuutionkarjet,rombidode}],
ViewPoint->{0.4,-4,1.5},Shading->False,
BoxRatios->{1,1,1},Boxed->False]

Voidaan myös muodostaa rautalankamalli ja piirtää se:

rautalankamalli=
Map[Line,Flatten[{tahkot1,tahkot2,tahkot3},1]];

Show[Graphics3D[{PointSize[0.03],kuutionkarjet,rautalankamalli}],
ViewPoint->{0.4,-4,1.5},Shading->False,
BoxRatios->{1,1,1},Boxed->False]

Projisioidaan rautalankamalli yz-tasoon ja piirretään paksummalla viivalla kuution sivutahkolla olevan pyramidin projektio:

Show[Graphics[{PointSize[0.03],kuutionkarjet/.{x_,y_,z_}:>{y,z},
rautalankamalli/.{x_,y_,z_}:>{y,z},
Thickness[0.01],Line[{{0,2},{1,1},{-1,1},{0,2}}]}],
AspectRatio->Automatic]

Kuution särmä = s.

a) Pyramidin pohjasärmä = s, korkeus = s/2. Vastaus: suhde = (1/2).

b) Sivutahko suunnikas, jonka lävistäjät = s ja = s (Sqrt[2]). Suunnikaskuvio:

Show[Graphics[{Line[{{-1,0},{1,0}}],
Line[{{0,-Sqrt[2]},{0,Sqrt[2]}}],
Line[{{-1,0},{0,Sqrt[2]},{1,0},{0,-Sqrt[2]},{-1,0}}]}],
AspectRatio->Automatic]

Haetaan suunnikkaan pienempi kulma α numeerisesti käyttäen alkuapproksimaationa arvoa 45 astetta:

ratk= FindRoot[Tan[α Degree/2]==1/Sqrt[2],{α,45 Degree}]

Kulmat ovat tällöin

{α,β}= {α,180 - α}/.ratk

Vastaus: 71 astetta ja 109 astetta

c) Rombidodekaedrin tilavuuden suhde kuution tilavuuteen on

(s^3 + 6 1/3 s^2 s/2)/s^3

Vastaus: 2

Remove["Global`*"]

Tehtävä 11

Kartion pohjan säde r, sivujana s, korkeus h; pallon säde R; segmentin korkeus x.

arvot= {r->6.6,s->11.0,h->Sqrt[11.0^2-6.6^2]}

Yhdenmuotoisista kolmioista:

pallonsade= Solve[r/s == R/(h-x+R),R]

Segmentin tilavuus ja tämän derivaatta:

Vsegm= Pi x^2 (R - x/3)/.First[pallonsade]

Vder= D[Vsegm,x]

nollakohdat= Solve[Vder==0,x]

nollakohdat /. arvot

Derivaatan nollakohdista vain jälkimmäinen on alueessa:

R/.First[pallonsade]/.Last[nollakohdat]/.arvot

Plot[Vsegm /. arvot, {x, 0, 8}]

Kyseessä on siis maksimikohta.

Vastaus: 6.0 cm

Tehtävä 12

a) Ei ole tosi. Vastaesimerkiksi kelpaa

f[x_] := -Exp[-x]

Plot[f[x], {x, -5, 5}, PlotRange -> {-5, 5}]

b) On tosi, mutta todistuksessa lienee vaikeaa hyödyntää Mathematicaa.

Tehtävä 13

f[x_]:= Exp[-x](Sin[x] + Cos[x])

D[f[x],x]//Simplify

int= Integrate[Exp[-x] Sin[x],{x,n π,(n+1)π}]/.
{Sin[m_ π]:>0,Cos[m_ π]:>(-1)^m}

On siis geometrinen jono suhdelukuna -(e^(-π)). (Lausekkeesta saa tekijäksi (((-(e^(-π))))^n), mutta en onnistunut sieventämään Mathematicalla tähän muotoon.)

a[n_]:=Evaluate[int]

Sum[a[n]/(-1)^n,{n,0,Infinity}]

\(TraditionalForm\`Vastaus : \(1 + e\^π\)\/\(2\ \((\(-1\) + e\^π)\)\)\)

Tehtävä 14

diffyht= p'[t] == a p[t]

ratk= DSolve[diffyht,p,t]

ehdot= {p[0]==200,p[3]==700}/.First[ratk]

vakiot= Solve[ehdot,{C[1],a}]

p[t_]:=Evaluate[p[t]/.First[ratk]/.First[vakiot]]

p[t]

p[5]//N

Vastaus: 1600

Tehtävä 15

m= 34086

n= 14630

Lyhyesti (GCD = greatest common divisor = syt):

{syt, {a, b}} = ExtendedGCD[m, n]

Remove[a, b]

Tai hieman pidemmin, jolloin myös saadaan kaikki luvut a ja b:

r1= Mod[m,n]

r2= Mod[n,r1]

r3= Mod[r1,r2]

r4= Mod[r2,r3]

r5= Mod[r3,r4]

Vastaus: syt = 38

Lukujen a ja b etsiminen:

b= b/.First[Solve[syt == m a + n b,b]]

taulu= Cases[Table[{a,b},{a,-1000,1000}],{_,_Integer}]

Lukupareja on siis useita. Tarkistuksen vuoksi:

Map[{m,n}.#&,taulu]

Yleisen lain hakeminen:

Drop[taulu,1] - Drop[taulu,-1]

aa= -97 - 385 t

bb= 226 + 897 t

{m,n}.{aa,bb}//Simplify

Vastaus: a  =  -97  -  385 t, b  =  226  +  897 t, t kokonaisluku.