Está en la página 1de 21

Pregunta 1

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 *

0.0000 0.0001 0.0007 0.0053 0.0430 0.3487 2.8243


0.0000 0.0001 0.0007 0.0055 0.0452 0.3707 3.0401
0.0000 0.0001 0.0007 0.0057 0.0475 0.3939 3.2694
0.0000 0.0001 0.0007 0.0059 0.0498 0.4182 3.5130
0.0000 0.0001 0.0007 0.0061 0.0522 0.4437 3.7715
0.0000 0.0001 0.0007 0.0064 0.0547 0.4704 4.0457
0.0000 0.0001 0.0008 0.0066 0.0573 0.4984 4.3363

>> 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

Enter no. de nodos:5


Enter los valores de x:[-1 -0.5 0 0.5 1]
Enter los valores de y:[1 0.9998 1 0.9998 1]
Enter el valor a para calcular el valor b 0.25
Value of input x:=0.999938
>>
Pregunta 4
Pregunta 5
Pregunta 6 y 7
Pregunta 8
Pregunta 9
Aquí está el código de Matlab para el spline cúbico natural, no se pudo adjuntar a la PC2 puesto
que solo te permitía subir un PDF al Moodle. Y convertir todo el PDF de los escaneos a Word para
poder agregar el código y volverlo a convertir a PDF es trabajoso.

disp('spline cúbico natural o con frontera libre')


format short
%% datos
x=input('Ingrese Los valores de x [x0 ...xf] : ');
y=input('Ingrese Los valores de y [y0 ...yf] : ');

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)))))

También podría gustarte