Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
MAIN DI SUMMAX
clear all A = rand(5,12) [s,m] = summax(A)
FUNCTION DI SUMMAX
function [s,m] = summax(A) [l,n] = size(A); s = zeros(1,n); m = zeros(1,n); for j = 1:n for i = 1:l s(j) = s(j) + A(i,j); if A(i,j) > m(j) m(j) = A(i,j); end end end end
MAIN DI ERRORE
clear all x = [1 2 3]; y = [4 5 6]; [ea,er] = errore(x,y,1) [ea,er] = errore(x,y,2) [ea,er] = errore(x,y,3) [ea,er] = errore(x,y,4)
FUNCTION DI ERRORE
function [ea,er] = errore(x,y,p) nx = length(x); ny = length(y); assert(nx==ny,'La lunghezza dei vettori x e y deve essere la stessa.') n = nx; e = x-y; Se = 0; Sx = 0; for i = 1:n Se = Se + abs(e(i))^p; Sx = Sx + abs(x(i))^p; end ea = Se^(1/p); npx = Sx^(1/p); er = ea/npx; end
BISEZIONE
function [xstar,x] = bisezione(f,a,b) assert(f(a)*f(b)<0,'Dati non consistenti.') tol = 1e-8; %1*10^-8 i = 0; while true i = i+1; x(i) = (a(i)+b(i))/2; if f(x(i))*f(a(i)) < 0 a(i+1) = a(i); b(i+1) = x(i); else a(i+1) = x(i); b(i+1) = b(i); end if abs(f(x(i))) < tol % f(x(i)) == 0 xstar = x(i); break; end end end```html
x(i);returnendendend-Algoritmo di Newtonfunction [xstar,x ] = algnewton(f,df,x0)k=0;x=x0;tol=1e-8;while truek=k+1;x(k+1)=x(k)-f(x(k))/df(x(k));if abs(f(x(k+1)))<tolxstar=x(k+1);returnendendend-MAIN DI BISEZIONEclear allclcf1 = @(x) exp(x)-2-x;f2 = @(x) cos(x)+1-x;f3 = @(x) log(x)-5+x;[xstar1,x1]= bisezione(f1,0,10)[xstar2,x2]= bisezione(f2,0,10)[xstar3,x3]= bisezione(f3,0,10)-CONDIZIONAMENTOclear allA=zeros(8,8);for i=1:8for j=1:8A(i,j)=1/(i+j-1);endendb=A*ones(8,1);x=A\b;k=cond(A);er=norm(x-ones(8,1))/norm(x);bcap=b;bcap(8)=b(8)+10^-6;xcap=A\bcap;er1=norm(x-xcap)/norm(x);er2=norm(b-bcap)/norm(b);-DIMENSIONIfunction [n_elementi ] = dimensioni( matrice )[n_righe,n_colonne]=size(matrice);n_elementi=n_righe*n_colonne;end-ESERCIZIO DI ESAME DI CALCOLO NUMERICOfunction [ s,m ] = esame(A) %si opera per righe%[n,n]=size(A);s = zeros(1,n);m = zeros(1,n);for j=1:ns(j)=s(j)+A(1,j);for i=1:nif m(j)>A(i,j)m(j)=A(i,j);endendendend-INTEGRALEclear allclcf = @(x) x.*exp(-x).*cos(2*x);I =
``` ```htmlx(i);returnendendend-Algoritmo di Newtonfunction [xstar,x ] = algnewton(f,df,x0)k=0;x=x0;tol=1e-8;while truek=k+1;x(k+1)=x(k)-f(x(k))/df(x(k));if abs(f(x(k+1)))<tolxstar=x(k+1);returnendendend-MAIN DI BISEZIONEclear allclcf1 = @(x) exp(x)-2-x;f2 = @(x) cos(x)+1-x;f3 = @(x) log(x)-5+x;[xstar1,x1]= bisezione(f1,0,10)[xstar2,x2]= bisezione(f2,0,10)[xstar3,x3]= bisezione(f3,0,10)-CONDIZIONAMENTOclear allA=zeros(8,8);for i=1:8for j=1:8A(i,j)=1/(i+j-1);endendb=A*ones(8,1);x=A\b;k=cond(A);er=norm(x-ones(8,1))/norm(x);bcap=b;bcap(8)=b(8)+10^-6;xcap=A\bcap;er1=norm(x-xcap)/norm(x);er2=norm(b-bcap)/norm(b);-DIMENSIONIfunction [n_elementi ] = dimensioni( matrice )[n_righe,n_colonne]=size(matrice);n_elementi=n_righe*n_colonne;end-ESERCIZIO DI ESAME DI CALCOLO NUMERICOfunction [ s,m ] = esame(A) %si opera per righe%[n,n]=size(A);s = zeros(1,n);m = zeros(1,n);for j=1:ns(j)=s(j)+A(1,j);for i=1:nif m(j)>A(i,j)m(j)=A(i,j);endendendend-INTEGRALEclear allclcf = @(x) x.*exp(-x).*cos(2*x);I =
```-0.122122604618968;[I1q,iter1] = quad(f,0,2*pi);[I2q,iter2] = quad(f,0,2*pi,1e-8);[I3q,iter3] = quad(f,0,2*pi,1e-10);e1q = abs((I-I1q)/I)e2q = abs((I-I2q)/I)e3q = abs((I-I3q)/I)x1 = linspace(0,2*pi,50);x2 = linspace(0,2*pi,250);x3 = linspace(0,2*pi,500);y1 = f(x1);y2 = f(x2);y3 = f(x3);I1t = trapz(x1,y1);I2t = trapz(x2,y2);I3t = trapz(x3,y3);e1t = abs((I-I1t)/I)e2t = abs((I-I2t)/I)e3t = abs((I-I3t)/I)-MAIN DI MINIMOMATRICEclear all% A = 2*rand(5,6)-1A = [132 -234 23 -960 97 -4 80 0 24 160 0 0 -11]-MAIN DI MINIMOQUADRATIclear allclose allclcm = 30;x = linspace(0,100,m);y = 0.5*x.^2 + 3*x + 7;x = x + 2*randn(1,m);y = y + 10*randn(1,m);[r,p,er,ep] = minquadrati(x,y);figure(’color’,’w’)hold on;plot(x,y,’o’)plot(x,r(1)+r(2)*x,’r’)plot(x,p(1)+p(2)*x+p(3)*x.^2,’m’)-MAIN DI PRODOTTOMATRICIclear all;A = 2*rand(5,6)-1B = 2*rand(6,3)-1C = prodottomatrici(A,B)A*B[A0,i0,j0] = minimomatrice(A)-MAIN DI SPLIPRIMOGRADOclear alla=[1 2 3
4];z=[5 6 7 8];v=linspace(5,8,100);[s]=splineprimogrado(v,a,z);-MAIN DI ALGORITMO DI NEWTONclear allclcf1 = @(x) exp(x)-2-x;f2 = @(x) cos(x)+1-x;f3 = @(x) log(x)-5+x;df1=@(x)exp(x)-1;df2=@(x)-sin(x)-1;df3=@(x)1/x+1;[xstar1,x1]=algnewton(f1,df1,5)[xstar2,x2]=algnewton(f2,df2,3)[xstar3,x3]=algnewton(f3,df3,7)-FUNCTION DI MINIMOMATRICEfunction [A0,i0,j0] = minimomatrice(A)[m,n] = size(A);A0 = A(1,1);i0 = 1;j0 = 1;for i = 1:mfor j = 1:nif A(i,j) < A0A0 = A(i,j);i0 = i;j0 = j;endendendend-FUNCTION DI MINIMOQUADRATIfunction [r,p,er,ep] = minquadrati(x,y)m = length(x);sx = sum(x);sy = sum(y);sx2 = sum(x.^2);sx3 = sum(x.^3);sx4 = sum(x.^4);sxy = sum(x.*y);sx2y = sum(x.^2.*y);A = [ m sx;sx sx2 ];b = [ sy; sxy ];C = [ m sx sx2;sx sx2 sx3;sx2 sx3 sx4 ];d = [ sy; sxy; sx2y ];r = A\b;p = C\d;er = norm( r(1)+r(2)*x - y );ep = norm( p(1)+p(2)*x+p(3)*x.^2 - y );end-FUNCTION DI PRODOTTO DI MATRICIfunction C = prodottomatrici(A,B)[n,mA] = size(A);[mB,p] = size(B);assert(mA==mB,’Dimensioni
matrici non corrette.’)m = mA;C = zeros(n,p);for i = 1:nfor j = 1:pS = 0;for k = 1:mS = S + A(i,k)*B(k,j);endC(i,j) = S;endendend
-MAIN DI RADICI1
clear allclose allx1 = 0:0.001:2;x2 = 0:0.01:10;x3 = 0:0.01:10;f1 = exp(x1)-2-x1;f2 = cos(x2)+1-x2;f3 = log(x3)-5+x3;figure(’color’,’w’)subplot(3,1,1)hold on; box on;plot(x1,f1,’r’)subplot(3,1,2)hold on; box on;plot(x2,f2,’b’)subplot(3,1,3)hold on; box on;plot(x3,f3,’k’)
-MAIN DI RADICI2
clear allclose allx1 = 0:0.001:2;x2 = 0:0.01:10;x3 = 0:0.01:10;f1a = exp(x1); f1b = 2+x1;f2a = cos(x2); f2b = -1+x2;f3a = log(x3); f3b = 5-x3;figure(’color’,’w’)subplot(3,1,1)hold on; box on;plot(x1,f1a,’r’)plot(x1,f1b,’b’)subplot(3,1,2)hold on; box on;plot(x2,f2a,’r’)plot(x2,f2b,’b’)subplot(3,1,3)hold on; box on;plot(x3,f3a,’r’)plot(x3,f3b,’b’)
-FUNCTION DI SPLINEPRIMOGRADO
function [s ] =
m=length(v); s=zeros(1,m); for i=1:m if (z(1)<=v(i))&&(v(i)<z(2)) s(i)=a(1)+a(2)*v(i); elseif (z(2)<=v(i))&&(v(i)<z(3)) s(i)=a(1)+a(2)*v(i)+a(3)*(v(i)-z(2)); elseif (z(3)<=v(i))&&(v(i)<z(4)) s(i)=a(1)+a(2)*v(i)+a(3)*(v(i)-z(2))+a(4)*(v(i)-z(3)); end end
function [L,U,D] = splitting(A) [n,n] = size(A); L = zeros(n,n); U = zeros(n,n); D = zeros(n,n); for i = 1:n for j = 1:n if i > j L(i,j) = A(i,j); elseif i < j U(i,j) = A(i,j); else % in tutti i rimanenti casi, ovvero i == j D(i,j) = A(i,j); end end end end
A = 2*rand(5,5)-1 L = tril(A,-1) U = triu(A,1) D = diag(diag(A)) L+D+U
clear all S = 0; k = 0; while S < 2000 k = k+1; S = S + 3*k^2; end N = k
clear all A=zeros(10,10); [n,m]=size(A); for i=1:n for j=1:m A(i,j)=i*j; end end
function y=troncpow2(x,c,t) % calcola la spline quadratica nella base delle potenze troncate. % INPUT x: punti
della discretizzazione dell'intervallo% c: vettore dei coefficienti% t: vettore dei nodi interni% OUTPUT y: valore della spline interpolante in xm=length(x);y=zeros(m,1);for i=1:mif x(i)<t(1)y(i)=c(1)+c(2)*x(i)+c(3)*x(i)^2;elseif x(i)<t(2)y(i)=c(1)+c(2)*x(i)+c(3)*x(i)^2+c(4)*(x(i)-t(1))^2;elseif x(i)<t(3)y(i)=c(1)+c(2)*x(i)+c(3)*x(i)^2+c(4)*(x(i)-t(1))^2+ ...c(5)*(x(i)-t(2))^2;elsey(i)=c(1)+c(2)*x(i)+c(3)*x(i)^2+c(4)*(x(i)-t(1))^2+ ...c(5)*(x(i)-t(2))^2+c(6)*(x(i)-t(3))^2;endend-MAIN DI TRIANGOLARESUPclear all% U * x = b% [4x4] [4x1] [4x1]U = [132 -234 23 -960 97 -4 80 0 24 160 0 0 -11]b = [12; -588; 94; 0][x,d] = triangolaresup(U,b)U*x-FUNCTION DI TRIANGOLARESUPfunction [x,d] = triangolaresup(U,b)n = length(b);d = 1;for i = 1:nd = d * U(i,i);end è invertibile.')assert(d~=0,’La matrice U nonx = zeros(n,1);for i = n:-1:1S = 0;for j = (i+1):nS = S + U(i,j)*x(j);endx(i) = (b(i)-S)/U(i,i);endend-MAIN DI LAGRANGEclear allx = [10 50 70 230 460 503];y = [1 12
24 -36 59 -73];
j = 3
v = 80
lv = lagrange(x,j,v)
function lv = lagrange(x,j,v)
n = length(x);
assert((j>=1)&&(j<=n),'j deve essere compreso tra 1 e n');
P = 1;
for i = 1:n
if i ~= j
P = P * (v-x(i)) / (x(j)-x(i));
end
end
lv = P;
end
clear all
A = rand(5,12)
[s,m] = summax(A)
function [s,m] = summax(A)
[l,n] = size(A);
s = zeros(1,n);
m = zeros(1,n);
for j = 1:n
for i = 1:l
s(j) = s(j) + A(i,j);
if A(i,j) > m(j)
m(j) = A(i,j);
end
end
end
end
clear all
x = [1 2 3];
y = [4 5 6];
[ea,er] = errore(x,y,1)
[ea,er] = errore(x,y,2)
[ea,er] = errore(x,y,3)
[ea,er] = errore(x,y,4)
function [ea,er] = errore(x,y,p)
nx = length(x);
ny = length(y);
assert(nx==ny,'La lunghezza dei vettori x e y deve essere la stessa.')
n = nx;
e = x-y;
Se = 0;
Sx = 0;
for i = 1:n
Se = Se + abs(e(i))^p;
Sx = Sx + abs(x(i))^p;
end
ea = Se^(1/p);
npx = Sx^(1/p);
er = ea/npx;
end
function [xstar,x] = bisezione(f,a,b,tol)
fa = f(a);
fb = f(b);
assert(fa*fb<0,'La funzione deve avere segno opposto agli estremi dell'intervallo.');
x = [];
while abs(b-a)>tol
xstar = (a+b)/2;
fxstar = f(xstar);
x = [x xstar];
if fa*fxstar<0
b = xstar;
fb = fxstar;
else
a = xstar;
fa = fxstar;
end
end
end
```html
bisezione(f,a,b)assert(f(a)*f(b)<0,'Dati non consistenti.')tol = 1e-8; %1*10^-8%i = 0;while truei = i+1;x(i) = (a(i)+b(i))/2;if f(x(i))*f(a(i)) < 0a(i+1) = a(i);b(i+1) = x(i);elsea(i+1) = x(i);b(i+1) = b(i);endif abs(f(x(i))) < tol % f(x(i)) == 0xstar = x(i);returnendendend
-Algoritmo di Newton
function [xstar,x ] = algnewton(f,df,x0)k=0;x=x0;tol=1e-8;while truek=k+1;x(k+1)=x(k)-f(x(k))/df(x(k));if abs(f(x(k+1)))<tolxstar=x(k+1);returnendendend
-MAIN DI BISEZIONE
clear allclcf1 = @(x) exp(x)-2-x;f2 =
```