Вы находитесь на странице: 1из 13

CAP II

INTERPOLAR POLINOMIOS
>> x=[0 0.6 0.9];y=[1 0.8253 0.6216];
>> n=length(x);
>> q=polyfit(x,y,2)
Explicacin
>> x=[0 0.6 0.9];y=[1 0.8253 0.6216];
Indica los valores iniciales que te da el problema y Y indica
los valores hallados en la funcin.
>> q=polyfit(x,y,2)
En numero 2 indica (n-1) y n indica el numero de trminos
que tiene x y es 3 por lo tanto n=3 y n-1 es igual a 2 y eso
es todo
Y para evaluar es:
>>polyval(p,0)
Explicaion
>>polyval(p,0)
P significa el polinomio
0 es el valor en el que nos pide evaluar
PROGRAMA DE LAGRANGE
function y0 = lagrange_interp(x, y, x0)
y0 = 0;
n = length(x);
for j = 1:n
t = 1;
for i = 1:n
if i~=j
t = t * (x0-x(i))/(x(j)-x(i));
end
end
y0 = y0 + t*y(j);
end

LA
>>
>>
(Y

forma de poner en el matlab es:


x=[0 0.6 0.9];y=[1 0.8253 0.6216];
y0 = lagrange_interp(x, y, 3)
enter)

explicacion
>> y0 = lagrange_interp(x, y, 3)
Esto indica en que punto se va a evaluar en nuestro caso es 3

PARA GRAFICAR DOS graficos A LA VEZ


>> x=0:0.01:1;
>> y=cos(x);
>> z=(-0.4309)*x.^2-(0.0326)*x+1;
>> plot(x,y,x,z)
>> grid
PARA GRAFICAR UNA GRAFICO A LA VEZ
>>
>>
>>
>>

x=-10:0.01:10;
y=(-1.7912)*x.^3+(4.7231)*x.^2-(1.9587)*x-0.3151;
plot(x,y)
grid

DIFERENCIAS DIVIDIDAS
function [c,d]=dividida(x,y)
n=length(x);
d=zeros(n,n);
d(:,1)=y';
for j=2:n
for k=j:n
d(k,j)=(d(k,j-1)-d(k-1,j-1))/(x(k)-x(k-j+1));
end
end
c=d(n,n);
for k=(n-1):-1:1
c=conv(c,poly(x(k)));
m=length(c);
c(m)=c(m)+d(k,k);
end

Para poner o compilar primero ponemos


>> x=[8.1 8.3 8.6 8.7];y=[16.94410 17.56492 18.50515 18.820914];
Donde y es lo evaluado en x (todo esto te da en el enunciado)
Luego se copea [c,d]=dividida(x,y)del editor y se pega en matlab luego enter y te va a salir
c=
-0.0019 0.1079 1.7209 -3.0571

d=
16.9441
0
0
0
17.5649 3.1041
0
0
18.5052 3.1341 0.0600
0
18.8209 3.1576 0.0588 -0.0019
Donde c es el polinomio.
PARA EVALUAR
>> polyval(c,8.4)
Ya que c es el polinomio dado
Si fuera para para grado uno o para grado dos o tres tomamos 2 3 y 4 valores respectiovamente
Para grado 2
>> x=[8.1 8.3];y=[16.94410 17.56492];
>> [c,d]=dividida(x,y)
c=
3.1041 -8.1991

d=
16.9441
0
17.5649 3.1041
>> p=[3.1041 -8.1991]
p=
3.1041 -8.1991
>> polyval(p,8.4)
ans =
17.8753
Para que consideremos todos los valores es:
format long

PARA GRAFICAR EN DIFERENCIAS DIVIDIDAS


PRIMERO HALLAS LA MATRIZ Y EL POLINOMIO
x=[0.6 0.7 0.8 1];y=[-0.17694460 0.01375227 0.22363362 0.65809197];
>> [c,d]=dividida(x,y)(luego lo copeas esto y enter)
Luego para graficar
x=0.6:0.01:1;(son los intervalos de x)
>> z=polyval(c,x);
>> plot(x,z)
>> grid
METODO DEL TRAPECIO
function I=trapecio(f,a,b)
f= inline(f);
I=(f(a)+f(b))*((b-a)/2);
Te vas al matlab y copeas I=trapecio(f(va la funcin en tildes del INGLES
exp(x^2)),a(limite inferior),b(limite superior))
OTRO PROGRAMA DEL INTERNET (TRAPECIO COMPUESTO)
clear all;
clc;
fprintf('Calculo de la integral por el metodo trapecial\n\n');
f=input('introduce la funcion:','s');
a=input('lime inferior:');
b=input('limite superior:');
c=input('numero de segmentos a dividir:');
h=(b-a)/c;
z=0;
for x=a:h:b
k=eval(f);
if x==a,d=k;
end
if x==b,e=k;
end
z=z+k;
end
z=z-d-e;
z=z*2;
z=z+d+e;
z=z/(2*c);
z=z*(b-a)
fprintf('Resultado ');

