Sunteți pe pagina 1din 16

Colocviu MN

1.Produsul scalar a 2 vectori

Rezolvare:
a)Conceperea unei probleme de test (0,5 pct)
Pe hartie:- de exemplu: n=5 (dimensiunea)
u=[-1,3,9,-5,-7]
v=[-2,4,2,-1,-3]
p=p+ui*vi
u*v=[2,12,18,5,21]
p=2+12+18+5+21=58
b)Formularea problemei (1pct)
Pe hartie: Se da:vectorul u=[-1,3,9,-5,-7] ,ambii au dimensiunea 5
vectorul v=[-2,4,2,-1,-3]
Se cere:produsul scalar p
Formula generala de calcul: p=p+ui*vi
c)Conceperea pseudocodului(0,5 pct)
Pe hartie:
funcție produs(u, v) ; produsul scalar
int i ; contor
int n ; dimensiunea vectorilor
real p ; produsul scalar p = u⋅⋅v
tablou real u[n],v[n] ; factor
p=0
pentru i = 1, n
p=p+ui⋅vi
întoarce p

d)Implementare si testare(2 pct)


De bagat programul in Octave + verificare de la punctul a
Program produs scalar
function produs(u,v)

n=input("dimensiunea= ");

u=input("vectorul u= ");

v=input("vectorul v= ");

p=0;

for(i=1:n)

p=p+u(i)*v(i);

end

disp("rezultatul este ")

disp(p)

end
Verificare cu date de la a
dimensiunea= 5
vectorul u= [-1,3,9,-5,-7]
vectorul v= [-2,4,2,-1,-3]
rezultatul este
58
e)Pe hartie:
Pentru calculul produsului scalar a 2 vectori n dimensionali se
efectueaza n-1 adunari si n inmultiri.Rezulta un total de 2n-1
operatii.La dublarea dimensiunii se dubleaza si numarul de
operatii.Algoritmul are ordinul de complexitate liniar si se noteaza
T=O(n).Pentru necesarul de memorie,ordinul de coplexitate este tot
liniar,de ordin 1 si se noteaza cu M.In acest algoritm pot sa apra erori
inerente datorate datelor de intrare.
2.Produsul a 2 matrice

a) Conceperea unei probleme de test (0,5 pct)


Pe hartie:- de exemplu:dimensiunea=3x3
A=(1 4 7; 2 0 1; 1 3 -2) ;dimensiunea 3x3
B=(2 3 5;1 2 3;4 7 0)
A*B=(1 4 7; 2 0 1; 1 3 -2)* (2 3 5;1 2 3;4 7 0)
A*B=(34 60 17;8 13 10;-3 -5 14)
b)Formularea problemei (1pct)
Pe hartie: Se da:matricea A=(1 4 7; 2 0 1; 1 3 -2)
matricea B=(2 3 5;1 2 3;4 7 0)
Se cere:produsul celor 2 matrice (A*B)
Formula generala de calcul: suma(de la r=1 la n) din Ai,rBr,j
c)Conceperea pseudocodului(0,5 pct)
Pe hartie:
funcție inm2mat(n, A, B) ;inmultirea a 2 matrice
int i,j,k
int n ;contori
tablou real A[n][n],B[n][n] ;dimensiunea matr.
tablou real C[n][n]
pentru i = 1, n
pentru j=1, n
Cij=0
pentru k=1, n

Cij=Aik⋅Bkj+Cij
întoarce C

d)Implementare si testare(2 pct) - pe calculator!!!


De bagat programul in Octave + verificare de la punctul a
Programul:
function inm2mat(n,A,B)

n=input("dimensiunea:");

A=input("A= ");

B=input("B= ");

inm=inm_m(n,A,B);

disp("rezultatul este ");

disp(inm);

end

function C=inm_m(n,A,B)

for i=1:n

for j=1:n
C(i,j)=0;

for k=1:n

C(i,j)=A(i,k)*B(k,j)+C(i,j);

end

end

end

end

Verificare:
dimensiunea:3
A= [1 4 7;2 0 1;1 3 -2]
B= [2 3 5;1 2 3;4 7 0]
rezultatul este
34 60 17
8 13 10
-3 -5 14
e) Pe hartie:
Algoritmul pentru inmutirea matricelor patrate n dimensionale
necesita 3n^2 locatii de memorie.Daca dimenisunea (n) a matricei
creste de 10 ori,spatiul necesar creste de 100 de ori.Algoritmul este de
ordinul 2 si se spune M=O(n2). Din punct de vedere al
timpului,algoritmul este de ordiunl 3,deci T=cubic.
Algoritmul poate fi afectat de erori inerente datorate datelor de intrare
dar si de erori de trunchiere din cauza prezentei unui numar mai mare
de operatii aritmetice.
3.Inmultirea a 2 polinoame – verificare octave pct d

a) Conceperea unei probleme de test (0,5 pct)


Pe hartie:- de exemplu: n=gradul=2
P1=2x2+5x-2
P2=3x2-7x+1
P1*P2=(2x2+5x-2)( 3x2-7x+1)
P1*P2=6x4+x3-39x2+17x-2
b)Formularea problemei (1pct)
Pe hartie: Se da:polinomul 1- P1=2x2+5x-2
Polinomul 2- P2=3x2-7x+1
Se cere:produsul celor 2 polinoame (P1*P2)
Formula generala de calcul: se inmulteste fiecare element
din primul polinom cu fiecare element din cel de-al doilea

