Documente Academic
Documente Profesional
Documente Cultură
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
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(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
Cij=Aik⋅Bkj+Cij
întoarce C
n=input("dimensiunea:");
A=input("A= ");
B=input("B= ");
inm=inm_m(n,A,B);
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
k=i+j−1
pk=pk+ri⋅qj
întoarce p
n=input("dimensiunea:");
r=input("r= ");
q=input("q= ");
inm=inm_p(n,r,q);
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)
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
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