[MatLab] Metodo di Jacobi

November 23, 2009 – 2:34 am

Descrizione
L’algoritmo in questione risolve un sistema a matrice dei coefficienti quadrata non singolare tramite il metodo di Jacobi.

Codice
function [x, delta] = jacobi(n, A, b, toll, kmax, x)
delta=1;
if(det(A)==0)
return
else

z=x;
for k=1:kmax
y=z(1,1);
som=0;
for i=2:n
som=som+A(1,i)*x(1,i);
end
z(1,1)=(b(1,1)-som)/A(1,1)
ermax=abs(y-z(1,1));
for i=2:n
y=z(1,i);
som=0;
for j=1:(i-1)
som=som+A(i,j)*x(1,j);
end
som1=0;
for j=(i+1):n
som1=som1+A(i,j)*x(1,j);
end
z(1,i)=(b(i,1)-som-som1)/A(i,i)
er=abs(y-z(1,i));
if ermax<er
ermax=er;
end
end

x=z;
if ermax<toll*norm(z,inf)
delta=0;
return
end
end
end

[News] Wordpress 2.8.6

November 16, 2009 – 2:52 am

Wordpress è stato aggiornato alla versione 2.8.6!

[MatLab] Metodo di Gauss-Seidel

November 9, 2009 – 1:01 am

Descrizione
L’algoritmo in questione risolve un sistema a matrice dei coefficienti quadrata non singolare tramite il metodo di Gauss-Seidel.

Codice
function [x, delta] = GaussSeidel(n, A, b, toll, kmax, x)
delta=1;
if(det(A)==0)
return
else
for
k=1:kmax
y=x(1,1);
som=0;
for i=2:n
som=som+A(1,i)*x(1,i);
end
x(1,1)=(b(1,1)-som)/A(1,1)
ermax=abs(y-x(1,1));
for i=2:n
y=x(1,i);
som=0;
for j=1:(i-1)
som=som+A(i,j)*x(1,j);
end
som1=0;
for j=(i+1):n
som1=som1+A(i,j)*x(1,j);
end
x(1,i)=(b(i,1)-som-som1)/A(i,i)
er=abs(y-x(1,i));
if ermax<er
ermax=er;
end
end
if
ermax<toll*norm(x,inf)
delta=0;
return
end
end
end

[MatLab] Fattoriale

November 2, 2009 – 1:54 am

Descrizione
Funzione la quale dato un intero strettamente positivo restituisce il suo fattoriale, altrimenti restituisce il valore 1.

Codice
function y = fattoriale(x)
y=1;
if x > 0
y= x*fattoriale(x-1);
end;

[Indovinelli/Logica] Partire in quarta!

October 30, 2009 – 11:32 pm

Traccia
Il professor Archimede deve tenere quattro conferenze a cadenza settimanale. Se la prima si svolgerà il 1° ottobre, in quale giorno si svolgerà la quarta?

Soluzione
Le conferenze sono quattro, ma gli intervalli di tempo che intercorrono tra una e l’altra sono solo tre. Quindi la quarta conferenza si terrà tre settimane dopo la prima, ovvero:

il 22 ottobre

Giulio
da un libro di Ennio Peres

[Indovinelli/Matematica] Dosi da Cavallo!

October 30, 2009 – 11:20 pm

Traccia
Se in un minuto e mezzo, un cavallo e mezzo mangiano una fascina e mezza di biada, quanti cavalli occorrono per mangiare 60 fascine di biada in 30 minuti?
NB. l’espressione “un cavallo e mezzo” va intesa in termini matematici.

Soluzione
Il tempo impiegato da un singolo cavallo per mangiare una fascina di biada non cambia al variare della quantità di cavalli. Di conseguenza, se 1,5 cavalli mangiano 1,5 fascine di biada in 1,5 minuti, vuol dire che nello stesso periodo di tempo, N cavalli mangiano N fascine di biada.  In particolare un solo cavallo mangia una sola fascina di biada in 1,5 minuti. Quindi il numero di fascine di biada che un cavallo riesce a mangiare da solo in 30 minuti è  uguale a

30/1,5=20

ciò significa che , per mangiarne 60 (il triplo) nello stesso tempo, occorrono 3 cavalli.

Giulio
da un libro di Ennio Peres

[News] Wordpress 2.8.5

October 26, 2009 – 1:03 am

Wordpress è stato aggiornato alla versione 2.8.5!

[MatLab] Rapporto incrementale

October 19, 2009 – 12:48 am

Descrizione
Funzione per il calcolo del rapporto incrementale di una data funzione relativo ad un dato incremento in un determinato punto.

Codice
function [fprimo] = derivata(f,x0,toll)
x=x0+toll;
a=feval(inline(f),x);
b=feval(inline(f),x0);
fprimo=(a-b)/toll;

[MatLab] Algoritmo di bisezione

October 12, 2009 – 12:01 am

Descrizione
Function che utilizza l’algoritmo di bisezione per calcolare un’approssimazione (in base ad una data tolleranza relativa) di uno “zero” di una funzione in un dato intervallo.

Codice
function [x, delta]=bisezione(a0,b0,f,toll)
x=0; delta = 0;
fa=feval(inline(f),a0);
fb=feval(inline(f),b0);
if fa*fb>0
disp(‘La funzione deve soddisfare f(a)f(b)<0!’)
delta=1;
end
m=0;
while (abs(b0-a0)>2*toll*abs(m) & delta==0), % toll è la tolleranza relativa
m=(a0+b0)/2;
fc=feval(inline(f),m);
if fb*fc<0
a0=m;
elseif fc==0
break
else

b0=m;
end
end

x=m;

[Esercizi/Fisica] (4) Esercizio di fisica

October 5, 2009 – 12:39 am

Esercizio
Un giocatore di baseball blocca con il guanto una palla lanciata dal battitore, di massa m=200 g, che si muove lungo una traiettoria orizzontale (asse x) con velocità v=10 m/s. La palla si blocca nel tempo di 0.02 s. Calcolare: a) il valore della forza media sulla mano del giocatore. Ipotizzando che durante tale processo il giocatore eserciti una forza sulla palla funzione lineare del tempo, calcolare: b) lo spostamento della mano del giocatore per effetto del rinculo, c) il valore finale della forza esercitata dalla palla sulla mano del giocatore.

Soluzione
a)
100 N; b) 13.3 cm; c) 200 N.