Esplora E-book
Categorie
Esplora Audiolibri
Categorie
Esplora Riviste
Categorie
Esplora Documenti
Categorie
per x 1
y 2 cos( x)
per 1 x 5
y 10( x 5) 1
per x 5
0,625
x
1 x
L 100
0, 4
0, 6
1
11
1000
2
7
800
3
8
900
4
10
1200
5
9
700
r
dove la permettivit dellaria (=8,85410-12 F/m). Scrivere un file script che accetta i
valori di input dellutente per d, L e r e poi calcola e visualizza la capacit C. Provare il file
con i seguenti valori: L=1m, r=0,0001m e d=0,004m.
6. Scrivere la funzione che accetta le temperature in gradi Fahrenheit (F) e poi calcola e
visualizza i corrispondenti valori in gradi Celsius (C). La relazione tra gradi Celsius e
Fahrenheit data dalla seguente formula:
C
5
F 32
9
7. Utilizzate un editor di testo per creare il file temperature.dat che contiene i seguenti
valori di temperature. Poi caricate i dati nella variabile temperature di MATLAB.
Calcolate il valore medio di ogni colonna:
78.8
99.5
89.5
55.9
66.8
77.0
45.9
78.0
56.7
S (milimoli di O2
per litro di H2O)
1,95
1,7
1,55
1,4
1,3
1,15
1,05
1,0
0,95
T(oF)
72,5
78,1
86,4
92,3
110,6
111,5
t(s)
6
7
8
9
10
T(oF)
109,3
110,2
110,5
109,9
110,2
p a N V 2 V Nb kNT
nella quale a e b sono dei coefficienti che dipendono dallo specifico tipo di gas, N il
numero di molecole di gas contenute nel volume V e k la cosiddetta costante di
Boltzman. Per lanidride carbonica i coefficienti a e b valgono rispettivamente a=0.401Pam6
e b=42.710-6m3. Si trovi il volume occupato da 1000 molecole di anidride carbonica poste
ad una temperatura T=300K e ad una pressione p=3.5107Pa utilizzando il metodo di
bisezione con una accuratezza pari a 10-12 (la costante di Boltzmann pari a
k=1.380650310-23 Joule K-1) e utilizzando la funzione fzero di MATLAB con una
accuratezza pari a 10-12. Confrontare i tempi di calcolo per due metodi.
13. Lequazione della tensione v(t) ai capi di un condensatore una funzione del tempo:
t
1
v(t ) i (t )dt Q0
C0
14. Per il progetto di una camera a raggi infrarossi si interessati a calcolare lenergia emessa
nello spettro (infrarosso) compresso tra le lunghezze donda da 3 m a 14 m da un corpo
nero. La soluzione di questo problema si ottiene calcolando il seguente integrale:
E (T ) 2.39 10
11
14104
3104
x e
5
dx
1.432 (Tx )
essendo x la lunghezza donda (in cm) e T la temperatura (in gradi Kelvin) del corpo nero. Si
calcoli la funzione E(T) per T pari a 213K con almeno 10 cifre significative.
Esercizio 1.
i=1;
for x=-2:0.05:6
if x<-1
y(i)=exp(x+1);
elseif x>=-1 && x<5
y(i)=2+cos(pi*x);
else
y(i)=10*(x-5)+1;
end
i=i+1;
end
plot(-2:0.05:6,y);
title('Esercizio 1')
xlabel('tempo [s]')
ylabel('altezza [km]')
Esercizio 2.
sum=0;
k=0;
while sum<2000
k=k+1;
sum=sum+2^k;
end
k
%numero di elementi
2^k %ultimo elemento
sum
Esercizio 3.
clc
clear all
x=[0:0.001:0.6];
L=f_esc3(x);
plot(L,x)
grid on
xlabel('L [mol]')
ylabel('x [mol B/mol]')
[L0,x0]=ginput(1)
F unzione ginput permette di determinare il valore x direttamente dal grafico; in particolare
alla fine di tutte le istruzioni che creano e formattano un diagramma il comando
[x,y]=ginput(n) acquisisce n punti e ne registra le coordinate x e y nei vettori x e y, che
hanno dimensione n. Basta posizionare il puntatore in un punto del diagramma e premere il
pulsante del mouse.
Ovviamente possiamo per trovare il valore di x possiamo risolvere l'equazione usando per esempio
il commando fzero, in tal caso dobbiamo scrivere nostra funzione nella forma di f(x)=0 (quindi
dobbiamo aggiungere -70 a destra dell'espressione).
x0=fzero('f_esc3bis',0.5)
dove f_esc3bis.m:
function y=f_esc3bis(x)
y=100*(x/0.6).^(0.625).*((1-x)/0.4).^(-1.625)-70;
O usando le funzioni anonime:
x0=fzero(@(x) 100*(x/0.6).^(0.625).*((1-x)/0.4).^(-1.625)-70,0.5)
Esercizio 4.
clc
clear all
%forza (N)
F=[11 7 8 10 9];
%costante k (N/m)
k=[1000 800 900 1200 700];
%F=k*x mentre Ep=(k*x*x)/2, quindi:
x=F./k
Ep=(k.*x.*x)./2
Attenzione! Usare gli operatori con .!
Esercizio 5.
clc
clear all
eps=8.854*10^(-12);
d=input('Distanza tra conduttori:');
L=input('Lunghezza dei conduttori:');
r=input('Raggio dei conduttori:');
C=(pi*eps*L)/log((d-r)/r);
disp(C)
Esercizio 6.
clc
clear all
%la funzione pu essere usata per i scalari, per esempio
F1=100;
C1=f_esc6(F1)
%o vettori
F2=(70:0.1:75);
C2=f_esc6(F2)
dove f_esc6.m:
function C=f_esc6(F)
C=5/9*(F-32);
Esercizio 7.
Aprire per esempio notepad e digitare:
78.8
99.5
89.5
55.9
66.8
77.0
clc
clear all
temperature=load('temperature.dat');
T1=mean(temperature(:,1));
T2=mean(temperature(:,2));
T3=mean(temperature(:,3));
45.9
78.0
56.7
Esercizio 8.
clc
clear all
T=[5:5:45];
S=[1.95 1.7 1.55 1.4 1.3 1.15 1.05 1.0 0.95];
plot(T,S,'o')
%dopo usiamo Basic Fitting Tool (nella finestra grafica, Tools ->
Basic Fitting)
%o polyfit
Esercizio 9.
clc
clear all
t=[0:1:10];
T=[72.5 78.1 86.4 92.3 110.6 111.5 109.3 110.2 110.5 109.9 110.2];
ti=[0.6 2.5 4.7 8.9];
%interpolazione lineare
Ti_lin=interp1(t,T,ti,'linear')
%interpolazione spline
Ti_spl=interp1(t,T,ti,'spline')
plot(t,T,'o:')
hold on
plot(ti,Ti_lin,'rs',ti,Ti_spl,'g*')
Esercizio 10.
clc
clear all
[t,T]=ode23('f_esc10',[0:1:200], 70);
plot(t,T)
axis([0 100 0 180])
Si pu usare la funzione [x,y]=ginput(1) per stimare il tempo o meglio determinare l'indice di primo
valore uguale o maggiore di 170 usando la funzione find:
ind=find(T>=170);
t_finale=t(min(ind))
Il sistema ODE definito nel file f_esc10.m:
function Tdot=f_esc10(t,T)
Tdot=0.1*(170-T);
Esercizio 11.
2rh h2
dh
dh Cd A 2 gh Cd rA2 2 gh
Cd A 2 gh
dt
dt 2rh h2 2rh h 2
clc
clear all
global r rA C g
r=3;
rA=0.02;
C=0.5;
g=9.81;
%usando solver di Matlab
[t,h]=ode15s(@f_esc11,[0,26000],5);
plot(t,h)
grid on
Per poter usare i parametri allinterno di funzione le dichiariamo come global (sia nello script che nella
funzione):
function hdot=f_esc11(t,h)
global r rA C g
hdot=(-C*rA*rA*sqrt(2*g*h))/(2*r*h-h*h);
Il tempo di svuotamento circa 25200 s.
Esercizio 12.
p a N V 2 V Nb kNT
2
f (V ) p a N V V Nb kNT
clc
clear all
global p a N b k T
a=0.401;
b=42.7e-6;
N=1000;
T=300;
p=3.5e7;
k=1.3806503e-23;
v=linspace(0,0.5);
y=f_esc12(v);
plot(v,y);
grid on
hold on
%usando fzero
v0=input('Punto iniziale per fzero: ');
options=optimset('TolFun',1e-12);
tic;
v0=fzero('f_esc12',v0,options);
toc
disp(v0)
plot(v0,f_esc12(v0),'r*')
%con metodo di bisezione
A=input('Limite sinistra (punto a) per metodo di bisezione: ');
B=input('Limite destra (punto b) per metodo di bisezione: ');
k=0;
eps=1e-12;
tic;
while b-a>eps
v0=(A+B)/2;
if f_esc12(v0)==0
disp(v0)
break
elseif f_esc12(A)*f_esc12(v0)<0
B=v0;
else
A=v0;
end
k=k+1;
end
toc
Esercizio 13.
clc
clear all
C=1e-5;
v=@(t) (2e-4/C)*(1+sin(5*t));
T=linspace(0,1.2,20);
tic;
for i=1:20
V(i)=quad(v,0,T(i));
end
toc
plot(T,V)
grid on
%o meglio
tic;
V2(1)=quad(v,0,T(1))
for i=2:20
V2(i)=quad(v,T(i-1),T(i))+V2(i-1);
end
toc
Esercizio 14.
clc
clear all
format long
T=213;
E=@(x) (2.39*1e-11)./(x.^5.*(exp(1.432./(T.*x))-1));
quad(E,3e-4,14e-4)