Está en la página 1de 17

Ejemplo

Determinar una raz para:


Y= (1-xcos(x))(x)
Mediante el mtodo de la bisectriz
>> x=0:0.05:50;y=(1-x.*cos(x)).*x;plot(x,y),grid
2500

2000

1500

1000

500

-500

-1000

-1500

-2000

-2500
0 5 10 15 20 25 30 35 40 45 50

2do paso
Mediante el mtodo grafico se tiene el intervalo
[4.9 , 5] donde a=4.9, b=5

Luego se crea una funcin para Y= (1-xcos(x))(x)


function y=ecua_dos(x)
y=(1-x.*cos(x)).*x;

3er paso
Hallando una raz en el intervalo [4.9 , 5]
Donde: a=4.9, b=5 para la funcin ecua_dos

En la ventana comando digitar

>> bisec_n('ecua_dos',4.9,5)

nombre_f = ecua_

coeficientes
El polinomio puede expresarse tambin en la forma:
Y=((((c1x+c2)x+c3)x.+c3)x.+cn)x+cn+2.(2)
O en la forma factorizada
Y=c1(x-r1(x-r2)(x-rn).(3)
.ri son las raices del polinomio
Ejemplo: y=x4+2x3-7x2-8x+12
Y=(((x+2)x-7)x-8)x+12
Y=(x-1)(x-2)(x+3)(x+3)
Coeficientes de polinomios
Un polinomio se representa mediante un vector fila que contiene los
coeficientes de las potencias en orden descendente.
y=x4+2x3-7x2-8x+12
En la ventana comando
>> P = [1 2 -7 -8 12]
Si faltase algn trmino en el polinomio se completa con ceros.
Raices:
Se obtienen mediante el comando roots
Ejemplo: y=2x3+x2-3x+4
>> P=[2 1 -3 4];roots(P)

ans =
-1.8720 + 0.0000i
0.6860 + 0.7732i
0.6860 - 0.7732i

Ejemplo y=x3-2x2-5x+6

>> p=[1 -2 -5 6];roots(p)

ans =
-2.0000
3.0000
1.0000
En MatLab debemos tener cuidado en lo que se refiere a la exactitud
de los clculos
Ejemplo y=(x-6)6=x6-6x5+15x4-20x3+15x2-6x+1
>> p=[1 -6 15 -20 15 -6 1];roots(p)

ans = 1.0048 + 0.0000i


1.0024 + 0.0042i
1.0024 - 0.0042i
0.9976 + 0.0042i
0.9976 - 0.0042i
0.9952 + 0.0000i
Lo cual no es correcto.
Evaluacin de un polinomio
Los polinomios pueden evaluarse con el comando polyval
Ejemplo evaluar con polyval la expresin y=-5x10-8x7+4x+5, para
x=0,-2,1.5,1
>> p=[-5 0 0 -7 0 0 0 0 0 4 5];x=0;polyval(p,x)
ans = 5
una segunda forma es poner en forma de vector los valores en el cual
se quiere evaluar
>> p=[-5 0 0 -7 0 0 0 0 0 4 5];x=[-2 0 1 1.5];polyval(p,x)
ans = 1.0e+03 * = multiplicar por 103 a cada uno de los valores siguientes

-4.2270 0.0050 -0.0030 -0.3969


Diferenciacin de polinomios
La integracin de polinomios:

1 + 2 1 + 3 2 + + + + 1 es:

1 +1 2 2
= + + + + + 2 + + 2
+1 2
Donde cn+2 es una constante de integracin
Para este caso se utiliza el guion poly_itg
Eejmplo evaluar y=3x2+2x+1
solucin
en el editor se crea poly_itg
%objetivo: integracion de un polinomio encontrando los coeficientes del
%polinomio
%sintaxis: I=poly_itg(p)
% p:coeficientes del polinomio por integrar
% I:coeficientes del polinomio ya integrado
function I=poly_itg(p)
n=length(p)
I=[p.*[n:-1:1].^(-1),0];

Luego en la ventana commando ejecutamos de la siguiente manera


>> p=[3 2 1];I=poly_itg(p)

n = 3
I = 1 1 1 0

Lo que significa = = 3 + 2 + +
Ejemplo
Y=3x4+2x3-5x2+7x-1
Derivada
la primera derivada de la ecuacin

= 1 + 2 1 + 3 2 + + + . . (1)
Es

= = 1 1 + ( 1)2 2 + ( 2)3 3 + +

Los coeficientes de la primera derivada se puede calcular con el
comando polyder(c)cuya sintaxis es:
>> d=polyder(c)
Donde c tiene el mismo significado que antes, mientras b es el
vector coeficientes igual a:
[nc1, (n-1)c2, .,cn]
Ejemplo sea y=2x3+x2+4x+4
>> c=[2 1 4 4];d=polyder(c)

d = 6 2 4 y=6x2+2x+4

Suma de polinomios
Definimos dos polinomios
Y1=a1xm+a2xm-1+.+amx+am+1
Y2=b1xn+b2xn-1+.+bnx+bn+1
y suponemos que sus vectores de coeficientes son a y b
respectivamente
la sintaxis de su suma es

>> s=poly_add(a,b)

En el editor creamos el archivo poly_add


%objetivo:suma dos polinomios
%sintaxis:p3=poly_add(p1,p2)
%p1,p2:arreglos de los polinomios
%p3:arreglo de los coeficientes despues de la suma
function p3=poly_add(p1,p2)
n1=length(p1);n2=length(p2);
if n1==n2 p3=p1+p2;end
if n1>n2 p3=p1+[zeros(1,n1-n2),p2];end
if n1<n2 p3=[zeros(1,n2-n1),p1]+p2;end

En la ventana comando

>> p1=[4 0 0 0 2 4];p2=[0 1 0 3 1 0];p3=poly_add(p1,p2)

p3 = 4 1 0 3 3 4

Producto de polinomios

El producto de dos polinomios uno de orden m y el otro de orden


n se convierte en otro polinomio de orden d=n+m

Yc=Y1Y2= c1xd+c2xd-1+.+cdx+cd+1

El comando en MatLab para obtener los coeficientes de Yc es:

C=conv(a,b)

Ejemplo

Sea y1=4x5+2x+4

Y2=x4+3x2+2

En la ventana comando se tiene

>> a=[4 0 0 0 2 4];b=[0 1 0 3 1 0];p=conv(a,b)

p = 0 4 0 12 4 2 4 6 14 4 0

Divisin de polinomios

La divisin de un polinomio Y1 entre otro polinomio Y2 satisface

Y1= Yq Y2+ Yr

Donde Yq es el coeficiente y Yr es el residuo de la divisin. Los


polinomios Yq e Yr se calculan con el comando deconv

Sintaxis:
>> [q,r] = deconv(a,b)

Donde q y r representan los coeficientes de Yq e Yq

Ejemplo dividir los polinomios

Y1=x13+4x12+3x1+4

Y2=x+2

En la ventana comando

>> a = [1 4 3 4];b=[1 2]; [q,r]=deconv(a,b)

q = 1 2 -1 r = 0 0 0 6

Yq=x2+2x-1 Yr= 6

Interpolacin lineal

La interpolacin lineal es la base de muchos mtodos numricos por ejemplo si integramos la


interpolacin lineal derivamos el mtodo de integracin llamado regla trapezoidal otro ejemplo
es el empleo del gradiente de la interpolacin lineal como aproximacin a la primera derivada
de una funcin.

- La interpolacin lineal es una lnea ajustada a dos puntos de datos (ver fig. 1) y esta

dada por () =
() +
() . . (1)

La expresin (1) tambin se puede escribir as:

() ()
() = ( ) + () . (2)

Donde f(a) y f(b) son valores conocidos de f(x) en x=a y x=b

- matLab cuenta con con un comando para la interpolacin lineal. El comando


interp1determina el valor funcional de una abscisa especificado denotado por xi
interpolando linealmente a partir de la tabla de la funcin.

>> Yi=interp1(x,y,xi)

Donde x e y son arreglos de columna

X=[1.1 2.1 3.1]`

Y=[0.2 0.5 0.9]`

Xi=1.9 Yi=??
Ejemplo 1

Suponga una relacin funcional y=y(x) esta dada en forma tabular donde y(x) es una
funcin monotomica decreciente de x.
Encuentre los valores de x que satisfaga y= 0.7, 0.9, 0.6, 0.5

X 0.75 0 1.0 0.25 0.50

y 0.5396 0.9162 0.4055 0.8109 0.6931

Solucin

i) ordenando

