Laboratoro d Matematca Computazoale A.A. 2008-2009 Lab. 2 Premessa: prma d memorzzare e/o usare fles d testo o d dat mpostare l curret-drectory sulla cartella d sstema che l cotee o dovrà coteerl; questo sstema la cartella W: (accessble solo dalla vostra password) Scrpt-Fle Che cos è? E u fle co estesoe.m (ad empo: myfle.m). Cotee ua queza d struzo Matlab, scrtte come fosro dgtate modaltà terattva. Dgtado l ome d uo scrpt-fle a destra del prompt: >> myfle vegoo egute successoe tutte le struzo coteute el fle. Le varabl asgate uo scrpt-fle soo vsbl dall estero, ovvero persstoo memora al terme dell ecuzoe. Alcue buoe regole Il ome d uo scrpt-fle deve esre dverso da om delle varabl che esso elabora e da om delle varabl pret Workspace, altrmet o verrà eguto. No asgare ad uo scrpt-fle l ome d ua fuzoe predefta d Matlab. Per verfcare u ome esste gà: >> exst( ome )
Matlab come lguaggo d programmazoe Ccl codzoat (comado whle ) Stass geerale: whle (codzoe == true) struzoe aggorameto codzoe Ccl o codzoat co cotatore (comado for ) Stass geerale: for cotatore = zo:passo:fe (oppure espressoe) struzoe struzoe Empo : determare l prmo tero tale che 45 >> =; >> whle sum(:)<45 =+; =
Empo 2: calcolo del valor medo M = = x() d u vettore asgato x Soluzoe ( uo scrpt-fle) x = put( damm x = ); M=0; for =:legth(x) M=M+x(); M=M/legth(x) Soluzoe 2 ( uo scrpt-fle) x = put( damm x = ); M=0; for x=x M=M+x; M=M/legth(x) Soluzoe 3 (utlzzado fuzo defte per vettor) >>M=sum(x)/legth(x) Soluzoe 4 (utlzzado la fuzoe apposta d Matlab) >>M=mea(x) E buoa orma, prma d scrvere u cclo, vedere è possble evtarlo tramte u opportuo uso d struzo vettoral.
Empo 3: calcolo d! Soluzoe ( uo scrpt-fle) = put( damm = ); s=; for k=2: s=s*k; dsp(s) Soluzoe 2 (utlzzado fuzo defte per vettor) >>s=prod([:]) Empo 4: Dato, calcolare la matrce tragolare superore A defta da A j = j = /(j + ) < j Soluzoe ( uo scrpt fle, realzzado u cclo) clear A =put( rsc dmesoe della matrce ); for =: for j=+: A(,j)=/(j+); A(,)=; Soluzoe 2 ( uo scrpt fle, usado operazo vettoral) =put( rsc dmesoe della matrce ); A=*eye(); for =:- A(,+:)=./[+2:+];
Istruzo codzoal (comado f ) Stass geerale: f (codzoe==true) struzo elf (codzoe2==true) struzo 2 el struzo 3 Operator relazoal e logc Il valore corrspode ad ua codzoe vera, 0 ad ua falsa. <, <=, >=, >, = =, ~= a == b a = b, 0 altrmet a ~= b a b, 0 altrmet &,, ~, xor
Empo 5: Dato, costrure l vettore a, d lughezza, defto da a = oppure = 3 = e 3 ( )( 3) Soluzoe (realzzado u cclo) clear a =put( rsc dmesoe vettore ); for =: f == == 3 a()=/; el a()=/((-)*(-3)); Soluzoe 2 (usado struzo vettoral) a=./[:]; d=[2,4:]; a(d)=./((d-).*(d-3))
Empo 6: S cosder la fuzoe f defta da 2 x 2 (x) = 2 x 2 + 2 f 2 2 x 0 0 < x 2 S valut f 00 put equspazat el suo domo d defzoe salvado l rsultato u vettore f e successvamete s ottega u grafco della fuzoe co l comado plot(x,f) Soluzoe (realzzado u cclo) x=lspace(-2,2); for =:legth(x) f x()<=0 f()=2-x()^2/2; el f()=2+x()^2/2; plot(x,f) Soluzoe 2 (usado struzo vettoral) x=lspace(-2,2); f=double(x<=0).*(2-x.^2/2)+double(x>0).*(2+x.^2/2) ; plot(x,f)
Empo 7: S cosder la successoe d terme -esmo a così defta a = (2 + )e + 2, 0 Calcolare la somma de prm 00 term della successoe. Calcolare l prodotto de prm 0 term d dce dspar della successoe. Trovare l dce a partre dal quale la successoe è more d 0-8. Proposta d Soluzoe = [:00]; a = (2*+).*exp(-)./(+2); somma = sum(a) dspar = 2*[0:9]+; % vettore de prm 0 dc dspar prodotto = prod(a(dspar)) =; whle (2*+)*exp(-)./(+2)>e-8 = +;
ESERCIZI Dato l vettore a = (,,,,..., ) co = 20, calcolare le guet 2 3 4 quattà eguo operazo vettoral: a + B =, B 2 = = a = a a ( Soluzo: B = 6.4023, B2 = 6565) Data la fuzoe x e f (x) = x l(x) x 0 0 < x 0 x > 0 fare u grafco utlzzado 200 od equspazat ell tervallo [-5, 5] guo le due dfferet stratege:. s utlzzo u cclo for ed l costrutto f;. s utlzzo operazo vettoral evtado sa l cclo for che l uso esplcto d f. Utlzzare u cclo whle per stablre quat a occorroo per accumulare u mloe d euro u coto correte bacaro, s parte co u captale d 0000 euro, s versao 0000 euro alla fe d og ao e la baca rcoosce u teres auo del 2% su cot corret.
Fucto Matlab Soo porzo d codce scrtte u fle dpete che svolgoo u determato compto e comucao co lo spazo d lavoro estero solo attraverso parametr gresso e uscta. L testazoe d ua fucto ha mpre la struttura: fucto [out, out2,, out] = omefu(, 2,,p) parola chave parametr uscta ome fuzoe parametr gresso La fuzoe omefu deve esre salvata el fle omefu.m All tero della fucto deve esre asgato u valore ad oguo de parametr uscta out, out2, out. Le varabl el blocco struzo tero alla fucto soo local, ovvero vegoo cacellate dalla memora al terme della chamata. Ua fuzoe può rchamare o esre rchamata da altre. Per chamare ua fucto, ad empo dallo spazo d lavoro: >> [value, value2,, value] = omefu(, 2,,p)
Due successo otevol Successoe d Fboacc F =, F 2 = F = F - + F -2, > 2 Osrvazoe: F + 5 2 + lm = Φ = = F.68033988... Il valore Φ è detto rapporto aureo Successoe d Collatz Dato x tero postvo, s defsce per 2 la successoe x + x / 2 = 3x + x x è par è dspar Ua volta ragguto l valore, la successoe s rpete cclcamete co valor (, 4, 2, ) (verfcare tale affermazoe!) Cogettura d Collatz: l algortmo guge mpre a terme, ossa s ragguge mpre l valore, dpetemete dal valore d parteza (tale cogettura o è acora stata dmostrata).
ESERCIZI Scrvere ua fuzoe che, rcevuto gresso u tero postvo, resttusca output prm valor della successoe d Fboacc. Scrvere ua fuzoe che calcol tutt umer d Fboacc mor o ugual d u tero asgato. Calcolare prmo 40 umer della successoe d Fboacc {F } ed quozet F =, per =, 2,, 39. + q F Cofrotare, tramte u grafco, valor calcolat co l rapporto aureo Φ. Scrvere ua fuzoe che, rcevuto gresso l tero postvo x, resttusca output la queza d Collatz da esso geerata. C s arrest al raggugmeto del prmo valore x k =. Sa {x } la successoe d Collatz geerata a partre dal valore zale x = m. Sa g(m) l dce del prmo elemeto della successoe uguale ad.. Per m = : 200 dgare l grafco de valor assut da g(m).. Qual è l valore massmo assuto da g(m) per m 200 e per quale valore d m s verfca? Sa M tale valore; dgare put della successoe d Collatz calcolat a partre da x = M.