PERO PARA QUE NO LO BORRE


fprintf('Calculo de la integral por el metodo trapecial\n\n');
f=input('introduce la funcion:','s');
a=input('lime inferior:');
b=input('limite superior:');
c=input('numero de segmentos a dividir:');
h=(b-a)/c;
z=0;
for x=a:h:b
k=eval(f);

if x==a,d=k;
end
if x==b,e=k;
end
z=z+k;
end
z=z-d-e;
z=z*2;
z=z+d+e;
z=z/(2*c);
z=z*(b-a)
fprintf('Resultado ');

PARA DERIVAR PARA HALLAR LA COTA Y LA COTA DE ERROR


h=input('INGRESE FUNCION A DERIVAR :','s');
gx=diff(sym(h),2)
a=input('INGRESE a:');
b=input('INGRESE b:');
x=a;
ga=eval(gx)
x=b;
gb=eval(gx)
c=max(ga,gb);
r = (-c*(b-a^3))/12

PARA GRAFICAR (LOS INTERVALOS de la integral es)


>> x=0:0.01:2;(limite sup e limite superior)
>> y=exp(cos(x.^2));(la funcin a integrar)
>> plot(x,y)
>> grid
3

2.5

1.5

0.5

0.2

0.4

0.6

0.8

1.2

1.4

1.6

1.8

METODO DEL TRAPECIO ABIERTO Y EL METODO DE SIMPSOM EN INTERNET


clear; format long
fprintf('\n\t::::::::::PROGRAMADO POR: Obed Gmer Cruz Campos::::::::::\n');
while 1
disp('[1] TRAPECIO SIMPLE (h>0)')
disp('[2] TRAPECIO COMPUESTO(h<0)')
disp('[3] FORMULA DE SIMPSON SIMPLE')
disp('[4] FORMULA DE LOS TRES OCTAVOS DE SIMPSON')
disp('[5] FORMULA DE SIMPSON COMPUESTO')
disp('[6] INTEGRACION DE ROMBERG')
disp('[7] ROMBERG MODIFICADO')
disp('[8] VOLVER')
elecc3 = input('ELIGA OPCION ');
switch elecc3
case 1
clc; clear;
fprintf('\t\tTRAPECIO SIMPLE\n')
funcion=input('ingrese la funcion \n f(x)=','s');
b=input('ingrese el limite superior de la integral\n');
a=input('ingrese el limite inferior de la integral\n');
h=b-a;
x=a;
f=eval(funcion); x=b;
f= (f+eval(funcion))*(h/2);
fprintf('El valor aproximado es: %10.15f\n\n',f)
case 2
clc; clear;
fprintf('\t\tTRAPECIO COMPUESTO\n')
funcion=input('ingrese la funcion \n f(x)=','s');
b=input('ingrese el limite superior de la integral\n');
a=input('ingrese el limite inferior de la integral\n');
n=input('ingrese el numero de intervalos\n');
h=(b-a)/n;
f=0;
for k=1:n-1
x=a+h*k;
f=f+eval(funcion);
end
f=2*f;
x=a; f=f+eval(funcion); x=b; f=f+eval(funcion);
f=(h/2)*(f);
fprintf('El valor aproximado es: %10.15f\n\n',f)