X 0 0.038 0.25 0.485 0.50 0.6 0.75 0.82 1.0


5 4 516 38

y 0.916 0.9 0.810 0.7 0.693 0.6 0.53 0.5 0.40


2 9 1 96 55

En el editor se crea el archivo interpolacion1


%este programa resuelve el problema de
%determinar la satisfaccion de ciertos valores
%yi=0.5 0.6 0.7 0.9
x=[0 0.25 0.5 0.75 1.0]';
y=[0.9162 0.8109 0.6931 0.5396 0.4055]';
yi=[0.5 0.6 0.7 0.9]';
xi=interp1(y,x,yi);
[yi,xi]
Hacemos correr run

>> interpolacion1

ans = 0.5000 0.8238


0.6000 0.6516
0.7000 0.4854
0.9000 0.0385

Con lo cual rellenamos la tabla anterior para los valores


encontrados

Ejemplo 2
Un conjunto de cuatro puntos de datos est dado por:
X= 1.1 2.3 3.9 5.1
Y= 3.887 2.117 4.276 4.651
Encuentre los coeficientes del polinomio de interpolacion
ajustado al conjunto de datos y por x=2.101 y 4.234
Luego grafique y=f(x)

Solucin
A=)
En el editorinterpolacion2
%este programa resuelve el problema de
%determinar la satisfaccion de ciertos valores
%xi=2.101 y 4.234
x=[1.1 2.3 3.9 5.1]';
y=[2.117 3.887 4.276 4.651]';
xi=[2.101 4.234]';
i=interp1(x,y,xi);
[xi,yi]

