•Tehtävä 1

In[1]:=

ratk = Solve[z^7 + 1 == 0, z]

Out[1]=

{{z -> -1}, {z -> (-1)^(1/7)}, {z -> -(-1)^(2/7)}, {z -> (-1)^(3/7)}, {z -> -(-1)^(4/7)}, {z -> (-1)^(5/7)}, {z -> -(-1)^(6/7)}}

In[2]:=

summamuoto = ComplexExpand[z /. ratk]

Out[2]=

{-1, Cos[π/7] + i Sin[π/7], -Cos[(2 π)/7] - i Sin[(2 π)/7], Cos[(3 π) ... [(4 π)/7], Cos[(5 π)/7] + i Sin[(5 π)/7], -Cos[(6 π)/7] - i Sin[(6 π)/7]}

In[3]:=

N[summamuoto]

Out[3]=

{-1.`, 0.9009688679024191`  + 0.4338837391175581` i, -0.6234898018587336` - 0.7818314824680298 ... 36` i, -0.6234898018587335` + 0.7818314824680299` i, 0.900968867902419`  - 0.43388373911755823` i}

Juurten etäisyys origosta voidaan nähdä suoraan kohdista ratk ja summamuoto. Kaikki juuret ovat siis etäisyydellä 1 origosta. Kompleksilukujen itseisarvo eli etäisyys origosta saadaan myös komennolla Abs.

In[4]:=

Abs[z /. ratk]

Out[4]=

{1, 1, 1, 1, 1, 1, 1}

In[5]:=

Abs[summamuoto] // Simplify

Out[5]=

{1, 1, 1, 1, 1, 1, 1}

Juurten napakulmat nähdään suoraan kohdasta summamuoto. Ne voidaan myös laskea komennolla Arg.

In[6]:=

Arg[z /. ratk]

Out[6]=

{π, π/7, -(5 π)/7, (3 π)/7, -(3 π)/7, (5 π)/7, -π/7}

Seuraavassa on vielä piirretty juuret kompleksitasoon. Ensin on muodostettu juuria vastaavat kompleksitason pisteet ja sitten ne on piirretty ListPlot-komennolla, jossa on optioksi annettu pisteen koko.

In[7]:=

pisteet = {Re[summamuoto], Im[summamuoto]} // Transpose

Out[7]=

{{-1, 0}, {Cos[π/7], Sin[π/7]}, {-Cos[(2 π)/7], -Sin[(2 π)/7]}, {Cos[(3 &# ... [(4 π)/7]}, {Cos[(5 π)/7], Sin[(5 π)/7]}, {-Cos[(6 π)/7], -Sin[(6 π)/7]}}

In[8]:=

ListPlot[pisteet, AspectRatio -> Automatic, PlotStyle -> PointSize[0.04]]

[Graphics:HTMLFiles/ratk7_16.gif]

Out[8]=

-Graphics -

Ratkaisut sijaitsevat tasavälisesti ympyrän kehällä.

•Tehtävä 2

In[9]:=

ratk = Solve[z^3 - I * z^2 + 2 * I * z + (8 - 4 * I) == 0, z]

Out[9]=

{{z -> -2 + i}, {z -> 1 - i 3^(1/2)}, {z -> 1 + i 3^(1/2)}}

In[10]:=

juuret = z /. ratk

Out[10]=

{-2 + i, 1 - i 3^(1/2), 1 + i 3^(1/2)}

•Tehtävä 3

In[11]:=

yhtalo1 = 2 * x^2 + 3 * y^2 - x * y == 10

Out[11]=

2 x^2 - x y + 3 y^2 == 10

In[12]:=

yhtalo2 = a * x - y == 5

Out[12]=

a x - y == 5

In[13]:=

Solve[{yhtalo1, yhtalo2}, {x, y}]

Out[13]=

{{y -> -5 - (5 a)/(2 (2 - a + 3 a^2)) + (15 a^2)/(2 - a + 3 a^2) - (5^(1/2) a (-99 - 8 a +  ... 2 (2 - a + 3 a^2)), x -> (-5 + 30 a + 5^(1/2) (-99 - 8 a + 24 a^2)^(1/2))/(2 (2 - a + 3 a^2))}}

Yhtälöparilla on reaalisia ratkaisuja, kun juurrettava 24 a^2 - 8 a - 99 >= 0. Lisäksi nimittäjässä oleva 3 a^2 - a + 2 ei saa olla nolla.

In[14]:=

Needs["Algebra`InequalitySolve`"]

In[15]:=

InequalitySolve[-99 - 8 * a + 24 * a^2 >= 0, a]

Out[15]=

a <= 1/12 (2 - 598^(1/2)) || a >= 1/12 (2 + 598^(1/2))

In[16]:=

Solve[2 - a + 3 * a^2 == 0, a]

Out[16]=

{{a -> 1/6 (1 - i 23^(1/2))}, {a -> 1/6 (1 + i 23^(1/2))}}

Ratkaisussa oleva nimittäjä ei siis ole nolla millään reaaliluvulla a. Siten ainoa ehto sille, että ratkaisut ovat reaalisia, on a <= 1/12 (2 - 598^(1/2)) tai a >= 1/12 (2 + 598^(1/2)).

•Tehtävä 4

In[17]:=

ympyra1 = x^2 + y^2 - 4 * x - 6 * y + 10 == 0

Out[17]=

10 - 4 x + x^2 - 6 y + y^2 == 0

In[18]:=

ympyra2 = x^2 + y^2 + 2 * x - 2 * y - 3 == 0

Out[18]=

-3 + 2 x + x^2 - 2 y + y^2 == 0

Lasketaan ympyröiden leikkauspisteet ja sijoitetaan ne muuttujiin lp1 ja lp2.

In[19]:=

ratk = Solve[{ympyra1, ympyra2}, {x, y}]

Out[19]=

{{x -> 1/26 (19 - 2 35^(1/2)), y -> 1/26 (56 + 3 35^(1/2))}, {x -> 1/26 (19 + 2 35^(1/2)), y -> 1/26 (56 - 3 35^(1/2))}}

In[20]:=

{lp1, lp2} = {x, y} /. ratk

Out[20]=

{{1/26 (19 - 2 35^(1/2)), 1/26 (56 + 3 35^(1/2))}, {1/26 (19 + 2 35^(1/2)), 1/26 (56 - 3 35^(1/2))}}

Leikkauspisteiden etäisyydet origosta ovat etaisyys1 ja etaisyys2.

In[21]:=

etaisyys1 = Sqrt[lp1 . lp1] // Simplify

Out[21]=

(1/13 (76 + 5 35^(1/2)))^(1/2)

In[22]:=

etaisyys1 // N

Out[22]=

2.849836687837745`

In[23]:=

etaisyys2 = Sqrt[lp2 . lp2] // Simplify

Out[23]=

(1/13 (76 - 5 35^(1/2)))^(1/2)

In[24]:=

etaisyys2 // N

Out[24]=

1.8896397923841692`

Leikkauspisteiden välinen vektori on lp1lp2 ja leikkauspisteiden välinen etäisyys valinenetaisyys.

In[25]:=

lp1lp2 = lp2 - lp1 // Simplify

Out[25]=

{(2 35^(1/2))/13, -(3 35^(1/2))/13}

In[26]:=

valinenetaisyys = Sqrt[lp1lp2 . lp1lp2]

Out[26]=

35/13^(1/2)

In[27]:=

valinenetaisyys // N

Out[27]=

1.640825308284734`

Seuraavassa on vielä piirretty ympyrät ImplicitPlot-komennolla.

In[28]:=

Needs["Graphics`ImplicitPlot`"]

In[29]:=

ImplicitPlot[{ympyra1, ympyra2}, {x, -4, 5}, {y, -2, 6}]

[Graphics:HTMLFiles/ratk7_61.gif]

Out[29]=

-Graphics -

In[30]:=

lp1 // N

Out[30]=

{0.2756861705307988`, 2.836470744203802`}

In[31]:=

lp2 // N

Out[31]=

{1.1858522910076628`, 1.471221563488506`}

•Tehtävä 5

Funktio pkert muodostaa vektorin, jossa on painokertoimet, kun osavälejä on n kpl.

In[32]:=

pkert[n_] := Flatten[{1, Table[2, {i, 1, n - 1}], 1}]

In[33]:=

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

Funktio fktarvot laskee funktion f arvot välillä 0...1, kun osavälejä on n kpl.

In[34]:=

fktarvot[n_] := Table[f[x], {x, 0, 1, 1/n}]

Funktio kerroin on puolisuunnikassäännössä oleva kerroin (b - a)/(2 n). Tässä tehtävässä b = 1 ja a = 0.

In[35]:=

kerroin[n_] := 1/(2 * n)

Funktio puolisuunnikasmenet laskee funktion f määrätyn integraalin välillä 0...1 käyttäen n osaväliä.

In[36]:=

puolisuunnikasmenet[n_] := kerroin[n] * pkert[n] . fktarvot[n]

Esimerkiksi neljällä osavälillä saadaan määrätylle integraalille arvio:

In[37]:=

puolisuunnikasmenet[4] // N

Out[37]=

0.7429840978003812`

Vastaavalla tavalla saadaan arviot myös muille n:n arvoille. Nämä voidaan laskea myös yhdellä komennolla:

In[38]:=

arviot = Table[puolisuunnikasmenet[n], {n, 4, 20, 4}] // N

Out[38]=

{0.7429840978003812`, 0.7458656148456956`, 0.746398247893441`, 0.7465845967882223`, 0.7466708369398725`}

Verrataan saatuja arvoja vielä NIntegrate-komennolla saatuun arvoon.

In[39]:=

numintegr = NIntegrate[f[x], {x, 0, 1}]

Out[39]=

0.7468241328124272`

In[40]:=

numintegr - arviot

Out[40]=

{0.0038400350120459947`, 0.0009585179667316313`, 0.00042588491898620795`, 0.0002395360242049005`, 0.00015329587255474841`}

