Está en la página 1de 7

Taller 3 métodos numéricos

1. Por medio del siguiente código en Matlab obtenemos la función


aproximada:
function ecuacion=untitled(xi,fxi)
n=length(xi);
syms x;
for i=1:n
Li=1;
for j=1:n
if j~=i
Li=Li*((x-xi(j))/(xi(i)-xi(j)));
end
end
L(i)=Li;

end

ecuacion=0;
for i=1:n
ecuacion=L(i)*fxi(i)+ecuacion;
end

ecuacion=simplify(expand(ecuacion));

end

Con la cual obtenemos la siguiente función:


(41644898344285675*x^3)/60798594969501696 +
(476173154649256385*x^2)/486388759756013568 +
(964568015837684503*x)/972777519512027136 +
1436450122747597/1621295865853378560

Que, si la simplificamos, obtendríamos:


0.685x^3+0.979x^2+0.992x+0.000886

Por lo que f(0.2) sería:


f(0.2)=0.243926

2. Es el mismo punto 1
3. Se reemplazan los punto de x en la función y se verifica que den los
mismos valores de f(x) que de y
f(x) y
2 2
1 1
2 2
-7 -7
-38 10
Por lo que sí interpola los 4 primeros valores, pero no el último.

Para completar el último se usa el método de Newton, con el siguiente


código:
function[yi,p,b]= pol_newton(x,y,xi)
n=length(x);
b=zeros(n);
b(:,1)=y(:);
for j=2:n
for i=1:n-j+1
b(i,j)=(b(i+1,j-1)-(b(i,j-1)))/(x(i+j-1)-x(i));
end
end
xt=1;
yi=b(1,1);
for j=1:n-1
xt=xt.*(xi-x(j));
yi=yi+b(1,j+i)*xt;
end
p=num2str(b(1,1));
xx=x*-1;
for j=2:n
signo='';
if b(i,j)>=0
signo2='';
end
xt='';
for i=1:j-1
if xx(i)>=0
signo2='+';
end
xt=strcat(xt,'*(x',signo2,num2str(xx(i)),')');
end
p=strcat(p,signo,num2str(b(1,j)),xt);
end
Lo cual nos daría el siguiente polinomio:
2-1*(x+1)1*(x+1)*(x+0)-2*(x+1)*(x+0)*(x+-1)2*(x+1)*(x+0)*(x+-1)*(x+-2)
4.
x y DD1 DD2
0 f[x0] f[x0,x1] 50/7
0.4 f[x1] 10
0.7 6
6−fx 1
10=
0.7−0.4
f [x 1]=3

50 10−f [x 0 , x 1]
=
7 0.7−0
f [ x 0 , x 1 ] =5
3−fx 0
5=
0.4−0
f [ x 0 ] =1
6. Para la interpolación de trazadores cúbicos utilizamos el siguiente código
en Matlab:
function [a,b,c,d]=trazador_cubico(X)
n=length(X(1,:));

for i=1:n;
a(i)=X(2,i);
end

for i=1:n-1;
h(i)=X(1,i+1)-X(1,i); %extremo izquierdo
end

for i=2:n-1;
alfa(i)=3/h(i)*(a(i+1)-a(i))-3/h(i-1)*(a(i)-a(i-1)); %extremo derecho
end

l(1)=1;
mu(1)=0;
z(1)=0;

for i=2:n-1;
l(i)=2*(X(1,i+1)-X(1,i-1))-h(i-1)*mu(i-1);
mu(i)=h(i)/l(i);
z(i)=(alfa(i)-h(i-1)*z(i-1))/l(i);
end

l(n)=1;
z(n)=0;
c(n)=0;

for i=n-1:-1:1;
c(i)=z(i)-mu(i)*c(i+1);
b(i)=(a(i+1)-a(i))/h(i)-h(i)*(c(i+1)+2*c(i))/3;
d(i)=(c(i+1)-c(i))/(3*h(i));
end

for i=1:n-1;
x=X(1,i):0.1:X(1,i+1);
y=a(i)+b(i)*(x-X(1,i))+c(i)*(x-X(1,i)).^2+d(i)*(x-X(1,i)).^3;
hold on;
plot(x,y,'--c');
end

for i=1:n;
hold on;
plot (X(1,i),X(2,i),'+','MarkerEdgeColor','k','LineWidth',1);
title('INTERPOLACION POR SPLINES O TRAZADORES DE ORDEN 3.');
xlabel("EJE X");
ylabel("EJE Y");
end

Con lo cual podemos observar los resultados en la siguiente gráfica:

Y también obtenemos los coeficientes para las funciones del trazador:

7. Usaremos el método de Lagrange para realizar este punto, primero con las
filas de x y f’(x) y luego con f(x) y f’(x), se usará el mismo código del punto
1, con el cual se obtiene la siguiente función para x-f’(x):
f’(x)=17.564265- 6.6414x
Reemplazando con x=2.1 obtenemos que:
f’(2.1)=3.617325
Ahora se obtiene la siguiente función para f(x)-f’(x):
f’(x)=- 2.608429263x- 0.6303351157
f’(2.1)=-6.11
El cual es un valor que no tiene sentido observando la tabla, por lo cual nos
quedamos con el primer valor:
f’(2.1)=3.617325
8. Utilizamos el siguiente código para el método de Romberg:
clc; clear; close all

f = @(x) log(x);
a = 1;
b = 2.5;
n = 20;

h=b-a;
r = zeros(2,n+1);
fprintf('\nTabla de integración de Romberg:\n');
fprintf('\n %11.8f',r(1,1));

for i = 2:n
sum = 0;
for k = 1:2^(i-2)
sum = sum+f(a+(k-0.5)*h);
end
r(2,1)=(r(1,1)+h*sum)/2;
for j = 2:i
l = 2^(2*(j-1));
r(2,j)=r(2,j-1)+(r(2,j-1))-r(1,j-1)/(l-1);
end
for k = 1:i
fprintf(' %11.8f',r(2,k));
end

fprintf('\n\n');
h=h/2;
for j = 1:i
r(1,j) = r(2,j);
end
end
disp(['El valor de la integración es igual a: ' num2str(r(end,1))])

Con el cuál nos da que la integración es:


9.

10. El método de Simpson compuesto lo realizaremos por medio del siguiente


código de Matlab:
clear all
clc
disp('====================================')
disp(' SIMPSON COMPUESTA')
disp('====================================')
format long
syms x
f=input('f(x): ');
g=inline(f);
a=input('Ingrese Limite Inferior: ');
b=input('Ingrese Limite Superior: ');
n=input('Ingrese la mitad de intervalos: ');
h=(b-a)/(2*n);
%CALCULANDO LA INTEGRAL
s1=0;
s2=0;
for j=1:2:n-1
s1=s1+g(2*j);
end
for k=1:2:n
s2=s2+g(2*k-1);
end
disp('El valor de la integral aproximada será:')
I=(h/3)*(g(a) +2*s1 + 4*s2 +g(b) )
Lo cual nos da como resultado:

11. Este ejercicio se realizó por medio del mismo código del ejercicio anterior,
por el cual dio el siguiente resultado:

También podría gustarte