c)Conceperea pseudocodului(0,5 pct)


Pe hartie:
funcție inm2poli(n, r, q) ;functie de inmultire a 2 polinoame
int i,j,k ;contori
int n
tablou real r[n+1],q[n+1] ;dimesniunea polinoamelor
tablou real p[2n+1]
pentru i = 1, 2n+1
pi=0
pentru i=1, n+1
pentru j=1, n+1

k=i+j−1
pk=pk+ri⋅qj
întoarce p

d)Implementare si testare(2 pct) - pe calculator!!!


De bagat programul in Octave + verificare de la punctul a
Programul
function inm2poli(n,r,q)

n=input("dimensiunea:");

r=input("r= ");

q=input("q= ");

inm=inm_p(n,r,q);

disp("rezultatul este ");

disp(inm);

end

function p=inm_p(n,r,q)

for i=1:2*n+1

p(i)=0;

end

for i=1:n+1

for j=1:n+1

k=i+j-1;

p(k)=p(k)+r(i)*q(j);
end

end

end

Verificare:

e) Pe hartie:
Din punct de vedere al timpului algoritmul este de ordin patratic, iar
din punct de vedere al necesarului de memorie M este liniar,de ordin
1.
Algoritmul poate fi afectat de erori de trunchiere datorate aparitiei
unui numar mare de operatii aritmetice.
4.Dezvoltare in serie Taylor y=cos(x)

a) Conceperea unei probleme de test (0,5 pct)


Pe hartie:- de exemplu:valoare=pi/2
Y=cos (pi/2)=0.06
b)Formularea problemei (1pct)
Pe hartie: Se da:seria Taylor pentru y(cosx)
Valoarea pi/2
Se cere:calculul seriei Taylor pentru pi/2
Formula generala de calcul: formula de mai sus,dupa
inlocuire da 0.06
c)Conceperea pseudocodului(0,5 pct)
Pe hartie:
funcție my_cosinus(x,er) ; functie pentru dezvoltare taylor functia cosinus
real x,t,s,er ;variabile
întreg k
...............................
cât timp |t|>er|
..........................
∙∙
întoarce s

d)Implementare si testare(2 pct) - pe calculator!!!


De bagat programul in Octave + verificare de la punctul a
Programul
function my_cosinus(x,er)

x=input("x = ");

er=input("er = ");

t=1;

s=t;

k=0;

it=1;

while(abs(t)>er)

k=k+2;

t=-t*x*x/(k)/(k-1);

s=s+t;

it=it+1;
end

disp(s);

disp(it);

end

Verificare:
x = pi/2
er = 1
1
1
e) Pe hartie:
Apar erori de rotunjire, datorita prezentei fractiilor si numarului ridicat
de zecimale.Apar erori inerente, atunci cand exponentul provine din
masuratori experimentale.Apar si erori de trunchiere, deoarece seria
Taylor se calculeaza cu o suma care tinde la infinit, iar reprezentarea
in calculator este realizata cu un numar finit de pasi.
Algoritmul prezinta o complexitate de memorie constanta M= O(1),
deoarece nu sunt vectori/matrice, ci numere reale. Complexitatea de
timp este liniara, deoarece se repeta un anumit numar de pasi, pana
candse contrazice conditia din while.
5.Dezvoltarea in serie Taylor pentru y=ex

a) Conceperea unei probleme de test (0,5 pct)


Pe hartie:- de exemplu: x=2
y=e2=1+2+4/2+8/6+16/24=168/24=7
b)Formularea problemei (1pct)
Pe hartie: Se da:seria Taylor pentru y=ex
Valoarea lui x=2
Se cere:calculul seriei Taylor pentru x=2
Formula generala de calcul: formula de mai sus,dupa
inlocuire da 7

c)Conceperea pseudocodului(0,5 pct)


Pe hartie:
functie exponentiala (err,x)
intreg x,k,a,z,err
real t,y
a=x
k=1
y=1
t=1
z=1
cat timp | t | >err
t=a/z
y=y+t
a=x*a, reprezinta x^k
k=k+1
z=z*k, reprezinta factorial de k
intoarce y
d)Implementare si testare(2 pct) - pe calculator!!!
De bagat programul in Octave + verificare de la punctul a

Programul:
clear all;
clc;
x=input("introduceti exponentul = ");
err=input("introduceti eroarea = ");
[y]=exponentiala(err,x);
y1=exp(x);
format long;
disp(y);
disp(y1);
function [y] = exponentiala (err,x)
y=1;
a=x;
k=1;
t=1;
z=1;
while(abs(t)>err)
t=a/z;
y=y+t;
a=x*a;
k=k+1;
z=z*k;
end
end

e) Apar erori de rotunjire, datorita prezentei fractiilor si numarului


ridicat de zecimale.Apar erori inerente, atunci cand exponentul
provine din masuratori experimentale.Apar si erori de trunchiere,
deoarece seria Taylor se calculeaza cu o suma care tinde la infinit, iar
reprezentarea in calculator este realizata cu un numar finit de pasi.
Algoritmul prezinta o complexitate de memorie constanta M= O(1),
deoarece nu sunt vectori/matrice, ci numere reale. Complexitatea de
timp este liniara, deoarece se repeta un anumit numar de pasi, pana
candse contrazice conditia din while.

S-ar putea să vă placă și