>> interpolacion2

ans = 2.1010 3.5935


4.2340 4.3804

>> x=[1.1 2.101 2.3 3.9 4.234 5.1];

>> y=[2.117 3.5935 3.887 4.276 4.3805 4.651];

>> plot(x,y),grid

4.5

3.5

2.5

2
1 1.5 2 2.5 3 3.5 4 4.5 5 5.5

Interpolacin polinmica en de serie de potencias


Se vio como ajustar un polinomio a un conjunto de puntos de datos
con polyfit. Ahora abordaremos de nuevo el problema desde un punto
de vista mas fundamental
Supongamos que (n+1) puntos de datos se dan como:
X1, x2, x3,...xn+1
Y1, y2, y3, ..yn+1
Donde x1, x2
Ejemplo
Un conjunto de cuatro puntos de datos est dado por.
X= [1.1 2.3 3.9 5.1]
Y=[3.881 4.276 4.651 2.117]
Encuentre los coeficientes del polinomio de interpolacin ajustado
al conjunto de datos resolviendo la ecuacin (2)
Y luego determinar el valor de Y para x=2.101 y 4.234 mediante la
formula de la interpolacin, grafique con los puntos de datos.
Solucin
En el editor se crea interpoli1
clear,clc
x=[1.1 2.3 3.9 5.1]';
y=[3.881 4.276 4.651 2.117]';
n=length(x)-1;
a(:,n+1) =ones (size(x));
a(:,n)=x
for j=n-1:-1:1
a(:,j)=a(:,j+1).*x %y=Ac
end
coef=a\y %solucion de la ecuacion lineal
xi=[2.101 4.234]';
yi=zeros(size(xi));
for k=1:n+1
yi=yi+coef(k)*xi.^(n+1-k);
end
yi
% graficacion
xp=1.1:0.05:5.1;
yp=zeros(size(xp));
for k=1:n+1
yp=yp+coef(k)*xp.^(n+1-k);
end
plot(xp,yp,x,y,'o'),grid
xlabel('x')
ylabel('g(x):-,puntos de datos:o')

al hacer correr en la ventana comando se tiene

a =

0 0 1.1000 1.0000
0 0 2.3000 1.0000
0 0 3.9000 1.0000
0 0 5.1000 1.0000

a =

0 1.2100 1.1000 1.0000


0 5.2900 2.3000 1.0000
0 15.2100 3.9000 1.0000
0 26.0100 5.1000 1.0000

a =

1.3310 1.2100 1.1000 1.0000