•Tehtävä 6

In[41]:=

r = 6370

Out[41]=

6370

In[42]:=

d = r * ArcCos[Sin[theta1 Degree] * Sin[theta2 Degree] + Cos[theta1 Degree] * Cos[theta2 Degree] * Cos[(fii1 - fii2) Degree]]

Out[42]=

6370 ArcCos[Cos[° (fii1 - fii2)] Cos[° theta1] Cos[° theta2] + Sin[° theta1] Sin[° theta2]]

a) Helsingin ja Tokion välinen etäisyys

In[43]:=

levH = 60 + 8/60

Out[43]=

902/15

In[44]:=

pitH = 25

Out[44]=

25

In[45]:=

levT = 35 + 40/60

General :: spell1 :  Possible spelling error: new symbol name \" levT \" is similar to existing symbol \" levH \".

Out[45]=

107/3

In[46]:=

pitT = 139 + 45/60

General :: spell1 :  Possible spelling error: new symbol name \" pitT \" is similar to existing symbol \" pitH \".

Out[46]=

559/4

In[47]:=

d /. {theta1 -> levH, theta2 -> levT, fii1 -> pitH, fii2 -> pitT} // N

Out[47]=

7821.488439436517`

b) Reykjavikin ja Sydneyn välinen etäisyys

In[48]:=

levR = 64 + 9/60

General :: spell :  Possible spelling error: new symbol name \" levR \" is similar to existing symbols  {levH, levT} .

Out[48]=

1283/20

In[49]:=

pitR = -(21 + 58/60)

General :: spell :  Possible spelling error: new symbol name \" pitR \" is similar to existing symbols  {pitH, pitT} .

Out[49]=

-659/30

In[50]:=

levS = -(33 + 55/60)

General :: spell :  Possible spelling error: new symbol name \" levS \" is similar to existing symbols  {levH, levR, levT} .

Out[50]=

-407/12

In[51]:=

pitS = 151 + 10/60

General :: spell :  Possible spelling error: new symbol name \" pitS \" is similar to existing symbols  {pitH, pitR, pitT} .

Out[51]=

907/6

In[52]:=

d /. {theta1 -> levR, theta2 -> levS, fii1 -> pitR, fii2 -> pitS} // N

Out[52]=

16617.989675935052`

