Contents
Ejercicio 1
%Imprimir una tabla formateada (entero, real 4d, real 6d) del logaritmo natural y logaritmo % decimal de los siguientes números: 10, 20, 40, 60, 80, 100. % Nota: Usar el comando fprintf y vectores x=[10;20;40;60;80;100]; y=[x,log(x),log10(x)]; fprintf('\n Numero \t ln(Numero) \t log(Numero) \n') fprintf('\t%4i\t\t%8.4f\t\t%8.6f\n',y')
Numero ln(Numero) log(Numero) 10 2.3026 1.000000 20 2.9957 1.301030 40 3.6889 1.602060 60 4.0943 1.778151 80 4.3820 1.903090 100 4.6052 2.000000
Ejercicio 2
%Programa que invoca una función y devuelve el imc de una persona. % function [ v m ] = imcdef(p,e) % % v = p / (e^2); % % if ( v<16 ) % m='Infrapeso: Delgadez Severa'; % elseif ( v<17 ) % m='Infrapeso: Delgadez Moderada'; % elseif ( v<18.5 ) % m='Infrapeso: Delgadez Aceptable'; % elseif ( v<25 ) % m='Peso normal'; % elseif ( v<30) % m='Sobrepeso'; % elseif ( v<35) % m='Obeso: Tipo I'; % elseif ( v<40 ) % m='Obeso: Tipo II'; % else % m='Obeso: Tipo III'; % end % % end c=1; while c==1 p= str2double(inputdlg('Ingrese el peso en kg: ')); e= str2double(inputdlg('Ingrese estatura en m: ')); [v m]=imcdef(p,e); fprintf('%.3f Su medico dice: %s\n',v,m) c=str2double(inputdlg('¿Desea continuar? Sí(1)/No(0). ')); end
22.498 Su medico dice: Peso normal
Ejercicio 3
%Imprimimos una tabla de números en base decimal y otra tabla equivalente, %pero en otra base: % function cambio_base(n,b) % basecad = '0123456789abcdef'; % if (n>=b) % cambio_base(floor(n/b),b); % end % fprintf('%c',basecad(mod(n,b)+1)) % % end n=2:128; b=16; for i=1:128 fprintf('%5d \t ',i) cambio_base(i,b) fprintf('\n') end
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 a
11 b
12 c
13 d
14 e
15 f
16 10
17 11
18 12
19 13
20 14
21 15
22 16
23 17
24 18
25 19
26 1a
27 1b
28 1c
29 1d
30 1e
31 1f
32 20
33 21
34 22
35 23
36 24
37 25
38 26
39 27
40 28
41 29
42 2a
43 2b
44 2c
45 2d
46 2e
47 2f
48 30
49 31
50 32
51 33
52 34
53 35
54 36
55 37
56 38
57 39
58 3a
59 3b
60 3c
61 3d
62 3e
63 3f
64 40
65 41
66 42
67 43
68 44
69 45
70 46
71 47
72 48
73 49
74 4a
75 4b
76 4c
77 4d
78 4e
79 4f
80 50
81 51
82 52
83 53
84 54
85 55
86 56
87 57
88 58
89 59
90 5a
91 5b
92 5c
93 5d
94 5e
95 5f
96 60
97 61
98 62
99 63
100 64
101 65
102 66
103 67
104 68
105 69
106 6a
107 6b
108 6c
109 6d
110 6e
111 6f
112 70
113 71
114 72
115 73
116 74
117 75
118 76
119 77
120 78
121 79
122 7a
123 7b
124 7c
125 7d
126 7e
127 7f
128 80
Ejercicio 4
%Desarrollar una función Newton para aproximar una raíz real de una función mediante %el método de Newton % function y=funcion() % syms x % f=x^3-sin(x); % df=diff(f); % y=[f df]; % end % function newton(f,df,x0,tol) % syms x % i=1; % fx(i)=x0; % f1=subs(f,x,fx(i)); % d=subs(df,x,fx(i)); % % e(1)=100; % while abs(e(i))>=tol % fx(i+1)=fx(i)-f1/d; % f1=subs(f,x,fx(i+1)); % d=subs(df,x,fx(i+1)); % e(i+1)=abs(fx(i+1)-fx(i)); % i=i+1; % end % fprintf('\n i \t fx(i) \t Error aproximado (i) \n'); % for j=1:i % fprintf('%2i \t %11.5f \t %7.3f \n',j,fx(j),e(j)); % end % end fprintf('\nEjercicio 4') y=funcion(); f=y(1); df=y(2); tol=inputdlg('Introduzca la tolerancia: '); tol=str2double(tol); newton(f,df,-0.75,tol) newton(f,df,-0.5,tol) newton(f,df,0,tol) newton(f,df,0.5,tol) newton(f,df,1.4,tol)
Ejercicio 4 i fx(i) Error aproximado (i) 1 -0.75000 100.000 2 -1.02177 0.272 3 -0.93990 0.082 4 -0.92882 0.011 5 -0.92863 0.000 i fx(i) Error aproximado (i) 1 -0.50000 100.000 2 2.27801 2.778 3 1.59597 0.682 4 1.19612 0.400 5 0.99728 0.199 6 0.93507 0.062 7 0.92869 0.006 i fx(i) Error aproximado (i) 1 0.00000 100.000 2 0.00000 0.000 i fx(i) Error aproximado (i) 1 0.50000 100.000 2 -2.27801 2.778 3 -1.59597 0.682 4 -1.19612 0.400 5 -0.99728 0.199 6 -0.93507 0.062 7 -0.92869 0.006 i fx(i) Error aproximado (i) 1 1.40000 100.000 2 1.09202 0.308 3 0.95898 0.133 4 0.93000 0.029 5 0.92863 0.001
Ejercicio 5
%Resolver el sistema de ecuaciones expresado matricialmente de la hoja
A=[100 zeros(1,3) -1 1 0;0 200 zeros(1,3) -1 1;0 0 50 0 -1 0 0;zeros(1,3) 100 0 -1 0;0 300 zeros(1,4) -1; 1 0 1 zeros(1,4);1 -1 0 -1 zeros(1,3)];
b=[0 0 -50 -50 -50 25 0]';
x=A\b
x =
1.0e+03 *
0.0054
0.0009
0.0196
0.0045
1.0321
0.4964
0.3179
Ejercicio 6
%Para la matriz de coeficientes anterior hallar el número de condición, las normas 1,2, Inf y frobenius, la factorización LU A=[100 zeros(1,3) -1 1 0;0 200 zeros(1,3) -1 1;0 0 50 0 -1 0 0;zeros(1,3) 100 0 -1 0;0 300 zeros(1,4) -1; 1 0 1 zeros(1,4);1 -1 0 -1 zeros(1,3)]; b=[0 0 -50 -50 -50 25 0]'; n=cond(A) n1=norm(A,1) n2=norm(A,2) ninf=norm(A,Inf) nfrob=sqrt(trace(A'*A)) [L U]=lu(A) C=L*U %Resolvemos el sistema: X=inv(U)*inv(L)*b
n =
2.6488e+04
n1 =
501
n2 =
360.5570
ninf =
301
nfrob =
390.5278
L =
1.0000 0 0 0 0 0 0
0 0.6667 0 0 0 1.0000 0
0 0 1.0000 0 0 0 0
0 0 0 1.0000 0 0 0
0 1.0000 0 0 0 0 0
0.0100 0 0.0200 0 1.0000 0 0
0.0100 -0.0033 0 -0.0100 0.3333 0.0167 1.0000
U =
100.0000 0 0 0 -1.0000 1.0000 0
0 300.0000 0 0 0 0 -1.0000
0 0 50.0000 0 -1.0000 0 0
0 0 0 100.0000 0 -1.0000 0
0 0 0 0 0.0300 -0.0100 0
0 0 0 0 0 -1.0000 1.6667
0 0 0 0 0 0 -0.0311
C =
100.0000 0 0 0 -1.0000 1.0000 0
0 200.0000 0 0 0 -1.0000 1.0000
0 0 50.0000 0 -1.0000 0 0
0 0 0 100.0000 0 -1.0000 0
0 300.0000 0 0 0 0 -1.0000
1.0000 0 1.0000 0 0 0 0
1.0000 -1.0000 0 -1.0000 0 0 0
X =
1.0e+03 *
0.0054
0.0009
0.0196
0.0045
1.0321
0.4964
0.3179
Ejercicio 7
Hallamos los autovalores y autovectores de la matriz A:
A=[0 1 -1;-6 -11 6;-6 -11 5]; [X,D]=eig(A); fprintf('\n Autovectores (Columnas de la matriz)\n') X(:,1) fprintf('\n Autovalores (Diagonal)\n')
Autovectores (Columnas de la matriz)
ans =
0.7071
0.0000
0.7071
Autovalores (Diagonal)
Ejercicio 8
Para el circuito de la hoja, determinamos los voltajes de los nodos V1 y V2 y la potencia entregada por cada fuente
Y=[1.5-2j -.35+1.2j;-.35+1.2j 0.9-1.6j]; I=[30+40j;20+15j] V=Y\I S=V.*conj(I)
I = 30.0000 +40.0000i 20.0000 +15.0000i V = 3.5902 +35.0928i 6.0155 +36.2212i S = 1.0e+03 * 1.5114 + 0.9092i 0.6636 + 0.6342i
Ejercicio 9
%Desarrollar una función mediante una interpolación de Lagrange y otra %serie de métodos f= @(x) 1./(1+25*x.^2); x=linspace(-1,1,500); y_true=f(x); figure; plot(x,y_true,'r','linewidth',1); hold on;
N=10; xint=linspace(-1,1,N); yint=zeros(1,N); y=f(xint); n1=length(x); for i=1:n1 yint(i)=LagrangeINT(xint,y,x(i)); end plot(x,yint,'k') hold on;
N=10; xdata=linspace(-1,1,N)'; ydata=f(xdata); p=polyfit(xdata,ydata,N-1); y_fit=polyval(p,x); poly_10=plot(x,y_fit,'b','linewidth',1); hold on; plot(xdata,ydata,'k','markersize',12); hold on; N=20; xdata=linspace(-1,1,N)'; ydata=f(xdata); p=polyfit(xdata,ydata,N-1); y_fit=polyval(p,x); poly_20=plot(x,y_fit,'g','linewidth',1); hold on; axis([-1 1 -5 5]); lh=legend([poly_10,poly_20],{'N = 10','N = 20'}); set(lh,'fontsize',10); hold off;
Ejercicio 10
%A partir de los datos del viento de un fichero excel (winddata), %obetener una serie de gráficos date=xlsread('winddata','Hoja1','A2:A78877'); time=xlsread('winddata','Hoja1','B2:B78877'); dir=xlsread('winddata','Hoja1','C2:C78877'); speed=xlsread('winddata','Hoja1','D2:D78877'); [xds,yds]=datastats(time,dir) [xds,yds]=datastats(time,speed) % hist(time,25) hold on; xlabel('Rango (Tiempo)','FontSize',11); ylabel('Número de vientos','FontSize',11); hold off; % t=pi/180; hist(dir*t,36) hold on; xlabel('Rango (Direccion)','FontSize',11); ylabel('Número de vientos','FontSize',11); hold off;
xds =
num: 78876
max: 24
min: 1
mean: 12.5009
median: 13
range: 23
std: 6.9222
yds =
num: 78876
max: 990
min: 0
mean: 195.4474
median: 200
range: 990
std: 96.1384
xds =
num: 78876
max: 24
min: 1
mean: 12.5009
median: 13
range: 23
std: 6.9222
yds =
num: 78876
max: 22.8000
min: 0
mean: 6.2293
median: 5.7000
range: 22.8000
std: 3.0272
Ejercicio 11
Grafica de la curva de la hoja
[x,y]=meshgrid(-4:0.3:4); z=sin(x).*cos(y).*exp(-(x.^2+y.^2).^0.5); mesh(x,y,z)
Ejercicio 12
Resolvemos la ec. diferencial de la hoja function y = HalfSine(t, y, z) h = sin(pi*t/5).*(t<=5); y = [y(2); -2*z*y(2)-y(1)+h];
ej_ode [t, yy] = ode45(@HalfSine, [0 35], [1 0], [ ], 0.15); plot(t, yy(:,1))
Ejercicio 13
Tomando como base las condiciones del ejemplo de la transformada de Fourier de los apuntes (pág. 124), graficamos para las siguientes señales la gráfica de la señal en el tiempo y la gráfica de la amplitud espectral en función de la frecuencia (Mirar hoja)
k = 5; m = 10; fo = 10;Bo = 2.5; N = 2^m; T = 2^k/fo; ts = (0:N-1)*T/N; df = (0:N/2-1)/T; g1 = Bo*sin(2*pi*fo*ts)+Bo/2*sin(2*pi*fo*2*ts); An1 = abs(fft(g1, N))/N; plot(df, 2*An1(1:N/2)) g2 = exp(-2*ts).*sin(2*pi*fo*ts); An2 = abs(fft(g2, N))/N; plot(df, 2*An2(1:N/2)) g3 = sin(2*pi*fo*ts+5*sin(2*pi*(fo/10)*ts)); An3 = abs(fft(g3, N))/N; plot(df, 2*An3(1:N/2)) g4 = sin(2*pi*fo*ts-5*exp(-2*ts)); An4 = abs(fft(g4, N))/N; plot(df, 2*An4(1:N/2))
Ejercicio 14
Grafica de la función de la hoja curva en coordenadas polares
theta = linspace(-pi, pi, 300); p = abs(besselj(2, -4*cos(theta))); polar(theta, p/max(p))
Ejercicio 15
%Ejercicio para obtener una serie de parámetros definidos mediante %ecuaciones no lineales, de una catenaria syms T f=inline('15-((T/10)*cosh((10/T)*50)+5-(T/10))'); solve(f) %Comprobación f(ans) % g=inline('(2*1266.32/10)*sinh(20*x/1266.32)'); g(150) % f=inline('15-((T./10).*cosh((10./T)*50)+5-(T./10))'); T=linspace(-50,100,100); y=f(T); plot(T,y,'k','markersize',12)
ans = 1266.324360399888280635385997007 ans = 0.0 ans = 1.3415e+03
%Trabajo realizado por: Alfonso de Lama Rojo % 3/1/2018 % Confirmo que este trabajo es de elaboración propia.