12.1670 5.2900 2.3000 1.0000
59.3190 15.2100 3.9000 1.0000
132.6510 26.0100 5.1000 1.0000

coef =

-0.2010
1.4335
-2.7296
5.4166

yi =

4.1452
4.3005
x 1.1 2.101 2.3 3.9 4.234 5.1
y 3.881 4.41452 4.276 4.651 4.3005 2.117

Coef: -0.2015 1.4385 -2.7477 5.4370


Por lo tanto la respuesta -0.2015x3+1.4385x2-2.7477x+5.4370
5

4.5
g(x):-,puntos de datos:o

3.5

2.5

2
1 1.5 2 2.5 3 3.5 4 4.5 5 5.5
x

Ejemplo
A continuacin se da las densidades del sodio a seis temperaturas
T(c) = 94 115 205 280 371 401
D(kg/m3) = 929 915 902 890 860 805
Encuentre los coeficientes del polinomio ajustados al conjunto de
datos.
Luego determine el valor de dipara 99 150 299 y 390grados centrigsdos
mediante la formula de interpolacin
Graficar d=f(t).
Solucin
En el editor interpoli.2
clear,clc
t= [94 115 205 280 371 401]';%temperaturas
d=[929 915 902 890 860 805]';%densidad
n=length(t)-1;
a(:,n+1)=ones(size(t));
a(:,n)=t;
for j=n-1:-1:1
a(:,j)=a(:,j+1).*t;
end
coef=a\d%solucion de la ecuacion lineal
ti=[99 150 299 390];
di=zeros(size(ti));
for k=1:n+1
di=di+coef(k).*ti.^(n+1-k);
end
di
%grafica
tp=94:0.05:401;
dp=zeros(size(tp));
for k=1:n+1
dp=dp+coef(k).*tp.^(n+1-k);
end
plot(tp,dp,t,d,'o'),grid
xlabel('t')
ylabel('g(t):-,puntos de dato:o')

coef =
1.0e+03 *

-0.0000
0.0000
-0.0000
0.0001
-0.0106
1.3525

di = 924.5803 907.5235 887.9855 830.9449


respuesta f(t) entonces y=f(x)0x5+0x4+0x3+0.1x2-10.6x+1352.5
t(c)=94 99 115 150 205 280 299 371 390 401
d=929 924.5803 915 907.5235 902 890 887.9855 860 830.9449 805

940

920

900
g(t):-,puntos de dato:o

880

860

840

820

800
50 100 150 200 250 300 350 400 450
t

b)
Creamos en el editor plot15

x=[94 99 115 150 205 280 299 371 390 401];


y=[929 924.5803 915 907.5235 902 890 887.9855 860 830.9449 805];
plot(x,y,'m'),grid
xlabel('temperatura');
ylabel('densidad')
940

920

900

880
densidad

860

840

820

800
50 100 150 200 250 300 350 400 450
temperatura

Ejemplo
Determine valor o valores aproximados de las races mas bajas
mediante el mtodo de la biseccin para la expresin 4x+tan(x)=5.3
Solucin
i) primero se tienen que encontrar el intervalo[a,b]
o axb, mediante el mtodo grafico
en la ventana comando
>> x=0:0.005:1.4;y=4.*x+tan(x)-5.3;plot(x,y), grid

-2

-4

-6
0 0.2 0.4 0.6 0.8 1 1.2 1.4
Creamos en el editor funcin tres
function y=funcion_tres(x)
y=4*x+tan(x)-5.3;

digitando lo siguiente encuentra el resultado final


>> bisec_g('funcion_tres',0.4,1.4,0.3,1.5,100)

f_name =

funcion_tres

Metodo de la bisectriz:

It. a b c fa=f(a) fc=f(c)


