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

In[1]:=

ehto1= kylki == kanta+1.5

Out[1]=

kylki == 1.5`  + kanta

In[2]:=

ehto2= 2 kylki + kanta == 15

Out[2]=

kanta + 2 kylki == 15

In[3]:=

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

Out[3]=

{{kylki -> 5.5`, kanta -> 4.`}}

In[4]:=

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

Out[4]=

{4.`, 5.123475382979799`}

In[5]:=

ala= kanta korkeus/2

Out[5]=

10.246950765959598`

Vastaus: 10.2 cm^2 .

•Tehtävä 2

In[6]:=

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

Out[6]=

{{jasenet -> -8}, {jasenet -> 6}}

Vastaus: 6 jäsentä

•Tehtävä 3

In[7]:=

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

Out[7]=

1 - x

In[8]:=

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

Out[8]=

x

In[9]:=

Solve[a==b,x]

Out[9]=

{{x -> 1/2}}

Vastaus: 1/2

•Tehtävä 4

In[10]:=

sokeria= 0.04 omenia

Out[10]=

0.04` omenia

In[11]:=

kuivaa= 0.20 omenia

Out[11]=

0.2` omenia

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

In[12]:=

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

Out[12]=

{{kuiviaomenia -> 0.25` omenia}}

In[13]:=

sokeriprosentti= sokeria/kuiviaomenia/.Flatten[ratk]

Out[13]=

0.16`

Vastaus: 16 %

•Tehtävä 5

In[14]:=

a= 5.27

Out[14]=

5.27`

In[15]:=

b= 3.16

Out[15]=

3.16`

In[16]:=

kulma= (72 + 50/60) Degree

Out[16]=

(437 °)/6

In[17]:=

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

Out[17]=

5.284698797478515`

Vastaus: 5.28 km

Puhdistetaan välillä työtilaan kertyneet muuttujat:

In[18]:=

Remove["Global`*"]

•Tehtävä 6

In[19]:=

karki= {1,2}

Out[19]=

{1, 2}

In[20]:=

piste1= {4,6}

Out[20]=

{4, 6}

In[21]:=

piste2= {13,-3}

Out[21]=

{13, -3}

In[22]:=

vekt1= piste1 - karki

Out[22]=

{3, 4}

In[23]:=

vekt2= piste2 - karki

Out[23]=

{12, -5}

In[24]:=

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

Out[24]=

{99/65, 27/65}

In[25]:=

suunta/Sqrt[suunta.suunta]//Simplify

Out[25]=

{11/130^(1/2), 3/130^(1/2)}

Vastaus: 1/130^(1/2) {11, 3}

•Tehtävä 7

In[26]:=

k= 1 - Exp[-2 x]

Out[26]=

1 - e^(-2 x)

In[27]:=

f= Integrate[k,x] + c

Out[27]=

c + e^(-2 x)/2 + x

In[28]:=

ratk= Solve[k==0,x]

Solve :: ifun :  Inverse functions are being used by  Solve , so some solutions may not be found.

Out[28]=

{{x -> 0}, {x -> -i π}}

In[29]:=

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

Out[29]=

{{c -> 3/2}}

In[30]:=

f/.First[cnarvo]

Out[30]=

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

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

•Tehtävä 8

In[31]:=

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

In[32]:=

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

Out[32]=

0.1847367554762278`

Vastaus: 0.18

•Tehtävä 9

In[33]:=

keskus= {1,4}

Out[33]=

{1, 4}

Määritellään projektiokuvaus:

In[34]:=

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

In[35]:=

a= {0,1}

Out[35]=

{0, 1}

In[36]:=

b= {4,3}

Out[36]=

{4, 3}

Projisioidaan pisteet edellä määritellyn kuvauksen avulla:

In[37]:=

a1= proj[a]

Out[37]=

{-1/3, 0}

In[38]:=

b1= proj[b]

Out[38]=

{13, 0}

In[39]:=

c= (a+b)/2

Out[39]=

{2, 2}

In[40]:=

c1= proj[c]

Out[40]=

{3, 0}

In[41]:=

a1 - c1 == c1 - b1

Out[41]=

False

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:

In[42]:=

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

In[43]:=

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

In[44]:=

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

In[45]:=

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

Lisää sivutahkoja saadan kiertovaihtelulla:

In[46]:=

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

In[47]:=

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

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

In[48]:=

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

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

In[49]:=

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:

In[50]:=

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

[Graphics:HTMLFiles/k00prtk_44.gif]

Out[50]=

-Graphics3D -

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

In[51]:=

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

In[52]:=

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

[Graphics:HTMLFiles/k00prtk_46.gif]

Out[52]=

-Graphics3D -

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

In[53]:=

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]

[Graphics:HTMLFiles/k00prtk_48.gif]

Out[53]=

-Graphics -

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 2^(1/2). Suunnikaskuvio:

In[54]:=

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]

[Graphics:HTMLFiles/k00prtk_52.gif]

Out[54]=

-Graphics -

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

In[55]:=

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

Out[55]=

{α -> 70.52877938368921`}

Kulmat ovat tällöin

In[56]:=

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

Out[56]=

{70.52877938368921`, 109.47122061631079`}

Vastaus: 71 astetta ja 109 astetta

c) Rombidodekaedrin tilavuuden suhde kuution tilavuuteen on