case 3
clc; clear;
fprintf('\t\tFORMULA DE SIMPSON SIMPLE\n')
funcion=input('ingrese la funcion \n f(x)=','s');
b=input('ingrese el limite superior de la funcion\n'); a=input('ingrese el limite inferior de la
integral\n');
h=(b-a)/2;
x=a; f=eval(funcion); x=b; f=f+eval(funcion);
x=a+h; f=f+ 4*(eval(funcion));
f=(h/3)*f;
fprintf('El valor aproximado de la integral es: %10.15f\n\n',f)
case 4
clc; clear;
fprintf('\t\tFORMULA DE LOS TRES OCTAVOS DE SIMPSON\n')
funcion=input('ingrese la funcion \n f(x)=','s');
b=input('ingrese el limite superior de la funcion\n');
a=input('ingrese el limite inferior de la integral\n');
h=(b-a)/3;
x=a;
f=eval(funcion);x=a+h; f=f+3*(eval(funcion));
x=a+2*h; f=f+3*(eval(funcion)); x=b;
f=f+eval(funcion);
f=(3*h/8)*f;
fprintf('El valor aproximado de la integral es: %10.15f\n\n',f)
case 5
clc; clear;
fprintf('\t\tFORMULA DE SIMPSON COMPUESTO\n')
funcion=input('ingrese la funcion \n f(x)=','s');
b=input('ingrese el limite superior de la integral\n');
a=input('ingrese el limite inferior de la integral\n');
n=input('ingrese el numero de intervalos');
h=(b-a)/(2*n);
f=0;
for k=1:n-1
x=a+h*(2*k);
f=f+eval(funcion);
end
f1=0;
for k=1:n
x=a+h*(2*k-1);
f1=f1+eval(funcion);
end

f=2*f+4*f1;
x=a; f=f+eval(funcion); x=b; f=f+eval(funcion);
f=(h/3)*f;
fprintf('el valor aproximado de la integral es: %10.15f\n\n',f)
case 6
clc; clear;
fprintf('\t\tINTEGRACION DE ROMBERG\n')
funcion=input('ingrese la funcion \n f(x)=','s');
b= input('ingrese el lmite superior de la integral \n');
a= input('ingrese el lmite inferior de la integral \n');
n= input('ingrese el nmero de intervalos\n');
h=(b-a);
M=1;
J=0;
R=zeros(n,n);
x=a; f1=eval(funcion);
x=b;
f2=eval(funcion);
R(1,1)=h*(f1+f2)/2;
while (J<(n-1))
J=J+1;
h=h/2;
s=0;
for p=1:M
x=a+h*(2*p-1);
f3=eval(funcion);
s=s+f3;
end
R(J+1,1)=(1/2)*(R(J,1))+h*s;
M=2*M;
for k =1:J
R(J+1,k+1)=R(J+1,k)+(R(J+1,k)-R(J,k))/(4^k-1);
end
end
R
fprintf('La aproximacion buscada es: %10.15f\n\n', R(J+1,J+1))
case 7
clc; clear;
fprintf('\t\tINTEGRACION DE ROMBERG\n')
funcion=input('ingrese la funcion \n f(x)=','s');
b=input('Ingrese el limite superior:\n');
a=input('Ingrese el limite inferior:\n');

n=input('Ingrese el numero de particiones:\n');


tol=input('Ingrese la tolerancia:\n');
M=1;
h=b-a;
err=1;
J=0;
R=zeros(4,4);
x=a;
f_a=eval(funcion);
x=b;
f_b=eval(funcion);
R(1,1)=h*(f_a+f_b)/2;
disp(' quad err h')
while((err>tol)&(J<n))|(J<4)
J=J+1;
h=h/2;
s=0;
for p=1:M
x1=a+h*(2*p-1);
x=x1;
f_x1=eval(funcion);
s=s+f_x1;
end
R(J+1,1)=R(J,1)/2+h*s;
M=2*M;
for K=1:J R(J+1,K+1)=R(J+1,K)+(R(J+1,K)-R(J,K))/(4^K-1);
end
err=abs(R(J,J)-R(J+1,K+1));
fprintf('%10.9f %10.9f %10.9f\n',R(J+1,J+1),err,h)
end
disp('LA MATRIZ TRIANGULAR INFERIOR ES:')
disp(R)
disp('El error es para el numero de particiones:')
disp(err)
disp('El tamao de la ultima particion es:')
disp(h)
disp('La respuesta es:')
disp(R(J+1,J+1))
otherwise
clc
fprintf('\n\t::::::::::Derechos: Obed Gmer Cruz Campos::::::::::\n');
fprintf('\t::::::::::::::::::UNHEVAL-FICA-2008:::::::::::::::::\n');

fprintf('\n :::::::::::::::::::::::GRACIAS::::::::::::::::::::::\n');
break
end
end
TRAPECIO ABIERTO
function I=tra(f,a,b)
f=inline(f);
x1=(2*a+b)/3;
x2=(a+2*b)/3;
I=(b-a)/2*(f(x1)+f(x2));

PARA Ln ES EN MATLAB Log y se hace de la misma forma que en el trapecio


METODO DE SIMPSON
function I=si(f,a,b)
f=inline(f);
x0=a;
x1=(a+b)/2;
x2=b;
I=(b-a)/6*(f(x0)+4*f(x1)+f(x2));

se hace de la misma forma que en el trapecio


COTA DE ERROR DE SIMPSON
h=input('INGRESE FUNCION A DERIVAR :','s');
gx=diff(sym(h),4)
a=input('INGRESE a:');
b=input('INGRESE b:');
x=a;
ga=eval(gx)
x=b;
gb=eval(gx)
c=max(ga,gb);
r = (-c*(b-a)^5)/2880

Похожие интересы