Mathematical Analysis">
Tarea 2 Metodos Numericos
Tarea 2 Metodos Numericos
Tarea 2 Metodos Numericos
Código:
>> x=[8.1,8.2,8.3,8.4,8.5,8.6,8.7];
>>
y=[16.944099,17.25390007,17.56492,17.87715,18.190562,18.505155,18.8209103
];
>> plot(x,y,'.','markersize',20)
>> v=[1, 8.1, 65.61, 531.441, 4304.6721, 34867.84, 282429.5;1 8.2 67.24 ;
51.368 4521.218 37073.984 304006.671;1 8.3 68.29 571.787 4745.832
39390.4064 326940.37;1 8.4 70.56 592.704 4978.714 41821.19 351298.03;1
8.5 72.25 614.125 5220.0625 44370.53 377149.5;1 8.6 73.96 636.056
5470.0816 47042.7018 404567.24;1 8.7 75.69 658.503 5728.976 49842.092
433626.2]
v =
1.0e+05 *
>> a=v\y'
aa=a(end:-1:1)'
Pregunta 2
Pregunta 3
clear all;
close all;
clc;
%%
syms x;
%Data
%Input data
n=input('Enter no. de nodos:'); %numero de nodos
%enter x values
a=input('Enter los valores de x:');
if length(a)==n
b=input('Enter los valores de y:');
%calculo de coeficientes
for i=1:n
for j=1:n
c.c(i,j)=(a(1,i)-a(1,j));
end
end
c=c.c;
q=size(c);
c=c';
c(c==0)=[];
c=reshape(c,q(2)-1,q(1));
c=c';
j=1;
for i=1:n
d.d(i,j)=prod(c(i,:));
end
d=d.d;
d=d';
for i=1:n
coff.coff(i,j)=b(1,i)./d(1,i);
end
coff=coff.coff;
coff=coff'; %coeficientes
%%
for i=1:n
for j=1:n
p.p(i,j)=(x-a(1,j));
end
end
p=p.p;
m=size(p);
p=p';
p(1:n+1:end)=[];
p=reshape(p,m(2)-1,m(1));
%%
p=prod(p);
pol=coff.*p;
pol=sum(pol); %polinomio de Lagrange
%%
l=input('Enter el valor a para calcular el valor b');
output=subs(pol,l);
%%
%Displaying output
disp('');
fprintf('Value of input x:=%f\n',double(output));
%%
if l>max(a)
x=min(a):0.1:l;
y=subs(pol,x);
plot(x,y,'r');
xlabel('X')
ylabel('Y')
else
x=min(a):0.1:max(a);
y=subs(pol,x);
plot(x,y,'r');
xlabel('X')
ylabel('Y')
end
else
display('Error: Valores de x exceden al numero de nodos')
end
%End of code
if length(y)~=length(x)
disp('x Y y no son de la misma longitud ');
end
n = length(x)-1;
h = x(2:n+1)-x(1:n);
%% a
a=y;
%% l
for i=1:n
l(i)=(a(i+1)-a(i))/h(i);
end
l(n+1)=0;
%% m
for i=2:n
m(i)=3*(l(i)-l(i-1));
end
%---------------------------------------
m(1)=0; %condicion inicio de frontera
m(n+1)=0; %condicion fin de frontera
A(1,1) = 1;
for i=2:n
A(i,i-1:i+1) = [h(i-1) 2*(h(i-1)+h(i)) h(i)];
end
A(n+1,n+1) = 1;
%% c
c=(A\m')';
%% b
for i=1:n
b(i)=l(i)-h(i)*(2*c(i)+c(i+1))/3;
end
%% d
for i=1:n
d(i)=(c(i+1)-c(i))/(3*h(i));
end
X=sym('X');
for i=1:n
s(i)=a(i)+b(i)*(X-x(i))+c(i)*(X-x(i))^2+d(i)*(X-x(i))^3;
end
% grafica
figure(1)
grid on
plot(x,y,'o','MarkerSize',10,'MarkerEdgeColor','b','MarkerFaceColor','b')
for i=1:n
figure(2)
grid on
xx=x(i):1/100:x(i+1);
ezplot(s(i),xx)
hold on
end
axis([min(x) max(x) min(y) max(y)])
%% Mostrar datos
x,y,A,h,l,m,a,b,c,d
%% Para mostrar las ecuaciones interpoladoras
for i=1:n
disp('-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
_-_-_-_-')
disp('entre xi y xf : '),x(i),x(i+1)
pretty((expand((vpa(s(i),5)))))