UNAH
Funciones Importantes de MATLAB
Busca el cero de una función en la cercanía de un punto. p = fzero(FUN, p0)
Un cable en forma catenaria es aquel que cuelga entre dos puntos (Ver Fig. 1). Como se ilustra en la figura, el cable, no está sujeto a más carga que su propio peso. En la figura 2 se ilustra un diagrama de cuerpo libre de una sección AB, donde y son las fuerzas de tensión en el extremo. y TB B TA A w Fig. 1
yo
W = wx x
Fig. 2
El modelo modelo (una ecuación diferencial) produce la solución función de la distancia .
(altura del cable) cable) en
Determine el valor del parámetro dados los valores de modo que el cable tenga una altura de en .
y
de
>> w=12; y0=6; y=15; x=50; %Asignación a variables de los valores conocidos >> f=@(Ta) (Ta/w).*cosh(w*x./Ta)+y0-Ta/w-y; %Definición de la función >> Ta=1000:0.1:2000; plot(Ta,f(Ta)); grid on %Obteniendo una estimación de la solución >> Ta=fzero(f, 1700) %Obteniendo el cero de la función Ta = 1684.36509681737
1
Laboratorio de Análisis Numérico (MM412-IC303)
Erick Pineda
UNAH
Funciones Importantes de MATLAB
Busca la solución a un sistema no lineal de ecuaciones p = fsolve(FUN, p0)
Resuelva el siguiente sistema
>> %Definiendo la función >> f=@(x) [x(1)^3+x(1)^2*x(2)-x(1)*x(3)+6; exp(x(1))+exp(x(2))-x(3); x(2)^2-2*x(1)*x(3)-4]; >> %Definiendo el punto inicial >> x0=[-1;-2;1]; >> p=fsolve(f,x0) Optimization terminated: first-order optimality is less than options.TolFun. p= -1.4560 -1.6642 0.4225
Retorna el mínimo ym de la función en el intervalo [x1, x2], así como la abscisa xm donde se da dicho valor. [xm, ym]= fminbmd(función, x1, x2)
Calcule las dimensiones (radio y altura ) de un cilindro con el mayor volumen posible que se puede construir con una esfera de radio cm.
Para obtener el máximo usamos fminbnd pero con la función es
. Esto es:
>> v=@(h) -2*pi*h*sqrt(15^2-(h/2)^2); %Def. la función >> [h,vmax]=fminbnd(v,0,30); r=sqrt(15^2-(h/2)^2); >> [r, h, -vmax] ans =
10.607
2
21.213
1413.7
Laboratorio de Análisis Numérico (MM412-IC303)
Erick Pineda
UNAH
Funciones Importantes de MATLAB
Retorna los coeficientes del polinomio de Lagrange para los datos (x, y) c = lagrange(x, y)
Se sospecha que las elevadas concentraciones de tanina en las hojas de los robles maduros inhiben el crecimiento de las larvas de la polilla invernal que tanto dañan a los árboles en algunos años. La tabla anexa contiene el peso promedio de dos muestras de la larva, tomadas en los primeros 28 días después del nacimiento. La primera muestra se cri ó en hojas de robles jóvenes, mientras que la segunda los hizo en hojas maduras del mismo árbol. a) Use interpolación de Lagrange para aproximar la curva del peso promedio de las muestras (grafique). b) Para calcular un peso promedio máximo aproximado de cada muestra, determine el máximo de l polinomio interpolante.
Día Peso promedio de la muestra 1 (mg) Peso promedio de la muestra 2 (mg)
0 6.67 6.67
6 17.33 16.11
10 42.67 18.89
13 37.33 15.00
17 30.10 10.56
20 29.31 9.44
28 28.74 8.89
>> d=[0,6,10,13,17,20, 28]; %días >> m1=[6.67, 17.33, 42.67, 37.33, 30.10, 29.31, 28.74]; %muestra1 >> m2=[6.67, 16.11, 18.89, 15, 10.56, 9.44, 8.89]; %muestra2 >> c1=lagrange(d,m1), c2=lagrange(d,m2), %coeficientes lagrange c1 = 4.0946e-005 -0.0036717
0.1269
-2.0946
16.143
-42.643
6.67
c2 = 8.3616e-006 -0.00075255
3
0.025841
-0.4138
2.9128
Laboratorio de Análisis Numérico (MM412-IC303)
-5.6782
6.67
Erick Pineda
UNAH
Funciones Importantes de MATLAB >> dd=0:0.1:28; mm1=polyval(c1,dd); mm2=polyval(c2,dd); >> subplot(2,1,1);plot(d,m1,'o',dd,mm1,':'),grid >> xlabel('Días'); ylabel('Peso Promedio(mg)') >> legend('Datos','Polinomio Lagrange'), title('Muestra 1') >> subplot(2,1,2);plot(d,m2,'o',dd,mm2,':r'),grid >> legend('Datos','Polinomio Lagrange'), title('Muestra 2') >> xlabel('Días'); ylabel('Peso Promedio(mg)') >> %definiendo las funciones polinómicas >> f1=@(x) -1*(c1(1)*x^6+c1(2)*x^5+c1(3)*x^4+c1(4)*x^3+c1(5)*x^2+c1(6)*x+c1(7)); >> f2=@(x) -1*(c2(1)*x^6+c2(2)*x^5+c2(3)*x^4+c2(4)*x^3+c2(5)*x^2+c2(6)*x+c2(7)); >> [x1,max1]=fminbnd(f1,0,28);[x1,max2]=fminbnd(f2,0,28); >> [-max1, -max2] %Pesos promedios máximos ans =
42.708
19.416
Interpolación para funciones en una variable, (x, y), en el punto(s) xi. Por defecto la interpolación es lineal interp1(x, y, xi)
4
Laboratorio de Análisis Numérico (MM412-IC303)
Erick Pineda
UNAH
Funciones Importantes de MATLAB
Se realiza un experimento para definir la relación entre la carga aplicada y el tiempo para fractura para un tipo de acero (Tiempo en función de la carga). Los datos resulantes son: Carga[Kg/mm2] Tiempo de fractura[h]
5 40
15 25
25 18
35 12
Usando interpolación lineal determine el tiempo de fractura para una carga aplicada de 17 Kg/mm2 y 32 Kg/mm2. >> C=5:10:35; t=[40, 25, 18 12]; Ci=[17, 32]; >> ti=interp1(C,t,Ci) ti = 23.6000 13.8000
Determina el spline cúbico, natural o sujeto para un conjunto de datos (x,y). csape(x,y,’varational’) natural; csape(x,y,’clamped’,[a,b]) sujeto f ‘(x0)=a, f ’(xn)=b
Los trazadores se usan a menudo en software de gráficas para trazar una curva suave a través de un conjunto de puntos de datos. En la siguiente tabla se proporcionan puntos de cierta curva en coordenadas . 1 0.15 0.50
2 0.20 0.80
3 0.40 1.00
4 0.50 1.00
5 0.50 0.80
6 0.30 0.60
7 0.30 0.40
8 0.40 0.30
9 0.25 0.20
10 0.15 0.50
no es función de ni viceversa; sin embargo, es posible generar una curva suave haciendo que y dependan de un parámetro común cuyos valores para el conjunto de datos son . Por medio de trazadores naturales ajustar y a , para valores de desde 1 a 10 en incrementos de 0.05 luego gráfique. >> x=[0.15, 0.2, 0.4, 0.5, 0.5, 0.3, 0.3, 0.4,.25,0.15]; >> y=[0.5, 0.8, 1, 1, 0.8, 0.6, 0.4, 0.3,.2,0.5]; >> t=1:10; s1=csape(t,x,'varational'); s2=csape(t,y,'varational'); >> tt=1:0.05:10; xx=ppval(s1,tt); yy=ppval(s2,tt); >> plot(x,y,'o',xx,yy), grid
5
Laboratorio de Análisis Numérico (MM412-IC303)
Erick Pineda
UNAH
Funciones Importantes de MATLAB
Interpolación para funciones de dos variables, (x, y, z), en el punto(s) (xi,yi). Por defecto la interpolación es bilineal zi=interp2(x, y, z, xi, yi)
Las densidades de las soluciones acuosas del ácido sulfúrico varían con la temperatura y la concentración de acuerdo con la tabla:
5 20 40 70
10 1.0344 1.1453 1.3103 1.6923
30 1.0281 1.3335 1.2953 1.6014
60 1.0140 1.1153 1.2732 1.5753
100 0.9888 1.0885 1.2446 1.5417
a) Calcule la densidad a una concentración de 40% y una temperatura de 15 . >> T=[10, 30]; d=[1.3103, 1.2953]; ti=15; di=interp1(T,d,ti) di = 1.3066
b) Calcule la densidad a 50
y 60% de concentración.
>> T=[30, 60]; C=[40,70]; d=[1.2953, 1.2732; 1.6014,1.5753]; >> Ti=50; Ci=60; di=interp2(T,C,d,Ti,Ci) di = 1.4829
Ajuste polinómico de grado n por mínimos cuadrados al conjunto de datos (x, y) Pn=polyfit(x, y, n) retorna los coeficientes del polinomio
En una reacción gaseosa de expansión a volumen constante, se observa que la presión del reactor aumenta con el tiempo de reacción según se muestra en la tabla. P(atm) t(min)
1.0000 0.0
1.0631 0.1
1.2097 0.3
1.3875 0.5
1.7232 0.8
2.0000 1.0
2.9100 1.5
a) Determinar el mejor interpolante polinómico, de grado a lo más 3, para ajustar los datos aplicando el método de los mínimos cuadrados. >> t=[0, 0.1, 0.3, 0.5, 0.8, 1, 1.5]; >> P=[1, 1.0631, 1.2097, 1.3875, 1.7232, 2, 2.91]; >> p1=polyfit(t,P,1); %Polinomio Lineal >> p2=polyfit(t,P,2); p3=polyfit(t,P,3); >> E1=sum((P-polyval(p1,t)).^2); %Error de p1 6
Laboratorio de Análisis Numérico (MM412-IC303)
Erick Pineda
UNAH
Funciones Importantes de MATLAB >> E2=sum((P-polyval(p2,t)).^2); >> E3=sum((P-polyval(p3,t)).^2); >> [E1; E2; E3] %El mejor ajuste el de menor error ans = 0.096983631503322 0.000415487678758 0.000000031060139
b) Graficar los datos y la curva de ajuste. >> tt=0:0.005:1.5; Pp3=polyval(p3,tt); plot(t,P,'o',tt,Pp3); grid >> xlabel('Tiempo(min)'), ylabel('Presión(atm)'), legend('Datos', 'Ajuste Cúbico')
c) Determine P para t=0.7 minutos. >> pi=polyval(p3,0.7) pi = 1.601416680484238
Integración numérica de f(x) desde a hasta b I=quad(f, a, b, tol), tol es opcional: define el error máximo
El estudio de difracción de la luz en una apertura rectangular implica el uso de las integrales de Fresnel
Construya una tabla de valores para para los valores de
y
que tenga una exactitud de
.
>> f1=@(w) cos(pi*w.^2/2); f2=@(w) sin(pi*w.^2/2); >> t=0.1:0.1:1; >> for i=1:10 c(i)=quad(f1,0,t(i),1e-4); s(i)=quad(f2,0,t(i),1e-4); end >> c c= 0.1000
0.1999
0.2994
0.3975
0.4923
0.5811
0.6597
0.7228
0.7648
0.7799
0.0042
0.0141
0.0334
0.0647
0.1105
0.1721
0.2493
0.3398
0.4383
>> s 0.0005
Intrega una función que se da en forma tabular (utiliza el método del trapecio) I=trapz(x, y)
7
Laboratorio de Análisis Numérico (MM412-IC303)
Erick Pineda
UNAH
Funciones Importantes de MATLAB
En un gasoducto se determina el gasto instantáneo de gas y su contenido de azufre periódicamente durante el día. Los resultados se presentan en la tabla 0 20 0.30
4 22 0.45
8 19.5 0.38
12 23 0.35
15 21 0.30
a) ¿Qué cantidad de gas se bombea en 24 horas? La cantidad de gas se calcula multiplicando el gasto
20 20 0.43
22 20.5 0.41
24 20.8 0.40
por el tiempo, pero
como el gasto es variable, aplicamos la integral >> t=[0,4,8,12,15,20,22,24]; W=[20, 22, 19.5, 23, 21, 20, 20.5, 20.8]; >> S=[.3, .45, .38, .35, .3, .43, .41, .4]; G=60*trapz(t,W) %En kg G= 30138
b) ¿Cuál es el gasto promedio diario?
>> Wp=G/(24*60) %En kg/min Wp = 20.9292
c) ¿Cuál es el contenido de azufre promedio diario?
>> Sp=trapz(W,S)/(20.8-20) % En (%) Sp = 0.3831
d) ¿Qué cantidad de azufre se bombea en 24 horas?
>> Sc=60*trapz(t,S.*W/100) Sc = 113.9070
El área entre dos curvas cerrado en el cual
%En kg
y
en un intervalo está dada por
. Para estimar la superficie de un estanque se han realizado las medidas (en metros) 8
Laboratorio de Análisis Numérico (MM412-IC303)
Erick Pineda
Funciones Importantes de MATLAB
UNAH
que muestra la figura, estimar el área. >> x=0:10:10*8; y=[0,20, 25, 32, 31, 36, 28, 12,0]; A=trapz(x,y) %En m^2 A= 1840
Resolución de e.d.o problemas de valor inicial numéricamente [t, y]=ode45(f, ti, y0)
9
Laboratorio de Análisis Numérico (MM412-IC303)
Erick Pineda