José Jeremías Caballero
Servicios de Programación en MatLab
Lima - Perú
Asesorías, Cursos y Servicios de Programación En Matlab Editor, Matlab Guide, Matlab Uicontrol a nivel: Básico, Intermedio, Avanzado. Asesorías y cursos en Metodos Numericos I, II, III y IV, Matematica Computacional I, II , Programación Lineal, Programación no lineal y Optimización.
function [matriz1,Prod1,matriz2,Prod2,matriz3,Prod3,matriz4,Prod4]=prodmat(n,razon); if nargin<1 n=5; razon=0.15; end [matriz1,Prod1]=prodmat1(n,razon) [matriz2,Prod2]=prodmat2(n,razon) [matriz3,Prod3]=prodmat3(n,razon) [matriz4,Prod4]=prodmat4(n,razon) end
function [matriz1,Prod1]=prodmat1(n,razon) matriz1=1:razon:1+(n-1)*razon; Prod1=prod(matriz1); end function [matriz2,Prod2]=prodmat2(n,razon) matriz2=zeros(1,n); for i=1:n matriz2(i)=1+(i-1)*razon; end Prod2=1; for i=1:n Prod2=Prod2*matriz2(i) ; end end function [matriz3,Prod3]=prodmat3(n,razon) matriz3=zeros(1,n); Prod3=1; for i=1:n matriz3(i)=1+(i-1)*razon; Prod3=Prod3*matriz3(i) ; end end function [matriz4,Prod4]=prodmat4(n,razon) matriz4=zeros(1,n); Prod4=1; i=1; while i<=n matriz4(i)=1+(i-1)*razon; Prod4=Prod4*matriz4(i) ; i=i+1; end end
matriz1 = 1.0000 1.1500 1.3000 1.4500 1.6000 Prod1 = 3.4684 matriz2 = 1.0000 1.1500 1.3000 1.4500 1.6000 Prod2 = 3.4684 matriz3 = 1.0000 1.1500 1.3000 1.4500 1.6000 Prod3 = 3.4684 matriz4 = 1.0000 1.1500 1.3000 1.4500 1.6000 Prod4 = 3.4684
clear all
figure(1)
figure(gcf)
syms x
y1=-3*x+18;
y2=(-3*x+27)/4;
figure(gcf)
hold on
X=solve(y1==y2);
f1=inline(y1);
f2=inline(y2);
plot(X,f1(X),'*b')
fplot(char(y1),[double(X)-5
double(X)+5],'r')
fplot(char(y2),[double(X)-5
double(X)+5],'g')
hold off
clear all
figure(2)
figure(gcf)
syms x y
e1=3*x+y-18;
e2=3*x+4*y-27;
figure(gcf)
hold
on
[X,Y]=solve(e1,e2,'x','y');
plot(X,Y,'*b')
h1=ezplot(e1,[double(X)-5 double(X)+5]);
set(h1, 'Color', 'r');
h2=ezplot(e2,[double(X)-5 double(X)+5]);
set(h2, 'Color', 'g');
grid on
hold
off
|
%%
http://www.lawebdelprogramador.com/foros/Matlab/1327174-Duda_spline.html
% Hola,
estoy haciendo un .m para obtener y dibujar las splines. Primero
%introduces
los puntos (x,y) que tu quieres.
%
% El
siguiente código te permite obtener los coeficientes para cada spline:
% De esta manera, se obtiene
%
% [ A1 B1 C1 D1; A2 B2 C2 D2;............; AN BN CN
DN]
%
% El
problema, es que aún teniendo esta matriz, no sé cómo hacer para
%representar
las funciones spline (correspondiente a cada intervalo).
%Primero
hay que introducir el vecto X e Y
clear all
X=[40 45 50
55 60 65
70];
Y=[390 340 290 250 210 180
160];
N=length(X)-1;
H=diff(X);
E=diff(Y)./H;
diagsupinf=H(2:N-1);
diagprinc=2*(H(1:N-1)+H(2:N));
U=6*diff(E);
%
restricciones del spline natural
Minicial=0;
Mfinal=0;
%
construccion de la matriz de los coeficientes para el calculo de los
%
momentos
A=diag(diagprinc)+diag(diagsupinf,1)+diag(diagsupinf,-1);
%
construccion del vector independiente para el calculo de los momentos
B=U';
B(1)=B(1)-H(1)*Minicial; B(N-1)=B(N-1)-H(N)*Mfinal;
%
resolvemos el sistema y hallamos los momentos
M=A\B;
%
añadimos los dos momentos naturales extremos y lo escribimos como vector
% fila
M=[Minicial,M',Mfinal];
%
calculo de los coeficientes del polinomio cubico i-esimo en potencias
% de (x-x_i)
for i=1:N
S(i,1)=(M(i+1)-M(i))/(6*H(i));
S(i,2)=M(i)/2;
S(i,3)=E(i)-H(i)*(M(i+1)+2*M(i))/6;
S(i,4)=Y(i);
end
%
creamos los polinomios para cada
intervalo
syms x
for i=1:N
s=0;
for j=1:size(S,2)
s=s+expand(S(i,j)*(x-X(j))^(4-j));
end
Es(i,:)=s;
end
%
Es(1)--->f1---> Intervalo X [40,45)
% Es(2)--->f2---> Intervalo X [45,50)
% Es(3)--->f3---> Intervalo X [50,55)
% Es(4)--->f4---> Intervalo X [55,60)
% Es(5)--->f5---> Intervalo X [60,65)
% Es(6)--->f6---> Intervalo X [65,70)
%dibujamos los polinomios
figure(gcf)
hold on
c='rgbcmk';
for i=1:length(X)-1
F=vectorize(inline(Es(i)));
plot(linspace(X(i),X(i+1)),F(linspace(X(i),X(i+1))),c(i),'linewidth',5)
%fplot(F,[X(i) X(i+1)],'r',);
end
plot(X,Y,'linewidth',5,'color',rand(1,3))
axis([X(1) X(end) -200 500])
grid on
hold off
|