Alapuolella tehtävä on ratkaistu myös muodostamalla funktio, johon sopivat maantieteelliset koordinaatit sijoitetaan.

In[53]:=

etaisyys[theta1_, fii1_, theta2_, fii2_] := r * ArcCos[Sin[theta1 Degree] * Sin[theta2 Degree] + Cos[theta1 Degree] * Cos[theta2 Degree] * Cos[(fii1 - fii2) Degree]]

In[54]:=

etaisyys[levH, pitH, levT, pitT] // N

Out[54]=

7821.488439436517`

In[55]:=

etaisyys[levR, pitR, levS, pitS] // N

Out[55]=

16617.989675935052`

•Tehtävä 7

In[56]:=

yhtalo = x^4 + y^4 + z^4 + 2 * x^2 * y^2 + 2 * y^2 * z^2 + 2 * z^2 * x^2 - 10 * x^2 - 10 * y^2 + 6 * z^2 + 9 == 0

Out[56]=

9 - 10 x^2 + x^4 - 10 y^2 + 2 x^2 y^2 + y^4 + 6 z^2 + 2 x^2 z^2 + 2 y^2 z^2 + z^4 == 0

In[57]:=

Needs["Graphics`ImplicitPlot`"]

In[58]:=

leikkaus1 = yhtalo /. z -> 0

Out[58]=

