Sei sulla pagina 1di 9

%--------------------------------------%

ESERCIZIO 1
%--------------------------------------a=1.1111;
b=2.34;
c=0.7211;
d=0.818;
e=3;
f=19.123;
g=20;
x
s
z
r
y
t

=
=
=
=
=
=

1 + (a/b^2)*c^3 + c / f^2;
(b-a) / (d-c) + (a+d) / b;
a*b - (1- 1/(e^5+a^3-c) )^(-1);
a / (1/a + 1/b + 1/c + 1/d);
a*b * 1/c * f^2 / 2;
7* g^(1/3) + 4*g^0.58 + g^2.1 - (g+e)^2;

r
r =
0.282246954106200
s
s =
13.506548252229367
t
t =
52.447095722740187
x
x =
1.078058448214522
y
y =
6.592582356695647e+02
z
z =
1.595852848038945
% questo il formato long, quello di default il format short:
format
x
x =

1.0781
y
y =
659.2582
z
z =
1.5959
t
t =
52.4471
r
r =
0.2822
s
s =
13.5065
format long e
r
r =
2.822469541062002e-01
s
s =
1.350654825222937e+01
t
t =
5.244709572274019e+01
x
x =
1.078058448214522e+00
y
y =

6.592582356695647e+02
z
z =
1.595852848038945e+00
%--------------------------------------%
ESERCIZIO 2
%--------------------------------------%2.a)La differenza tra i comandi clear e clc che mentre il primo cancella tutte
le variabili dal workspace il secondo pulisce semplicemente la command window, l
asciando inalterati gli assegnamenti fino a quel momento fatti.
%2.b)L'ordine di precedenza degli operatori in MatLab il seguente:
%
(1) "( )" hanno la precedenza, valutate dalla coppia pi interna di par
entesi dell'espressione;
%
(2) "^"
l'elevamento a pontenza, che viene valutato da sinistra a d
estra;
%
(3) "*","/" moltiplicazione e divisione sono sullo stesso piano, valuta
te sempre da sinistra a destra;
%
(4) "+","-" addizione e sottrazione sono anch'esse sullo stesso piano,
valutate da sinistra a destra.
%--------------------------------------%
ESERCIZIO 3
%--------------------------------------clear
a=2+y
{Undefined function or variable 'y'.
}
y=1;
a=2+y;
a
a =
3
%Qui l'errore stato commesso poich non si utilizzata una variabile nell'assegnazi
one a secondo membo che non era ancora stata inizializzata.
b==2*sin[3]
b==2*sin[3]
|
{Error: Unbalanced or unexpected parenthesis or bracket.
}
%tentiamo modificando le parentesi:
b==2*sin(3)
{Undefined function or variable 'b'.
}
b=3
b =
3
b==2*sin(3)

ans =
0
%In questo caso l'espressione non era corretta poich c'era uno scorretto uso dell
e parentesi e una mancata inizializzazione della variabile b.
%Infatti l'operatore "==" valuta se l'espressione a destra uguale a quella a sin
istra, dall'ordine in cui ci ha segnalato gli errori possiamo anche dedurre che
prima valuta l'espressione a destra e poi quella a sinistra.
%(e restituisce 0 se falso o 1 se vero).
c=e^0.5
{Undefined function or variable 'e'.
}
c=exp(0.5)
c =
1.648721270700128e+00
format
c
c =
1.6487
%La lettera e di per se non contiene il numero di Nepero, a differenza di pi che
contiene un'approssimazione di pi greco.
pi
ans =
3.1416
d=log(4-8/4*2)
d =
-Inf
d=log(4-8/(4*2))
d =
1.0986
%In questa espressione il problema era annidato nella precedenza degli operatori
aritmetici.
y+1=2*y
y+1=2*y
|
{Error: The expression to the left of the equals sign is
not a valid target for an assignment.
}
y=2
y =
2

y+1=2*y
y+1=2*y
|
{Error: The expression to the left of the equals sign is
not a valid target for an assignment.
}
%Essendo "=" l'operatore di assegnamento, e non l'uguaglianza matematica.
%Per risolvere un'equazione di primo grado, uno dei possibili modi di portarla i
n forma polinomiale e poi calcolarne le radici.
y=2x-1sin(4]
y=2x-1sin(4]
|
{Error: Unexpected MATLAB expression.
}
y=2*x-1*sin(4)
{Undefined function or variable 'x'.
}
x=2
x =
2
y=2*x-1*sin(4)
y =
4.7568
%Errori sia di mancata inizializzazione della variabile x, sia nell'uso delle pa
rentesi, sia nel mancato uso di "*".
%--------------------------------------%
ESERCIZIO 4
%--------------------------------------%4.a)
>> raggio1=0.5;
>> raggio1=5;
>> volume1=(4/3)*pi*raggio1^3;
>> volume2=volume1+(3/10)*volume1;
>> raggio2=((3/(4*pi))*volume2)^(1/3)
raggio2 =
5.4570
>> %4.b)
>> p1=[1,1];
>> p2=[1/2,1,1];
>> %p1 e p2 sono due polinomi che esprimono lo sviluppo di Taylor troncato di ex
p(x).
>> x=[0.1,0.01,0.001];
>> p1x=polyval(p1,x);
>> p2x=polyval(p2,x);
>> eass_1=abs(exp(x)-p1x)
eass_1 =
0.0052

0.0001

0.0000

>> eass_2=abs(exp(x)-p2x)
eass_2 =
1.0e-03 *
0.1709

0.0002

0.0000

