laborator 5 matlab recap prob

4
Page 1 of 4 Disciplina: Programarea şi Utilizarea Calculatoarelor II Dr.-Ing. Călin Vaida Nu uitati avantajele funcţiilor: - help ***** - doc ***** Dacă nu se specifică, secvenţele de program se vor introduce în scripturi (titlu_program.m) şi se vor executa de acolo. Exerciţii Considerǎm funcţia f(x) definită pe mai multe intervale: f ( x )= { 23, daca x≤−2 2 x 2 +3 x ( x +1 ) , daca 2< x0 4 x +1 , daca x >0 Să se calculeze valoarea funcţiei f(x) pentru x [ a,b ] , în care x ia valori consecutive cu un pas p. Să se rezolve aceeaşi problemă pentru funcţia, însă de această dată intervalul [a,b] este împărţit în k subintervale: f ( x )= { 2 x+1 , daca x <−5 x5 , daca5x <−2 x+1 x ( x3 ) , daca 2x< 8 x +6 , daca x8 Rulaţi ambele probleme pentru valori ale lui x cuprinse in intervalul -100, 100, cu diferiţi paşi de incrementare. Problema Să se realizeze un program care să rezolve o ecuaţie de gradul II, la care se vor citi coeficienţii ecuaţiei de forma f=a∙x 2 +b∙x + c, unde a≠ 0. Se va reprezenta grafic funcţia, iar dacă aceasta are rădăcini acestea se vor marca, cu culoare roşie, pe grafic. Rezolvare %Inceput program disp('Introduceti coeficientii ec de gr II:'); while (1) a=input('Dati valorea coef lui x^2, a='); if a~=0 break; else disp('Coef lui x^2 trebuie sa fie diferit de 0.'); end end b=input('Dati valorea coef lui x, b='); c=input('Dati valorea termenului liber, c='); %citirea sirului de valori ale lui x x=input('introduceti sirul de valori ale lui x, x='); f=a*x.^2+b*x+c; figure plot(x,f); hold on delta=b^2-4*a*c; if delta<0 disp('Ec nu are radacini reale'); elseif delta == 0 x1=-b/(2*a); scatter(x1,0,50,'red','filled'); else x1=(-b-sqrt(delta))/(2*a); x2=(-b+sqrt(delta))/(2*a); scatter(x1,0,50,'red','filled'); scatter(x2,0,50,'red','filled'); end %Sfarsit program Problema Să se citească un polinom de la tastatură. Se va citi gradul polinomului, coeficienţii acestuia, iar apoi valoarea lui x

Upload: winetouluu

Post on 25-Oct-2015

78 views

Category:

Documents


0 download

DESCRIPTION

ffv

TRANSCRIPT

Page 1: Laborator 5 MATLAB Recap Prob

Page 1 of 3

Disciplina: Programarea şi Utilizarea Calculatoarelor II Dr.-Ing. Călin Vaida

Nu uitati avantajele funcţiilor: - help ***** - doc *****

Dacă nu se specifică, secvenţele de program se vor introduce în scripturi (titlu_program.m) şi se vor executa de acolo.

Exerciţii

Considerǎm funcţia f(x) definită pe mai multe intervale:

f ( x )={ −23 , daca x≤−22 x2+3x ( x+1)

, daca −2< x≤0

4 x+1 , daca x>0Să se calculeze valoarea funcţiei f(x) pentru x∈ [a ,b ] , în care x ia valori consecutive cu un pas p.

Să se rezolve aceeaşi problemă pentru funcţia, însă de această dată intervalul [a,b] este împărţit în k subintervale:

f ( x )={2 x+1, daca x<−5x−5 , daca−5≤x<−2x+1

x ( x−3 ), daca −2≤x<8

x+6 , daca x≥8

Rulaţi ambele probleme pentru valori ale lui x cuprinse in intervalul -100, 100, cu diferiţi paşi de incrementare.

ProblemaSă se realizeze un program care să rezolve o ecuaţie de gradul II, la care se vor citi coeficienţii ecuaţiei de forma f=a ∙ x2+b ∙ x+c, unde a≠0. Se va reprezenta grafic funcţia, iar dacă aceasta are rădăcini acestea se vor marca, cu culoare roşie, pe grafic. Rezolvare%Inceput program disp('Introduceti coeficientii ec de gr II:');while (1) a=input('Dati valorea coef lui x^2, a='); if a~=0 break; else disp('Coef lui x^2 trebuie sa fie diferit de 0.');

endendb=input('Dati valorea coef lui x, b=');c=input('Dati valorea termenului liber, c='); %citirea sirului de valori ale lui xx=input('introduceti sirul de valori ale lui x, x='); f=a*x.^2+b*x+c;figureplot(x,f);hold on delta=b^2-4*a*c;if delta<0 disp('Ec nu are radacini reale');elseif delta == 0 x1=-b/(2*a); scatter(x1,0,50,'red','filled');else x1=(-b-sqrt(delta))/(2*a); x2=(-b+sqrt(delta))/(2*a); scatter(x1,0,50,'red','filled'); scatter(x2,0,50,'red','filled');end %Sfarsit program

Problema Să se citească un polinom de la tastatură. Se va citi gradul polinomului, coeficienţii acestuia, iar apoi valoarea lui x pentru care se va calcula polinomul.P=a0⋅x

n+a1⋅xn−1+⋯+an

!!Atenţie Pentru ca polinomul să aibă gragul „n” coeficientul acestui termen trebuie să fie diferit de zero.%%Program de calcul a unui polinom de grad n %Inceput programclear all;n=input('Introduceti gradul polinomului:');while (1) a(1)=input(['Dati valorea coef lui x^',num2str(n),' a(1)=']); if a~=0 break; else disp(['Coef lui x^',num2str(n),' trebuie sa fie diferit de 0.']); endenddisp('Introduceti ceilalti coefiecienti pe rand');for i=2:n a(i)=input(['Dati valorea coef lui x^',num2str(n-i+1),' a(',num2str(i),')=']);end

Page 2: Laborator 5 MATLAB Recap Prob

Page 2 of 3

a(n+1)=input(['Introduceti termenul liber a(',num2str(n+1),')=']);a%citirea sirului de valori ale lui xx=input('introduceti x, x='); %sol 1 cu operatorii=n:-1:0;f=a.*x.^i;ff=sum(f);fdisp(['Rezultatul estef=',num2str(ff)]);%sfarsit solutia 1 %sol 2 cu forf=0;for i=n:-1:0 f=f+a(n-i+1)*x^i;enddisp(['Rezultatul estef=',num2str(f)]); %Sfarsit program

ExerciţiuSă se modifice programul următor pentru a permite calculul valorii polinomului pentru un şir de valori.

ProblemaSă se creeze un şir cu n elemente, care au

proprietatea că elem i+1=elem i+elemi−1ţinând cont că primele două elemente din şir sunt elem[1]=0 şi elem[2]=1. (Şirul lui Fibonacci).

%%Program care determina primele n valori ale sirului lui Fibonacci %Inceput program x(1)=0;x(2)=1; n=input('Introduceti numarul de elem ale sirului, n='); for i=3:n+1 x(i)=x(i-1)+x(i-2);end disp('Sirul lui Fibonacci este');x %Sfarsit program

Exerciţiu Să se modifice problema cu şirul lui Fibonacci, astfel încât programul să nu permită introducerea unui număr mai mic de 3, şi să permită mai multe rulări.

Exerciţii

Să se creeze un şir cu n elemente, care au

proprietatea că elemi+1=elemi+3 , ţinând cont că primul element din şir se citeşte de la tastatură.

Se citesc două şiruri de la tastatură, de aceeaşi lungime. Să se creeze un al treilea şir în care fiecare element să reprezinte suma elementelor corespunzătoare din şirurile citite. Dacă şirurile nu au aceeaşi lungime afişaţi un mesaj de eroare.

ProblemaSă se citească un şir de la tastatură. Să se găsească minimul şi maximul acelui şir iar apoi aceste elemente să se inverseze. Afişaţi noul şir.

Rezolvare%Inceput program clear all;x=input('Introduceti sirul x='); a=min(x);b=max(x);p_min=0;p_max=0; for i=1:length(x) if a==x(i) p_min=i; a=max(x)+1; end if b==x(i) p_max=i; b=min(x)-1; end if p_min && p_max break; endend xaux=x(p_min);x(p_min)=x(p_max);x(p_max)=aux; x %Sfarsit program

ProblemaSă se citească un şir de la tastatură. Să se verifice dacă şirul este simetric şi anume dacă primul element este egal cu ultimul, al doilea cu penultimul, etc. În cazul în care nu există egalitate să se schimbe valorile elementelor în 0 şi să se afişeze noul şir.

Ex:

Şir1: 1 2 3 4 3 2 1 => Rezultat: Şirul este simetric.

Page 3: Laborator 5 MATLAB Recap Prob

Page 3 of 3

Şir2: -3 5 7 8 7 4 -3 => Rezultat: Şirul nu este simetric; Noul şir este: -3 0 7 8 7 0 -3

%Inceput program x=input('Introduceti sirul x='); n=length(x);simetric=1;x for i=1:n/2 if x(i) ~= x(n-i+1) simetric=0; x(i)=0; x(n-i+1)=0; endend if simetric disp('Sirul este simetric!!!');else disp('Sirul nu este simetric, iar noul sir este'); xend %Sfarsit program

Exerciţii

Să se reprezinte grafic funcţiile cos(x), cos(2x), sin(x), şi sin(2x) pe un singur grafic unde x ia 100 de valori de la −2 ∙ π la 2 ∙ π . Se vor folosi culori diferite pentru fiecare reprezentare, şi se va face legenda graficului. Pe un nou grafic să se reprezinte aceleaşi curbe doar in domeniul −π , π .

Să se rezolve sistemul de ecuaţii cu una din metodele cunoscute. Dacă sistemul nu se poate rezolva, să se afişeze un mesaj de eroare.

{x− y+2⋅z+w=2 ¿ {x+ y−2⋅z−2⋅w=6 ¿ {−3⋅x+3⋅y+2⋅z+2⋅w=4 ¿ ¿¿¿Aceeaşi cerinţă pentru:

{x+3 y+ z=10 ¿ {3 x+2 y+3 z=16¿ ¿¿¿Să se citească un şir de la tastatură. Se cere să se inverseze elementele şirului, astfel încât primul element să devină ultimul, al doilea penultimul, samd. Să se creeze astfel un nou şir. Să se afişeze cele două şiruri.

Să se citească un şir de la tastatură. Să se determine şi să se afişeze numărul de elemente pozitive, numărul de elemente negative şi numărul de elemente nule.

Să se calculeze valoarea funcţiei y=f(x), luând în calcul primii m termeni, unde:

f ( x )=1+2⋅x+3⋅x2+⋯+( i+1 )⋅xi+⋯