abs(fc-fa)
1, 0.400000, 0.900000 1.400000, -3.277207, 6.097884
9.375e+00
2, 0.900000, 1.150000 1.400000, -0.439842, 6.097884
6.538e+00
3, 0.900000, 1.025000 1.150000, -0.439842, 1.534497
1.974e+00
4, 0.900000, 0.962500 1.025000, -0.439842, 0.446534
8.864e-01
5, 0.962500, 0.993750 1.025000, -0.014015, 0.446534
4.605e-01
6, 0.962500, 0.978125 0.993750, -0.014015, 0.211204
2.252e-01
7, 0.962500, 0.970312 0.978125, -0.014015, 0.097432
1.114e-01
8, 0.962500, 0.966406 0.970312, -0.014015, 0.041429
5.544e-02
9, 0.962500, 0.964453 0.966406, -0.014015, 0.013639
2.765e-02
10, 0.964453, 0.965430 0.966406, -0.000205, 0.013639
1.384e-02
11, 0.964453, 0.964941 0.965430, -0.000205, 0.006713
6.918e-03
12, 0.964453, 0.964697 0.964941, -0.000205, 0.003253
3.458e-03
13, 0.964453, 0.964575 0.964697, -0.000205, 0.001524
1.729e-03
14, 0.964453, 0.964514 0.964575, -0.000205, 0.000659
8.642e-04
15, 0.964453, 0.964484 0.964514, -0.000205, 0.000227
4.321e-04
16, 0.964453, 0.964468 0.964484, -0.000205, 0.000011
2.160e-04
17, 0.964468, 0.964476 0.964484, -0.000097, 0.000011
1.080e-04
18, 0.964476, 0.964480 0.964484, -0.000043, 0.000011
5.401e-05
19, 0.964480, 0.964482 0.964484, -0.000016, 0.000011
2.701e-05
20, 0.964482, 0.964483 0.964484, -0.000002, 0.000011
1.350e-05
21, 0.964482, 0.964482 0.964483, -0.000002, 0.000004
6.752e-06
se satisface la tolerancia.
Resultado final: Raiz= 0.964482
Halllando la segunda raz
En la ventana comando
>> x=0:0.005:5;y=4.*x+tan(x)-5.3;plot(x,y), grid
Cuya bgrafica es

1400

1200

1000

800

600

400

200

-200

-400
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
Seguidamente encontramos el mximo y minimo utilizando zom este
ser aproximado.

40

20

-20

-40

-60
1.45 1.5 1.55 1.6 1.65 1.7

Tomamos el intervalo 1.55, 1.6


Con este vamos a la ventana comando ejecutando con la sintaxis
bisec_g(funcion_tres,a,b,xmin,xmax,100)
>> bisec_g('funcion_tres',1.55,1.6,1.55,1.6,90)

f_name =

funcion_tres

Metodo de la bisectriz:

It. a b c fa=f(a) fc=f(c) abs(fc-


fa)
1, 1.550000, 1.575000 1.600000, 48.978482, -33.132533
8.211e+01
2, 1.550000, 1.562500 1.575000, 48.978482, -236.885787
2.859e+02
3, 1.562500, 1.568750 1.575000, 121.482506, -236.885787
3.584e+02
4, 1.568750, 1.571875 1.575000, 489.654817, -236.885787
7.265e+02
5, 1.568750, 1.570313 1.571875, 489.654817, -926.076978
1.416e+03
6, 1.570313, 1.571094 1.571875, 2067.836440, -926.076978
2.994e+03
7, 1.570313, 1.570703 1.571094, 2067.836440, -3361.227965
5.429e+03
8, 1.570703, 1.570898 1.571094, 10730.389883, -3361.227965
1.409e+04
9, 1.570703, 1.570801 1.570898, 10730.389883, -9792.308848
2.052e+04
10, 1.570703, 1.570752 1.570801, 10730.389883, -224493.366113
2.352e+05
11, 1.570752, 1.570776 1.570801, 22536.869755, -224493.366113
2.470e+05
12, 1.570776, 1.570789 1.570801, 50102.168965, -224493.366113
2.746e+05
13, 1.570789, 1.570795 1.570801, 128990.364369, -224493.366113
3.535e+05
14, 1.570795, 1.570798 1.570801, 606406.865160, -224493.366113
8.309e+05
15, 1.570795, 1.570796 1.570798, 606406.865160, -712911.208533
1.319e+06
16, 1.570796, 1.570797 1.570798, 8118095.541732, -712911.208533
8.831e+06
17, 1.570796, 1.570797 1.570797, 8118095.541732, -1563090.457017
9.681e+06
se satisface la tolerancia.
Resultado final: Raiz= 1.570797

El mismo problema anterior con el mtodo de newton


Sintaxis:
Newt_g(funcion_tres,x0,xmin,xmax,90)

También podría gustarte