Este documento presenta 12 soluciones de código en MATLAB para problemas de métodos numéricos. Las soluciones incluyen funciones para calcular la media, varianza, coeficiente de correlación, mínimos cuadrados, producto escalar, norma de un vector, moda y conversión de días a fecha. Cada solución presenta el código de la función, un ejemplo de uso y los resultados obtenidos.
Asistencia Tecnica Cartilla Pedagogica DUA Ccesa007.pdf
TERCERA PRACTICA
1. JOHN ROJAS ROSADO
TERCERA PRACTICA MATLAB
METODOS NUMERICOS
1_ SOLUCION
function media
x=input('ingrese los datos en forma de vector : ');
m=sum(x)/length(x);
fprintf(' media = %f n',m)
Probamos con x=[1 2 3 4 5 6 7 8 9]
>> media
ingrese los datos en forma de vector : [1 2 3 4 5 6 7 8 9]
media = 5.000000
>>
2_ SOLUCION
function varian
x=input('ingrese datos en forma de vector : ');
a=sum(x)/length(x);
b=sum(x.^2)/length(x);
v=b-a^2;
fprintf('varianza = %f desviacion estandar =
%fn',v,sqrt(v))
3_SOLUCION
Usamos la solucion del problema 2
a)
>> varian
ingrese datos en forma de vector : [0.15 0.4 0.6 1.01 1.5 2.2 2.4
2.7 2.9 3.5 3.8 4.4 4.6 5.1 6.6 7.6]
varianza = 4.484961 desviacion estandar = 2.117773
>>
2. JOHN ROJAS ROSADO
b)
>> varian
ingrese datos en forma de vector : [4.4964 5.1284 5.6931 6.2884
7.0989 7.5507 7.5106 8.0756 7.8708 8.2403 8.5303 8.7394 8.9981
9.1450 9.9115]
varianza = 2.258825 desviacion estandar = 1.502939
>>
4_SOLUCION
function coef
x=input('ingrese las abscisas en forma de vector : ');
y=input('ingrese las ordenas en forma de vector : ');
a=[sum(x.^2) sum(x);sum(x) 2];
b=[sum(y.*x);sum(y)];
c=(inv(a)*b)';
fprintf('%fx%fn',c(1),c(2))
a1=c(1);b1=c(2);
r=sqrt(1-sum((y-(a1*x+b1)).^2)/sum((y-
sum(y)/length(y)).^2));
hold on
plot(x,y,'*')
x=[0:0.01:10];
y=a1*x+b1;
plot(x,y,'r')
hold off
if a1>0
fprintf('coeficiente de correlacion = %fn',r)
else
fprintf('coeficiente de correlacion = %fn',-r)
end
3. JOHN ROJAS ROSADO
5_SOLUCION
Este problema es una aplicacion del problema 4
x=[4 5 2 5 6 7 1 8 3 7]
y=[5 6 4 5 7 10 3 11 4 9]
>> coef
ingrese las abscisas en forma de vector : [4 5 2 5 6 7 1 8 3 7]
ingrese las ordenas en forma de vector : [5 6 4 5 7 10 3 11 4 9]
1.344394x-0.265446
coeficiente de correlacion = 0.922223
>>
GRAFICO
4. JOHN ROJAS ROSADO
6_SOLUCION
function minipoly
fprintf(' MINIMO CUADRADO n')
x=input('ingrese las abcisas en forma de vector : ');
y=input('ingrese las ordenadas en forma de vector : ');
n=input('grado de polinomio a aproximarse : ');
z=length(y);
a=zeros(n+1);
b=zeros(n+1,1);
d=zeros(1,n+1);
for i=1:n+1
for j=1:n+1
a(i,j)=sum(x.^(2*n+2-i-j));
end
end
for i=1:n+1
b(i,1)=sum(y.*x.^(n+1-i));
end
c=(inv(a)*b)';
x1=-8:0.01:8;
5. JOHN ROJAS ROSADO
h=length(x1);
y1=zeros(1,h);
fx=zeros(1,n+1);
for k=1:h
for i=1:n+1
d(i)=x1(k)^(n+1-i);
end
y1(k)=sum(c.*d);
end
hold on
plot(x,y,'*')
plot(x1,y1,'r')
for k=1:z
for i=1:n+1
d(i)=x(k)^(n+1-i);
end
fx(k)=sum(c.*d);
end
m=sum((y-fx).^2);
p=sum((y-sum(y)/length(y)).^2);
r=sqrt(1-m/p);
fprintf('coefiente de correlacion = %fn',r)
coeficientes_del_polinomio=c
7_SOLUCION
Este problema es una aplicacion del problema 6
>> minipoly
MINIMO CUADRADO
ingrese las abcisas en forma de vector : [-1 0 8]
ingrese las ordenadas en forma de vector : [-1 0 2]
grado de polinomio a aproximarse : 2
coefiente de correlacion = 1.000000
coeficientes_del_polinomio =
6. JOHN ROJAS ROSADO
-0.0833 0.9167 -0.0000
>>
GRAFICO
8_SOLUCION
A)
Una aplicacion del problema 6
>> minipoly
MINIMO CUADRADO
ingrese las abcisas en forma de vector : [-2 -1 0 1 2]
ingrese las ordenadas en forma de vector : [-3 -6 -5 1 13]
7. JOHN ROJAS ROSADO
grado de polinomio a aproximarse : 3
coefiente de correlacion = 1.000000
coeficientes_del_polinomio =
0.1667 2.5000 3.3333 -5.0000
>>
B)
>> minipoly
MINIMO CUADRADO
8. JOHN ROJAS ROSADO
ingrese las abcisas en forma de vector : [-2 -1 0 1 2]
ingrese las ordenadas en forma de vector : [-3 -6 -5 1 13]
grado de polinomio a aproximarse : 2
coefiente de correlacion = 0.999166
coeficientes_del_polinomio =
2.5000 3.9000 -5.0000
>>
GRAFICO
9. JOHN ROJAS ROSADO
C)
>> minipoly
MINIMO CUADRADO
ingrese las abcisas en forma de vector : [-2 -1 0 1 2]
ingrese las ordenadas en forma de vector : [-3 -6 -5 1 13]
grado de polinomio a aproximarse : 1
coefiente de correlacion = 0.796084
coeficientes_del_polinomio =
3.9000 0
>>
GRAFICO
10. JOHN ROJAS ROSADO
9)SOLUCION
function vect
A=input('ingrese el primer vector : ');
B=input('ingrese el segundo vetor : ');
if length(A)==length(B)
h=0;
for i=1:length(A)
h=A(i)*B(i)+h;
end
produc_esc=h
else
disp('el tamaño de los vectores debe ser el mismo')
end
if length(A)==3
a1=(A(2)*B(3)-A(3)*B(2));
a2=(A(1)*B(3)-A(3)*B(1));
a2=(A(1)*B(2)-A(2)*B(1));
C=[a1 -a2 a3];
11. JOHN ROJAS ROSADO
else
disp('en este caso no hay producto vectorial')
end
EJEMPLO
>> vect
ingrese el primer vector : [1 2 3 4]
ingrese el segundo vetor : [4 3 2 1]
produc_esc =
20
en este caso no hay producto vectorial
>>
10_SOLUCION
function norma
A=input('ingrese el vecto')
h=0
for i=1:length(A)
h=A(i)^2+h
end
norma_v=h
EJEMPLO
>> norma
ingrese el vector : [1 2 3 4 5 6 7 8 9]
norma_v =
285
>>
11_SOLUCION
function moda
x=input('ingrese tus datos en forma de vectores : ');
12. JOHN ROJAS ROSADO
n=length(x);
a=sort(x);
b=zeros(2,n);
c=zeros(1,n);
for k=1:n
h=0;
for i=1:n
if a(k)==a(i)
h=h+1;
b(1,k)=h;
c(1,k)=h;
b(2,k)=a(i);
end
end
end
c=sort(c);
k=c(n);
for i=1:n
if k==b(1,i)
h=i;
end
end
fprintf('la moda es = %fn',b(2,h))
EJEMPLO
>> moda
ingrese tus datos en forma de vectores : [2 4 5 1 2 4 5 2 3 2 3 4 2
2 2]
la moda es = 2.000000
>>
12_SOLUCION
function fecha
a=input('ingrese el año : ');
13. JOHN ROJAS ROSADO
d=input('ingrese la cantidad de dias : ');
if (d>0)&(d<367)
if mod(a,4)==1
k=0;
t=strcat('año no bisiesto');
else
k=1;
t=strcat('año bisiesto');
end
f=strcat('la fecha_',num2str(d),'_del
año_',num2str(a),'_pertenece a un_',t);
f
if (0<d)&(d<32)
dia=d
mes='01'
elseif ((d>31)&(d<(60+k)))
dia=d-31
mes='02'
elseif (d>59+k)&(d<=90+k)
dia=d-(59+k)
mes='03'
elseif (d>90+k)&(d<=120+k)
dia=d-(90+k)
mes='04'
elseif (d>120+k)&(d<=151+k)
dia=d-(120+k)
mes='05'
elseif (d>151+k)&(d<=181+k)
dia=d-(151+k)
mes='06'
elseif (d>181+k)&(d<=212+k)
dia=d-(181+k)
mes='07'
elseif (d>212+k)&(d<=243+k)
dia=d-(212+k)
mes='08'
elseif (d>243+k)&(d<=273+k)
dia=d-(243+k)
mes='09'
elseif (d>273+k)&(d<=304+k)
dia=d-(273+k)
mes='10'
elseif (d>304+k)&(d<=334+k)
14. JOHN ROJAS ROSADO
dia=d-(304+k)
mes='11'
else (d>334+k)&(d<=365+k)
dia=d-(334+k)
mes='12'
end
g=strcat(num2str(dia),'/',mes,'/',num2str(a));
fprintf('la fecha esta dada por = %sn',g)
else fprintf('el dia %d es incorecton',d)
end
EJEMPLO
ingrese el año : 2008
ingrese la cantidad de dias : 200
f =
la fecha_200_del año_2008_pertenece a un_año bisiesto
dia =
18
mes =
07