9 - 10 x^2 + x^4 - 10 y^2 + 2 x^2 y^2 + y^4 == 0

In[59]:=

ImplicitPlot[leikkaus1, {y, -4, 4}]

[Graphics:HTMLFiles/ratk7_124.gif]

Out[59]=

-Graphics -

In[60]:=

leikkaus2 = yhtalo /. z -> 0.9

Out[60]=

14.5161`  - 8.379999999999999` x^2 + x^4 - 8.379999999999999` y^2 + 2 x^2 y^2 + y^4 == 0

In[61]:=

ImplicitPlot[leikkaus2, {y, -4, 4}]

[Graphics:HTMLFiles/ratk7_129.gif]

Out[61]=

-Graphics -

Kun torusta leikataan tasoilla z = vakio, missä - 1 < z < 1, ovat leikkauskäyrät sisäkkäisiä origokeskisiä ympyröitä. Kun {z} = 1, niin leikkauskäyränä on 2-säteinen origokeskinen ympyrä. (Sitä Mathematica ei kuitenkaan suostunut piirtämään.)

In[62]:=

leikkaus3 = yhtalo /. x -> 0

Out[62]=

9 - 10 y^2 + y^4 + 6 z^2 + 2 y^2 z^2 + z^4 == 0

In[63]:=

ImplicitPlot[leikkaus3, {y, -4, 4}]

[Graphics:HTMLFiles/ratk7_136.gif]

Out[63]=

-Graphics -

In[64]:=

leikkaus4 = yhtalo /. x -> 0.9

Out[64]=

1.5560999999999985`  - 8.379999999999999` y^2 + y^4 + 7.62` z^2 + 2 y^2 z^2 + z^4 == 0

In[65]:=

ImplicitPlot[leikkaus4, {y, -4, 4}, AspectRatio -> Automatic]

[Graphics:HTMLFiles/ratk7_141.gif]

Out[65]=

-Graphics -

In[66]:=

leikkaus5 = yhtalo /. x -> 1

Out[66]=

-8 y^2 + y^4 + 8 z^2 + 2 y^2 z^2 + z^4 == 0

In[67]:=

ImplicitPlot[leikkaus5, {y, -4, 4}, AspectRatio -> Automatic]

[Graphics:HTMLFiles/ratk7_146.gif]

Out[67]=

-Graphics -

In[68]:=

leikkaus6 = yhtalo /. x -> 1.3

Out[68]=

-5.043900000000002` - 6.619999999999999` y^2 + y^4 + 9.38` z^2 + 2 y^2 z^2 + z^4 == 0

In[69]:=

ImplicitPlot[leikkaus6, {y, -4, 4}, AspectRatio -> Automatic]

[Graphics:HTMLFiles/ratk7_151.gif]

Out[69]=

-Graphics -

In[70]:=

leikkaus7 = yhtalo /. x -> 2

Out[70]=

-15 - 2 y^2 + y^4 + 14 z^2 + 2 y^2 z^2 + z^4 == 0

In[71]:=

ImplicitPlot[leikkaus7, {y, -4, 4}, AspectRatio -> Automatic]

[Graphics:HTMLFiles/ratk7_156.gif]

Out[71]=

-Graphics -

In[72]:=

leikkaus8 = yhtalo /. x -> 2.6

Out[72]=

-12.9024` + 3.5200000000000014` y^2 + y^4 + 19.520000000000003` z^2 + 2 y^2 z^2 + z^4 == 0

In[73]:=

ImplicitPlot[leikkaus8, {y, -4, 4}, AspectRatio -> Automatic]

[Graphics:HTMLFiles/ratk7_161.gif]

Out[73]=

-Graphics -

Kun torusta leikataan tasoilla x = vakio, missä -3 < x < 3, niin syntyy kuudenlaisia leikkauskuvioita. Kun x = 0, syntyy kaksi erillistä ympyrää. Kun 0 < {x} < 1, syntyy leikkaus4-tyyppisiä kuvioita. Kun {x} = 1, syntyy kuvio leikkaus5. Kun 1 < {x} < 2, syntyy leikkaus6-tyyppinen kuvio. Kun {x} = 2 syntyy leikkaus7-tyyppinen kuvio. Kun 2 < {x} < 3 syntyy leikkaus8-tyyppisiä kuvioita. Kun {x} = 3, syntyy pelkkä piste.

•Tehtävä 8

In[74]:=

yhtalo = x^4 - a * x^2 + 2 * x + 1 == 0

Out[74]=

1 + 2 x - a x^2 + x^4 == 0

