Matematika racunalom 1.zadaca 2007

MATEMATIKA RAČUNALOM 1. ZADAĆA 2006./2007.
KONRAD BURNIK

1. zadatak
Zadatak 1. Odredite sve proste brojeve manje od 107 koji imaju simetričan
prikaz u bazi 10. Koji od njih imaju i simetričan prikaz i u bazi 2? Koji od
tih brojeva su Fibonaccijevi, a koji su Lucasovi?
Rjesenje 1. Simetrične brojeve do 107 generiramo redom po broju znamenki.
Dakle, najprije računamo skupove
Simk = {k-znamenkasti simetrični brojevi u bazi 10}
za k ∈ {1, . . . , 7}. Unija tih skupova daje sve simetrične brojeve do 107 .
Sim1:=Table[a,{a,1,9}]
Sim2:=Table[a*10+a,{a,1,9}]
Sim3:=Table[a*100+b*10+a,{a,1,9},{b,0,9}]
Sim4:=Table[a*1000+b*100+b*10+a,{a,1,9},{b,0,9}]
Sim5:=Table[a*10000+b*1000+c*100+b*10+a,{a,1,9},{b,0,9},{c,0,9}]
Sim6:=Table[a*100000+b*10000+c*1000+c*100+b*10+a,{a,1,9},{b,0,9},{c,0,9}]
Sim7:=Table[a*1000000+b*100000+c*10000+d*1000+c*100+b*10+a,
{a,1,9},{b,0,9},{c,0,9},{d,0,9}]
Simetricni = Flatten[Union[Sim1,Sim2,Sim3,Sim4,Sim5,Sim6, Sim7]]
Length[Simetricni]

