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.)
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.)