Seuraavat tulostukset ovat hieman pitkiä; tämän johdosta puolipisteet syötteiden perään.

In[75]:=

ratk = Solve[yhtalo, x] ;

In[76]:=

Length[ratk]

Out[76]=

4

In[77]:=

neliot = x^2 /. ratk ;

In[78]:=

neliosumma = Apply[Plus, neliot] // Simplify

Out[78]=

2 a

In[79]:=

Solve[neliosumma == 1, a]

Out[79]=

{{a -> 1/2}}

Vakion a pitää siis olla 1/2.

•Tehtävä 9

Kyseessä on siis geometrinen sarja, joka suppenee, kun {(2 x - 1)/(3 x + 1)} < 1.

In[80]:=

InequalitySolve[Abs[(2 * x - 1)/(3 * x + 1)] < 1, x]

Out[80]=

x < -2 || x > 0

Määritellään summafunktio ja piirretään sen kuvaaja.

In[81]:=

summa[x_ /; x < -2 || x > 0] = Sum[((2 * x - 1)/(3 * x + 1))^k, {k, 0, Infinity}]

Out[81]=

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

In[82]:=

Plot[summa[x], {x, -4, 2}, PlotRange -> {-1, 15}]

Plot :: plnr :  summa[x]  is not a machine-size real number at  x  =  -1.7726198764377477` .

Plot :: plnr :  summa[x]  is not a machine-size real number at  x  =  -1.9040136578351952` .

Plot :: plnr :  summa[x]  is not a machine-size real number at  x  =  -1.962313974162409` .

General :: stop :  Further output of  Plot :: \" plnr \"  will be suppressed during this calculation.

[Graphics:HTMLFiles/ratk7_193.gif]

Out[82]=

-Graphics -

•Tehtävä 10

Toisen asteen yhtälön ratkaisukaava:

In[83]:=

ratk = Solve[a * x^2 + b * x + c == 0, x]

Out[83]=

{{x -> (-b - (b^2 - 4 a c)^(1/2))/(2 a)}, {x -> (-b + (b^2 - 4 a c)^(1/2))/(2 a)}}

In[84]:=

Solve[15 * x^2 + 2 * x + 12 == 0, x] // Simplify

Out[84]=

{{x -> -1/15 i (-i + 179^(1/2))}, {x -> 1/15 i (i + 179^(1/2))}}

In[85]:=

ratk /. {a -> 15, b -> 2, c -> 12} // Simplify

Out[85]=

{{x -> -1/15 i (-i + 179^(1/2))}, {x -> 1/15 i (i + 179^(1/2))}}

Molemmilla tavoilla saadaan samat ratkaisut.

Kolmannen asteen yhtälön ratkaisukaava:

In[86]:=

Remove[d]

In[87]:=

ratk = Solve[a * x^3 + b * x^2 + c * x + d == 0, x]

Out[87]=

{{x -> -b/(3 a) - (2^(1/3) (-b^2 + 3 a c))/(3 a (-2 b^3 + 9 a b c - 27 a^2 d + (4 (-b^2 + 3 ...  b^3 + 9 a b c - 27 a^2 d + (4 (-b^2 + 3 a c)^3 + (-2 b^3 + 9 a b c - 27 a^2 d)^2)^(1/2))^(1/3))}}

In[88]:=

sijkaavaan = x /. (ratk /. {a -> 1, b -> 0, c -> -2, d -> -5}) // Simplify

Out[88]=

{(4 (3/(45 + 1929^(1/2)))^(1/3) + (2 (45 + 1929^(1/2)))^(1/3))/6^(2/3), -i (-i + 3^(1/2)) (2/( ... + 3^(1/2)) (2/(3 (45 + 1929^(1/2))))^(1/3) - 1/6 (1 + i 3^(1/2)) (1/2 (135 + 3 1929^(1/2)))^(1/3)}

In[89]:=

suoraratk = x /. Solve[x^3 - 2 * x - 5 == 0, x] // Simplify

Out[89]=

{1/6 (2 (135/2 - (3 1929^(1/2))/2)^(1/3) + 2^(2/3) (3 (45 + 1929^(1/2)))^(1/3)), ((-2 - 2 i 3^ ... 3^(1/2)) (135/2 - (3 1929^(1/2))/2)^(1/3) + 2^(2/3) (-1 - i 3^(1/2)) (3 (45 + 1929^(1/2)))^(1/3))}

In[90]:=

sijkaavaan == suoraratk // FullSimplify

Out[90]=

True

Molemmilla tavoilla saadaan samat ratkaisut.


Converted by Mathematica  (August 25, 2003)