Laboratoro d Matematca Computazoale A.A. 2007-2008 Lab. 2 Scrpt-Fle Che cos è? E u fle co estesoe.m (ad esempo: myfle.m). Cotee ua sequeza d struzo Matlab, scrtte come se fossero dgtate modaltà terattva. Dgtado l ome d uo scrpt-fle a destra del prompt: >> myfle vegoo esegute successoe tutte le struzo coteute el fle. Le varabl assegate uo scrpt-fle soo vsbl dall estero, ovvero persstoo memora al terme dell esecuzoe. Alcue buoe regole Il ome d uo scrpt-fle deve essere dverso da om delle varabl che esso elabora e da om delle varabl preset Workspace, altrmet o verrà eseguto. No assegare ad uo scrpt-fle l ome d ua fuzoe predefta d Matlab. Per verfcare se 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 Esempo : determare l prmo tero tale che 45 >> =; >> whle sum(:)<45 =+; =
Esempo 2: calcolo del valor medo M = Soluzoe ( uo scrpt-fle) x = put( damm x = ); M=0; for =:legth(x) M=M+x(); M=M/legth(x) = x() d u vettore assegato x Soluzoe 2 ( uo scrpt-fle) 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)
Esempo 3: Dato, calcolare la matrce tragolare superore A defta da A j se = /(j + ) se = < j j Soluzoe ( uo scrpt fle, realzzado u cclo) clear A =put( sersc dmesoe della matrce ); for =: for j=+: A(,j)=/(j+); A(,)=; Soluzoe 2 ( uo scrpt fle, usado operazo vettoral) =put( sersc dmesoe della matrce ); A=*eye(); for =:- A(,+:)=./[+2:+]; E buoa orma, prma d scrvere u cclo, vedere se è possble evtarlo tramte u opportuo uso d struzo vettoral.
Istruzo codzoal (comado f ) Stass geerale: f (codzoe==true) struzo elsef (codzoe2==true) struzo 2 else struzo 3 Operator relazoal e logc Il valore corrspode ad ua codzoe vera, 0 ad ua falsa. <, <=, >=, >, = =, ~= a == b se a = b, 0 altrmet a ~= b se a b, 0 altrmet &,, ~, xor
Esempo 4: Dato, costrure l vettore a, d lughezza, defto da a se = oppure = 3 = se e 3 ( )( 3) Soluzoe (realzzado u cclo) clear a =put( sersc dmesoe vettore ); for =: f == == 3 a()=/; else a()=/((-)*(-3)); Soluzoe 2 (usado struzo vettoral) a=./[:]; d=[2,4:]; a(d)=./((d-).*(d-3))
Esempo 5: S cosder la fuzoe f defta da 2 x 2 (x) = 2 x 2 + 2 f 2 se 2 x 0 se 0 < x 2 S valut f 00 put equspazat el suo domo d defzoe e se e dseg l grafco. Soluzoe (realzzado u cclo) x=lspace(-2,2); for =:legth(x) f x()<=0 f()=2-x()^2/2; else 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)
Esempo 6: 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 seguet 2 3 4 quattà eseguo 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) se se se x 0 0 < x 0 x > 0 fare u grafco utlzzado 200 od equspazat ell tervallo [-5, 5] seguo 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, se s parte co u captale d 0000 euro, s versao 0000 euro alla fe d og ao e la baca rcoosce u teresse 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 sempre la struttura: fucto [out, out2,, out] = omefu(, 2,,p) parola chave parametr uscta ome fuzoe parametr gresso La fuzoe omefu deve essere salvata el fle omefu.m All tero della fucto deve essere assegato 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 essere rchamata da altre. Per chamare ua fucto, ad esempo dallo spazo d lavoro: >> [value, value2,, value] = omefu(, 2,,p)
Due successo otevol Successoe d Fboacc F =, F 2 = F = F - + F -2, > 2 Osservazoe: 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 + se se 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 sempre a terme, ossa s ragguge sempre 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 assegato. 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 sequeza 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 dsegare 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; dsegare put della successoe d Collatz calcolat a partre da x = M.