>> erel_1=eass_1./exp(x)
erel_1 =
0.0047

0.0000

0.0000

>> erel_2=eass_2./exp(x)
erel_2 =
1.0e-03 *
0.1547
0.0002
0.0000
%--------------------------------------%
ESERCIZIO 5
%-------------------------------------->> f1=[1,-7,21,-35,35,-21,7,-1];
>> x=linspace(1-2*10^-8,1-2*10^-8);
>> f2x=(x-1).^7;
>> f1x=polyval(f1,x);
>> diff=abs(f1x-f2x);
>> max(diff)
ans =
4.4409e-16
>> min(diff)
ans =
4.4409e-16
%--------------------------------------%
ESERCIZIO 6
%--------------------------------------s(2)=2;
for i=2:10
s(i+1)=2^(i-0.5)*sqrt(1-sqrt(1-4^(1-i)*s(i)^2));
end
s(2:4)
ans =
2.0000

2.8284

3.0615

%--------------------------------------%
ESERCIZIO 7
%---------------------------------------

%7.a)
x=[2,3.2,0,-1.1];
y=[0,0.5,-2];
z=[-1,-0.8,3,2.4];
x+z
ans =
1.0000

2.4000

3.0000

1.3000

4.0000

-3.0000

-3.5000

x-z
ans =
3.0000

y+z
{Error using <a href="matlab:helpUtils.errorDocCallback('plus')" style="font-weig
ht:bold"> + </a>
Matrix dimensions must agree.
}
%Non si possono sommare vettori di differente dimensione.
%7.b)
xx = [x(4) x(2) x(3) x(1)];
yy = [y -y(3:-1:1)];
base = [z(1) z(2) z(3) z(4)];
esp = [2 4 8 16];
zz = base.^esp;
%7.c)
p1 = [2 -1 3 1 1 -2];
p2 = [1 0 1 -2];
%poich non si corrispondono i gradi modifichiamo p2
a=max(size(p1)-size(p2));
p2_mod=[zeros(1,a) p2]
p2_mod =
0

-2

-1

p1-p2_mod
ans =
2
pi+p2_mod
ans =
Columns 1 through 5
3.1416
Column 6

3.1416

4.1416

3.1416

4.1416

1.1416
p1+p2_mod
ans =
2

-1

-4

%poich il polinomio somma il polinomio che ha come coefficienti la somma dei coef
ficienti, analogamente per la differenza.
%per la moltiplicazione e la divisione dovremo utilizzare funzioni specifiche di
MatLab:
prod=conv(p1,p2)
prod =
2

-1

-4

-7

-1

-4

divis=deconv(p1,p2)
divis =
2

-1

%7.d)
xx=linspace(1,5);
y1=polyval(p1,xx);
y2=polyval(p2,xx);
y3=polyval(p1+p2_mod,xx);
y4=polyval(p1-p2_mod,xx);
y5=polyval(prod,xx);
y6=polyval(divis,xx);
plot(xx,y1,'b',xx,y2,'k',xx,y3,'+',xx,y4,'-',xx,y5,'*',xx,y6,'.')
plot(xx,y1,'b',xx,y2,'k')
legend('p1','p2')
plot(xx,y3,'+',xx,y4,'-')
legend('p1+p2','p1-p2')
plot(xx,y5,'*',xx,y6,'.')
legend('p1*p2 (i.e. conv(p1,p2))','p1/p2 (i.e. deconv(p1,p2))')
%7.e)
%--------------------------------------%
ESERCIZIO 8
%--------------------------------------%8.a)
xx= [1.5, 4, 5, 5.5, 8];
yy= sin(xx)+log(xx)-1;
yy
yy =
0.4030

-0.3705

-0.3495

-0.0008

2.0688

%8.b)
p_interp = polyfit(xx,yy,4);
%vogliamo che il polinomio interpolatore sia di grado 4.
x=linspace(1,9,6);
y=cos(x)+1./x;
p2_interp=polyfit(x,y,5);

x=linspace(1,9,6);
y=cos(x)+1./x;
p1=polyfit(x,y,5);
%calcolo dei nodi di Chebyschev nell'intervallo assegnato.
for i=1:7
cheby(i)= 5 + 4 * cos( pi * (2*i-1)/14 );
end
cheby =
Columns 1 through 5
8.8997

8.1273

6.7355

5.0000

3.2645

Columns 6 through 7
1.8727

1.1003

y2=-sin(cheby)-1./ (cheby.^2);
p2_interp = polyfit(cheby,y2, 6);
gamma=0.577215665;
for i=1:100;
leb_eq(i)=2^(i+1)/(exp(1)*i*log(i+gamma));
leb_ch_ga(i)=(2/pi)*(log(i+1)+gamma+log(8/pi))+pi/(72*(i+1)^2);
end
%qui abbiamo riempito il vettore con un ciclo, in realt avremmo potuto agire in m
odo un po' pi agile cos:
% leb_eq(x)=2.^(x+1)./(exp(1).*x.*log(x+gamma));
% etc...
x=linspace(1,100,100);
plot(x,leb_eq,'k',x,leb_ch_ga,'b')
legend('costante di Lebesgue per i nodi equispaziati','costante di Lebesgue per
nodi di Chebyschev-Gauss')
plot(x,leb_eq,'-',x,leb_ch_ga,'b')
plot(x,leb_eq,'.',x,leb_ch_ga,'b')
legend('costante di Lebesgue per i nodi equispaziati','costante di Lebesgue per
nodi di Chebyschev-Gauss')

Potrebbero piacerti anche