10998
Za odabir prostih medu njima radimo selekciju:
A = Select[Simetricni, PrimeQ[#] &]
Length[A]
781
Brojeve iz A koji imaju i simetričan prikaz u bazi 2 dobivam selekcijom uz pomoćnu
funkciju BaseDigits[broj,baza] koja za dani broj i danu bazu vraća reprezentaciju
tog broja u danoj bazi kao niz znakova. Za pretvorbu broja u njegov zapis u danoj
bazi koristim ugradenu funkciju BaseForm. String koji vraća ova funkcija potrebno
je formatirati tako da sadrži samo podatke o znamenkama (do znaka \n), a ne i o
1

2

KONRAD BURNIK

kojoj bazi se radi (nakon znaka \n). Ako se radi o bazi 10 tada formatiranje rezultata nije potrebno. Uvodim još i funkciju binSimQ[x] koja testira dali se znakovna
reprezentacija binarnog zapisa čitana s lijeva nadesno isto čita i sdesna nalijevo.
BaseDigits[broj_, baza_] :=
Module[{s = ToString[BaseForm[broj, baza]]},

If[baza != 10,
StringDrop[s, {Part[StringPosition[s, "\n"], 1, 1], -1}],s]]
binsimQ[x_]:= ( BaseDigits[x, 2] ==StringReverse[BaseDigits[x,2]])

Dakle, selekcija daje
Select[A, binsimQ[#] &]
{3, 5, 7, 313}
Izdvajanje Fibonaccijevih iz liste A radimo takoder selekcijom za koju posebno
uvodimo funkciju fiboQ[x,n] koja za dani prirodni broj x vraća True ako je x = Fk
za 0 ≤ k ≤ n. Članstvo u listi se ispituje ugradenom funkcijom MemberQ.
fiboQ[x_, n_] := MemberQ[Table[ Fibonacci[i], {i, 0, n}], x]
fiboQ[13, 100]
True
fiboQ[14, 100]
False
Select[A, fiboQ[#, 36] &]
{2, 3, 5}
Za Lucasove brojeve uvodim funkciju Lucas[n] koja vraća n-ti Lucasov broj. Koristim vezu Ln = Fn−1 + Fn+1 .
Lucas[n_] := Fibonacci[n - 1] + Fibonacci[n + 1]
Kao i kod Fibonaccijevih brojeva uvodimo funkciju lucaQ[x,n] koja je analogna

funkciji fiboQ[x,n].
lucaQ[x_, n_] :=
MemberQ[Table[Lucas[i], {i, 0, n}], x]
Sad izdvajamo Lucasove iz liste A.
Select[A, lucaQ[#, 36] &]
{2, 3, 7, 11}

MATEMATIKA RAČUNALOM 1. ZADAĆA 2006./2007.

3

2. zadatak
Zadatak 2. Pravac m siječe pravce BC, CA i AB stranica trokuta ABC
u točkama Am , Bm , Cm . Dokažite da polovišta dužina Am A, Bm B, Cm C
leže na pravcu. Nadite još neka svojstva te konfiguracije!

C

g


m

Cm

Bm

D

Am
A

E

B

Slika 1. Gaussov pravac

4

KONRAD BURNIK


Rjesenje 2. Za rješenje koristim slijedeće pomoćne funkcije:
(* FullSimplify i Factor
timredom *) FS[m_]:=Factor[FullSimplify[m]]
(* Vraca poloviste segmenta odredjenog njegovim krajnjim
to\v{c}kama*)
poloviste[{a_,u_},{b_,v_}]:=FS[{(a+b)/2,(u+v)/2}]
(* Presjek 2 pravca zadanih u implicitnom obliku *)
presjek2p[{a_,b_,c_},{u_,v_,w_}]:=
FS[{(w*b-v*c)/(a*v-b*u),(u*c-w*a)/(a*v-b*u)}]
(* Ispituje dali su tri tocke kolinearne *)
kolinearneQ[{a1_,a2_},{b1_,b2_},{c1_,c2_}]:=
FS[a1*b2-a1*c2-b1*a2+b1*c2+c1*a2-c1*b2]
e2G[{a_, x_}, {b_, y_}, {c_, z_}] := FS[{(a + b + c)/3, (x + y +
z)/3}]
(* Ortocentar *) e2H[{xa_, ya_}, {xb_, yb_}, {xc_, yc_}] :=
presjek2p[okomica[{xa, ya}, pravac2t[{xb, yb}, {xc, yc}]],
okomica[{xb, yb}, pravac2t[{xa, ya}, {xc, yc}]]]
okomitiQ[{a_, b_, c_}, {u_, v_, w_}] := FS[a*u + b*v]


tA = {a, u};
tB= {b, v}; tC = {c, w}; tE = {e, x}; tF = {f, y};
pAB = pravac2t[tA, tB]; pBC = pravac2t[tB, tC]; pAC =
pravac2t[tC, tA];
(* pravac m odredjen je tockama E i F *)
m = pravac2t[tE, tF];
(* Pronadji presjeke pravca m sa pravcima koji cine trokut ABC *)
tAm = presjek2p[pBC, m]; tBm = presjek2p[pAC, m]; tCm =
presjek2p[pAB, m];
(* jesu li polovista odgovarajucih segmenata na pravcu? *)

MATEMATIKA RAČUNALOM 1. ZADAĆA 2006./2007.

5

kolinearneQ[poloviste[tA, tAm], poloviste[tB, tBm],
poloviste[tC, tCm]]
0

(*jesu!*)


Za ovu konfiguraciju pronašao sam još slijedeća svojstva:
Svojstvo 1. Težišta trokuta AAm B, AAm C, ABC leže na pravcu tc .
kolinearneQ[e2G[tA, tB,tAm], e2G[tA, tC, tAm], e2G[tA,tB,tC]]
0 (* tezista leze na pravcu *)

Svojstvo 2. Ortocentri trokuta ABAm , ACAm , ABC leže na pravcu to .
kolinearneQ[e2H[tA, tB, tAm], e2H[tA, tC, tAm], e2H[tA,tB,tC]]
0 (* ortocentri leze na pravcu *)

Svojstvo 3. Pravci tc i to medusobno su okomiti.
okomitiQ[pravac2t[e2G[tA, tB, tAm], e2G[tA, tC, tAm]],
pravac2t[e2H[tA, tB, tAm], e2H[tA, tC, tAm]]]
0 (* tc i to su medjusobno okomiti *)

Svojstvo 4. Težišta trokuta ABmB, BBmC, ABC leže na pravcu t′c .
kolinearneQ[e2G[tA, tBm, tB], e2G[tB, tBm, tC], e2G[tA, tB, tC]]
0 (* tezista leze na pravcu *)

Svojstvo 5. Ortocentri trokuta ABmB, BBmC, ABC leže na pravcu t′o .

kolinearneQ[e2H[tA, tBm, tB], e2H[tB, tBm, tC], e2H[tA, tB, tC]]
0 (* ortocentri leze na pravcu *)

Svojstvo 6. Pravci t′c i t′o su medusobno okomiti.
okomitiQ[pravac2t[e2G[tA, tBm, tB],
e2G[tB, tBm, tC]],
pravac2t[e2H[tA, tBm, tB], e2H[tB, tBm, tC]]]
Svojstvo 7. Pravci tc i t′c medusobno se sijeku u težištu trokuta ABC i paralelni
su sa stranicama BC i AC respektivno.

6

KONRAD BURNIK

paralelniQ[pravac2t[e2G[tB, tAm, tA],
e2G[tA, tC, tAm]], pBC]
0 (* tc je paralelan sa BC *)
paralelniQ[pravac2t[e2G[tA, tBm, tB], e2G[tB, tBm, tC]], pAC]
0 (* tc’ je paralelan sa AC *)
presjek2p[

pravac2t[e2G[tB, tAm, tA], e2G[tA, tC, tAm]],
pravac2t[ e2G[tA, tBm, tB], e2G[tB, tBm, tC]]]
- e2G[tA, tB, tC]
{0,0} (* tc i tc’ se sijeku u tezistu trokuta ABC *)

3. zadatak
Zadatak 3. Dokažite da su zbrojevi duljina stranica i duljina pripadnih
visina bilo kojeg trokuta (tj. dužine a + ha , b + hb , c + hc ) uvijek stranice
nekog trokuta. Vrijedi li ista tvrdnja za a2 + h2a ,b2 + h2b ,c2 + h2c ?
Rjesenje 3. Tri dužine a, b, c čine trokut ako i samo ako vrijede nejednakosti
trokuta:
a+b≥c
b+c≥a
c+a≥b

pa ćemo ovaj uvjet iskoristiti za ispitivanje najprije dali dužine a+ha , b+hb ,
c + hc a zatim i a2 + h2a ,b2 + h2b ,c2 + h2c čine trokut.
Duljine visina trokuta ABC mogu se izračunati preko njegove površine.
Veza izmedu površine trokuta i njegovih visina glasi:
P =


bhb
chc
aha
=
=
2
2
2

S druge strane, Heronova formula daje izraz za površinu trokuta ABC direktno iz duljina njegovih stranica.
P =

p
s(s − a)(s − b)(s − c)

MATEMATIKA RAČUNALOM 1. ZADAĆA 2006./2007.

7


gdje je s = (a + b + c)/2. Dakle, kada izračunamo površinu trokuta P ,
duljine pripadnih visina ha , hb , hc jednake su:
2P
a
2P
hb =
b
2P
hc =
c

ha =

Kako zadatak rješavamo pomoću računala, najprije moramo odabrati prikladnu parametrizaciju. Jedna od često korištenih parametrizacija glasi:
A := (0, 0)
B := (r(f + g), 0)
· 2
¸
(f − 1)gr 2f gr
C :=
,
fg − 1
fg − 1
Gdje su f i g kotangensi polovica kuteva uz vrhove A i B respektivno, a r
je radijus upisane kružnice trokuta ABC. Ova parametrizacija je pogodna
za rad na računalu jer su koordinate točaka racionalni izrazi u f ,g,r. Dakle,
koristeći ovu parametrizaciju za vrhove trokuta računamo najprije duljine
stranica a, b, c:
A = {0,0};
B = {r*(f+g),0};
C = {(((f^2-1)*g*r)/(f*g-1)),2*f*g*r/(f*g-1)};
aa = PowerExpand[udaljenost2t[tB, tC]];
bb = PowerExpand[udaljenost2t[tA, tC]];
cc = PowerExpand[udaljenost2t[tA, tB]];
aa
(f*(1 + g^2)*r)/(-1 + f*g)
bb
((1 + f^2)*g*r)/(-1 + f*g)
cc
(f + g)*r
Površina ide preko Heronove formule:
Heron[a_, b_, c_] :=
(s = (a + b + c)/2; Sqrt[s(s - a)(s - b)(s - c)]);

8

KONRAD BURNIK

P = PowerExpand[FullSimplify[Heron[aa, bb, cc]]];
P
(r^2*(1 + u)*(1 + v)*(2 + u + v))/(-1 + (1 + u)*(1 + v))
Računamo visine ha ,hb ,hc :
ha = 2*P/aa;
hb = 2*P/bb;
hc = 2*P/cc;
ha
(2*g*(f + g)*r)/(1 + g^2)
hb
(2*f*(f + g)*r)/(1 + f^2)
hc
(2*f*g*r)/(-1 + f*g)
Testiramo nejednakosti trokuta na dužinama a + ha , b + hb , c + hc . Ako u sve tri
nejednakosti dobijemo izraze sa pozitivnim članovima tada te dužine čine trokut.
f = 1 + u;
g = 1 + v;
Cancel[FullSimplify[aa + ha + bb + hb - cc - hc]]
(2*r*(4 + 12*u + 14*u^2 + 6*u^3 + u^4 + 12*v + 32*u*v + 32*u^2*v +
12*u^3*v + 2*u^4*v + 14*v^2 + 32*u*v^2 + 27*u^2*v^2 + 8*u^3*v^2 +
u^4*v^2 + 6*v^3 + 12*u*v^3 + 8*u^2*v^3 + u^3*v^3 + v^4 + 2*u*v^4 +
u^2*v^4))/((2 + 2*u + u^2)*(u + v + u*v)*(2 + 2*v + v^2))
Cancel[FullSimplify[aa + ha - bb - hb + cc + hc]]
(2*r*(4 + 12*u + 10*u^2 + 6*u^3 + u^4 + 12*v + 32*u*v + 28*u^2*v +
16*u^3*v + 2*u^4*v + 14*v^2 + 32*u*v^2 + 27*u^2*v^2 + 14*u^3*v^2 +
u^4*v^2 + 6*v^3 + 12*u*v^3 + 10*u^2*v^3 + 5*u^3*v^3 + v^4 + 2*u*v^4 +
2*u^2*v^4 + u^3*v^4))/((2 + 2*u + u^2)*(u + v + u*v)*(2 + 2*v + v^2))
Cancel[FullSimplify[bb + hb + cc + hc - aa - ha]]
(2*r*(4 + 12*u + 14*u^2 + 6*u^3 + u^4 + 12*v + 32*u*v + 32*u^2*v +
12*u^3*v + 2*u^4*v + 10*v^2 + 28*u*v^2 + 27*u^2*v^2 + 10*u^3*v^2 +
2*u^4*v^2 + 6*v^3 + 16*u*v^3 + 14*u^2*v^3 + 5*u^3*v^3 + u^4*v^3 +
v^4 + 2*u*v^4 + u^2*v^4))/((2 + 2*u + u^2)*(u + v + u*v)*

MATEMATIKA RAČUNALOM 1. ZADAĆA 2006./2007.

9

(2 + 2*v + v^2))

U sva tri slučaja dobivamo izraze sa pozitivnim članovima pa zaključujemo da
dužine a + ha , b + hb , c + hc zaista čine trokut. Istu stvar provjeravamo za dužine
a2 + h2a , b2 + h2b , c2 + h2c .
Cancel[FullSimplify[aa^2 + ha^2 + bb^2 + hb^2 - cc^2 - hc^2]]
(2*r^2*(32 + 128*u + 288*u^2 + 416*u^3 + 376*u^4 + 208*u^5 + 72*u^6 +
16*u^7 + 2*u^8 + 128*v + 576*u*v + 1376*u^2*v + 1952*u^3*v +
1664*u^4*v + 864*u^5*v + 288*u^6*v + 64*u^7*v + 8*u^8*v + 288*v^2 +
1376*u*v^2 + 3184*u^2*v^2 + 4176*u^3*v^2 + 3224*u^4*v^2 +
1504*u^5*v^2 + 456*u^6*v^2 + 96*u^7*v^2 + 12*u^8*v^2 + 416*v^3 +
1952*u*v^3 + 4176*u^2*v^3 + 4912*u^3*v^3 + 3288*u^4*v^3 +
1264*u^5*v^3 + 304*u^6*v^3 + 56*u^7*v^3 + 8*u^8*v^3 + 376*v^4 +
1664*u*v^4 + 3224*u^2*v^4 + 3288*u^3*v^4 + 1734*u^4*v^4 +
396*u^5*v^4 + 10*u^6*v^4 - 4*u^7*v^4 + 2*u^8*v^4 + 208*v^5 +
864*u*v^5 + 1504*u^2*v^5 + 1264*u^3*v^5 + 396*u^4*v^5 - 92*u^5*v^5 90*u^6*v^5 - 18*u^7*v^5 + 72*v^6 + 288*u*v^6 + 456*u^2*v^6 +
304*u^3*v^6 + 10*u^4*v^6 - 90*u^5*v^6 - 43*u^6*v^6 - 7*u^7*v^6 +
16*v^7 + 64*u*v^7 + 96*u^2*v^7 + 56*u^3*v^7 - 4*u^4*v^7 - 18*u^5*v^7 7*u^6*v^7 - u^7*v^7 + 2*v^8 + 8*u*v^8 + 12*u^2*v^8 + 8*u^3*v^8 +
2*u^4*v^8))/((2 + 2*u + u^2)^2*(u + v + u*v)^2*(2 + 2*v + v^2)^2)
Cancel[FullSimplify[aa^2 + ha^2 - bb^2 - hb^2 + cc^2 + hc^2]]
(2*r^2*(32 + 128*u + 224*u^2 + 224*u^3 + 168*u^4 + 112*u^5 + 56*u^6 +
16*u^7 + 2*u^8 + 128*v + 576*u*v + 1120*u^2*v + 1312*u^3*v +
1152*u^4*v + 768*u^5*v + 336*u^6*v + 80*u^7*v + 8*u^8*v + 288*v^2 +
1376*u*v^2 + 2800*u^2*v^2 + 3472*u^3*v^2 + 3096*u^4*v^2 +
1936*u^5*v^2 + 752*u^6*v^2 + 152*u^7*v^2 + 12*u^8*v^2 + 416*v^3 +
1952*u*v^3 + 3920*u^2*v^3 + 4848*u^3*v^3 + 4216*u^4*v^3 +
2464*u^5*v^3 + 856*u^6*v^3 + 144*u^7*v^3 + 8*u^8*v^3 + 376*v^4 +
1664*u*v^4 + 3224*u^2*v^4 + 3928*u^3*v^4 + 3334*u^4*v^4 +
1836*u^5*v^4 + 570*u^6*v^4 + 76*u^7*v^4 + 2*u^8*v^4 + 208*v^5 +
864*u*v^5 + 1632*u^2*v^5 + 2000*u^3*v^5 + 1692*u^4*v^5 + 892*u^5*v^5 +
250*u^6*v^5 + 26*u^7*v^5 + 72*v^6 + 288*u*v^6 + 552*u^2*v^6 +
704*u^3*v^6 + 602*u^4*v^6 + 306*u^5*v^6 + 79*u^6*v^6 + 7*u^7*v^6 +
16*v^7 + 64*u*v^7 + 128*u^2*v^7 + 168*u^3*v^7 + 140*u^4*v^7 +
66*u^5*v^7 + 15*u^6*v^7 + u^7*v^7 + 2*v^8 + 8*u*v^8 + 16*u^2*v^8 +
20*u^3*v^8 + 15*u^4*v^8 + 6*u^5*v^8 + u^6*v^8))/
((2 + 2*u + u^2)^2*(u + v + u*v)^2*(2 + 2*v + v^2)^2)
Cancel[FullSimplify[bb^2 + hb^2 + cc^2 + hc^2 - aa^2 - ha^2]]

10

KONRAD BURNIK

(2*r^2*(32 + 128*u + 288*u^2 + 416*u^3 + 376*u^4 + 208*u^5 + 72*u^6 +
16*u^7 + 2*u^8 + 128*v + 576*u*v + 1376*u^2*v + 1952*u^3*v +
1664*u^4*v + 864*u^5*v + 288*u^6*v + 64*u^7*v + 8*u^8*v + 224*v^2 +
1120*u*v^2 + 2800*u^2*v^2 + 3920*u^3*v^2 + 3224*u^4*v^2 +
1632*u^5*v^2 + 552*u^6*v^2 + 128*u^7*v^2 + 16*u^8*v^2 + 224*v^3 +
1312*u*v^3 + 3472*u^2*v^3 + 4848*u^3*v^3 + 3928*u^4*v^3 +
2000*u^5*v^3 + 704*u^6*v^3 + 168*u^7*v^3 + 20*u^8*v^3 + 168*v^4 +
1152*u*v^4 + 3096*u^2*v^4 + 4216*u^3*v^4 + 3334*u^4*v^4 +
1692*u^5*v^4 + 602*u^6*v^4 + 140*u^7*v^4 + 15*u^8*v^4 + 112*v^5 +
768*u*v^5 + 1936*u^2*v^5 + 2464*u^3*v^5 + 1836*u^4*v^5 + 892*u^5*v^5 +
306*u^6*v^5 + 66*u^7*v^5 + 6*u^8*v^5 + 56*v^6 + 336*u*v^6 +
752*u^2*v^6 + 856*u^3*v^6 + 570*u^4*v^6 + 250*u^5*v^6 + 79*u^6*v^6 +
15*u^7*v^6 + u^8*v^6 + 16*v^7 + 80*u*v^7 + 152*u^2*v^7 + 144*u^3*v^7 +
76*u^4*v^7 + 26*u^5*v^7 + 7*u^6*v^7 + u^7*v^7 + 2*v^8 + 8*u*v^8 +
12*u^2*v^8 + 8*u^3*v^8 + 2*u^4*v^8))/((2 + 2*u + u^2)^2*
(u + v + u*v)^2*(2 + 2*v + v^2)^2)
Dakle, dužine a2 + h2a , b2 + h2b , c2 + h2c ne čine stranice trokuta. (u prvom izrazu
smo dobili neke od članova da su negativni, pa cijeli izraz nije uvijek pozitivan.)