Sunteți pe pagina 1din 6

Departamentul A.I.A.

Matematici Asistate de Calculator

Lucrarea de laborator 4 Rezolvarea ecuaiilor algebrice. Calculul valorilor proprii i al vectorilor proprii

2. Probleme de rezolvat P4.1. S se rezolve ecuaiile algebrice: a) x3-2x2-3x+10=0, n C; b) 2 x + 1 x 2 + 1 = x 2 + 3 x + 2 , n R. a) Program (fiier script): coeficienti=[1 -2 -3 10]; x=roots(coeficienti) Rulare program: x = -2.0000 2.0000 + 1.0000i 2.0000 - 1.0000i b) Program (fiier script): % aducerea ecutiei la forma polinomiala: % sqrt(1-x^2)=x^2+x+1 % 1. x^2+x+1>=0: delta=-3 => % => conditia indeplinita pt orice x real % 2. 1-x^2>=0 % 1-x^2=(x^2+x+1)^2 <=> x^4+2*x^3+4*x^2+2*x=0 p=[1 2 4 2 0]; rad=roots(p); sol=[]; for i=1:length(rad) if imag(rad(i))==0 & 1-rad(i)^2>=0 sol=[sol rad(i)]; end end sol Rulare program: sol = 0 -0.6389 P4.2. S se scrie un program care primete ca argument vectorul coeficienilor unei ecuaii algebrice i returneaz vectorul soluiilor reale ale ecuaiei. Program (fiier funcie): function sol_real=P42(coef_alg) dim=size(coef_alg); if dim(1)~=1 & dim(2)~=1
1

Departamentul A.I.A.

Matematici Asistate de Calculator

disp('introduceti un vector') if nargout>0 sol_real=[]; end return end rad=roots(coef_alg); sol_real=[]; for i=1:length(rad) if imag(rad(i))==0 sol_real=[sol_real rad(i)]; end end if length(sol_real)==0 disp('ecuatia algebrica nu are solutii reale') end Rulare program: >> p=[1 2 4 2 0]; >> sol_real=P42(p) sol_real = 0 -0.6389 >> sol_real=P42([1 1 1]) ecuatia algebrica nu are solutii reale sol_real = [] >> sol_real=P42([1 1; 1 0]) introduceti un vector sol_real = [] >> P42([1 1; 1 0]) introduceti un vector P4.3. S se scrie un program care primete ca argument vectorul coeficienilor unei ecuaii algebrice i returneaz vectorul soluiilor complexe de modul supraunitar. Program (fiier funcie): function s=P43(c) [d1,d2]=size(c); if d1~=1 & d2~=1 disp('introduceti un vector') if nargout>0 s=[]; end return end r=roots(c); s=[]; for i=1:length(r) if imag(r(i))~=0 & abs(r(i))>1 s=[s r(i)]; end end Rulare program: >> ec=[1 -3 8 -14 16 -8 0]; >> s=P43(ec)
2

Departamentul A.I.A.

Matematici Asistate de Calculator

s = 0 + 2.0000i 0 - 2.0000i 1.0000 + 1.0000i 1.0000 - 1.0000i >> s=P43([1 -5 4.25 8.75 1 2.5]) s = 3.0000 + 1.0000i 3.0000 - 1.0000i >> s=P43([1 2 1]) s = [] >> P43([1 2 1;1 1 1]) introduceti un vector P4.4. S se rezolve n R urmtoarea ecuaie algebric n necunoscuta x: n m x + = m x + 1. x Program (fiier script): clear, clc % 1. x~=0 % aducerea ecutiei la forma polinomiala: % m*x-x^2+n=m*x^2+x <=> (1+m)*x^2+(1-m)*x-n=0 syms m n x ec=(1+m)*x^2+(1-m)*x-n;
disp('Caz 1. m==-1 => ecuatia se reduce la o ecuatie de gradul I')

ecI=subs(ec,m,-1) disp('Caz 1.1. n==0 => x=0') disp('ceea ce nu este posibil datorita conditiei x~=0') disp('ecuatia nu are solutie') pause, clc disp('Caz 1.2. n~=0') x=solve(ecI) pause, clc disp('Caz 2. m~=-1 => ecuatie de gradul II') delta=(1-m)^2+4*(1+m)*n; nd=solve(delta,n); disp('Caz 2.1. (1-m)^2+4*(1+m)*n>0 => 2 solutii reale') x_real=simple(solve(ec)) pause, clc disp('Caz 2.2. (1-m)^2+4*(1+m)*n==0 => 1 solutie reala') ecR=subs(ec,n,nd); sol=simple(solve(ecR)); x_r=sol(1) pause, clc disp('Caz 2.3. (1-m)^2+4*(1+m)*n<0 => nici o solutie reala') Rulare program: Caz 1. m==-1 => ecuatia se reduce la o ecuatie de gradul I ecI = 2*x-n Caz 1.1. n==0 => x=0 ceea ce nu este posibil datorita conditiei x~=0 ecuatia nu are solutie Caz 1.2. n~=0
3