In[57]:=

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

Out[57]=

2

Vastaus: 2

In[58]:=

Remove["Global`*"]

•Tehtävä 11

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

In[59]:=

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

Out[59]=

{r -> 6.6`, s -> 11.`, h -> 8.8`}

Yhdenmuotoisista kolmioista:

In[60]:=

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

Out[60]=

{{R -> (-h r + r x)/(r - s)}}

Segmentin tilavuus ja tämän derivaatta:

In[61]:=

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

Out[61]=

π x^2 (-x/3 + (-h r + r x)/(r - s))

In[62]:=

Vder= D[Vsegm,x]

Out[62]=

π (-1/3 + r/(r - s)) x^2 + 2 π x (-x/3 + (-h r + r x)/(r - s))

In[63]:=

nollakohdat= Solve[Vder==0,x]

Out[63]=

{{x -> 0}, {x -> (2 h r)/(2 r + s)}}

In[64]:=

nollakohdat /. arvot

Out[64]=

{{x -> 0}, {x -> 4.8`}}

Derivaatan nollakohdista vain jälkimmäinen on alueessa:

In[65]:=

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

Out[65]=

5.999999999999999`

In[66]:=

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

[Graphics:HTMLFiles/k00prtk_64.gif]

Out[66]=

-Graphics -

Kyseessä on siis maksimikohta.

Vastaus: 6.0 cm

•Tehtävä 12

a) Ei ole tosi. Vastaesimerkiksi kelpaa

In[67]:=

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

In[68]:=

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

[Graphics:HTMLFiles/k00prtk_66.gif]

Out[68]=

-Graphics -

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

•Tehtävä 13

In[69]:=

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

In[70]:=

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

Out[70]=

-2 e^(-x) Sin[x]

In[71]:=

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

Out[71]=

1/2 (-1)^n e^(-n π) - 1/2 (-1)^(1 + n) e^(-(1 + n) π)

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

In[72]:=

a[n_]:=Evaluate[int]

In[73]:=

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

Out[73]=

(1 + e^π)/(2 (-1 + e^π))

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

•Tehtävä 14

In[74]:=

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

Out[74]=

p^'[t] == a p[t]

In[75]:=

ratk= DSolve[diffyht,p,t]

Out[75]=

{{p -> Function[{t}, e^(a t) C[1]]}}

In[76]:=

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

Out[76]=

{C[1] == 200, e^(3 a) C[1] == 700}

In[77]:=

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

Solve :: ifun :  Inverse functions are being used by  Solve , so some solutions may not be found.

Out[77]=

{{C[1] -> 200, a -> 1/3 Log[7/2]}, {C[1] -> 200, a -> Log[-(-7/2)^(1/3)]}, {C[1] -> 200, a -> Log[(-1)^(2/3) (7/2)^(1/3)]}}

In[78]:=

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

In[79]:=

p[t]

Out[79]=

25 2^(3 - t/3) 7^(t/3)

In[80]:=

p[5]//N

Out[80]=

1613.6527022204561`

Vastaus: 1600

•Tehtävä 15

In[81]:=

m= 34086

Out[81]=

34086

In[82]:=

n= 14630

Out[82]=

14630

Lyhyesti (GCD = greatest common divisor = syt):

In[83]:=

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

Out[83]=

{38, {-97, 226}}

In[84]:=

Remove[a, b]

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

In[85]:=

r1= Mod[m,n]

Out[85]=

4826

In[86]:=

r2= Mod[n,r1]

Out[86]=

152

In[87]:=

r3= Mod[r1,r2]

Out[87]=

114

In[88]:=

r4= Mod[r2,r3]

Out[88]=

38

In[89]:=

r5= Mod[r3,r4]

Out[89]=

0

Vastaus: syt = 38

Lukujen a ja b etsiminen:

In[90]:=

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

Out[90]=

(38 - 34086 a)/14630

In[91]:=

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

Out[91]=

{{-867, 2020}, {-482, 1123}, {-97, 226}, {288, -671}, {673, -1568}}

Lukupareja on siis useita. Tarkistuksen vuoksi:

In[92]:=

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

Out[92]=

{38, 38, 38, 38, 38}

Yleisen lain hakeminen:

In[93]:=


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

Out[93]=

{{385, -897}, {385, -897}, {385, -897}, {385, -897}}

In[94]:=

aa= -97 - 385 t

Out[94]=

-97 - 385 t

In[95]:=

bb= 226 + 897 t

Out[95]=

226 + 897 t

In[96]:=

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

Out[96]=

38

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


Converted by Mathematica  (February 20, 2004)