Departamentul A.I.A.

Matematici Asistate de Calculator

x = 1/2*n Caz 2. m~=-1 => ecuatie de gradul II Caz 2.1. (1-m)^2+4*(1+m)*n>0 => 2 solutii reale x_real = (-1+m+(1-2*m+m^2+4*n+4*m*n)^(1/2))/(2*m+2) (-1+m-(1-2*m+m^2+4*n+4*m*n)^(1/2))/(2*m+2) Caz 2.2. (1-m)^2+4*(1+m)*n==0 => 1 solutie reala x_r = (-1+m)/(2*m+2) Caz 2.3. (1-m)^2+4*(1+m)*n<0 => nici o solutie reala P4.5. Se consider matricea: 1 1 A= 3 2 S se determine valorile proprii ale matricei. Ci vectori proprii corespund fiecrei valori proprii determinate? S se afieze minimum cte trei vectori proprii pentru fiecare valoare proprie determinat. Program (fiier script): clear, clc A=[1 -1; 3 2]; disp('valori proprii') val=eig(A) % fiecarei valori proprii ii corespund o infinitate de vectori % proprii [vect,v]=eig(A); clear v vect2=2*vect; vect3=-3*vect; disp(blanks(1)') for i=1:length(val)
disp(['3 vectori proprii corespunzatori valorii proprii '...

num2str(val(i)) ':']) disp(['1. ' num2str(vect(:,i)')]) disp(['2. ' num2str(vect2(:,i)')]) disp(['3. ' num2str(vect3(:,i)')]) pause, disp(blanks(1)') end Rulare program: valori proprii val = 1.5000 + 1.6583i 1.5000 - 1.6583i 3 vectori proprii corespunzatori valorii proprii 1.5+1.6583i: 1. -0.14434-0.47871i 0.86603+0i 2. -0.28868-0.95743i 1.7321+0i 3. 0.43301+1.4361i -2.5981+0i 3 vectori proprii corespunzatori valorii proprii 1.5-1.6583i: 1. -0.14434+0.47871i 0.86603+0i

Departamentul A.I.A.

Matematici Asistate de Calculator

2. -0.28868+0.95743i 1.7321+0i 3. 0.43301-1.4361i -2.5981+0i P4.6. S se scrie un program care primete ca argument o matrice ptratic i care returneaz valoarea singular minim, valoarea singular maxim i numrul de condiionare n raport cu inversarea al matricei. Program (fiier funcie): function [sg_min,sg_max,nr_cond]=P46(A) [m,n]=size(A); if m~=n disp('matricea trebuie sa fie patratica') if nargout>0 sg_min=[]; sg_max=[]; nr_cond=[]; end return end val_sg=svd(A); sg_min=min(val_sg); sg_max=max(val_sg); nr_cond=cond(A); Rulare program: >> A=[13 -10 12; -11 14 10; 0 12 -13]; >> [sg_min,sg_max,nr_cond]=P46(A) sg_min = 8.0275 sg_max = 26.8248 nr_cond = 3.3416 >> [sg_min,sg_max,nr_cond]=P46([1 2 3; 2 3 0]) matricea trebuie sa fie patratica sg_min = [] sg_max = [] nr_cond = [] >> P46([1 2 3; 2 3 0]) matricea trebuie sa fie patratica P4.7. S se stabileasc dac urmtoarele sisteme sunt bine condiionate sau slab condiionate: 2 x1 3 x 2 = 7 a) 6 x1 + 8 x 2 x3 = 5 3x + 4 x = 1 3 2 190 x + 7 y = 4 b) 2 x + 200 y = -2 a) Program (fiier script): clear, clc A=[2 -3 1; -6 8 -1; 0 3 4]; nrcondA=rcond(A) % sistem slab conditionat

Departamentul A.I.A.

Matematici Asistate de Calculator

Rulare program: nrcondA = 0.0186 b) Program (fiier script): M=[190 7; 2 200]; nrcondM=rcond(M) % sistem bine conditionat Rulare program: nrcondM = 0.9085