4ta PrÁctica de Metodos Numericos

14
CUARTA PRÁCTICA DE METODOS NUMERICOS Alvaro, Alvarado Arista. 1. Escribir un programa que calcule la media de un conjunto de datos. El algoritmo es: function media n=input('ingrese el numero de datos\n'); f=0; for i=1:n m=input('ingrese los datos\n'); f= f + m; end fprintf('la media será es %6.2f\n',f/n) Otra manera seria ingresar datos en forma de matriz y aplicar el comando mean.

Transcript of 4ta PrÁctica de Metodos Numericos

Page 1: 4ta PrÁctica de Metodos Numericos

CUARTA PRÁCTICA DE METODOS NUMERICOS

Alvaro, Alvarado Arista.

1. Escribir un programa que calcule la media de un conjunto de datos.

El algoritmo es:

function media n=input('ingrese el numero de datos\n'); f=0; for i=1:n m=input('ingrese los datos\n'); f= f + m; end fprintf('la media será es %6.2f\n',f/n)

Otra manera seria ingresar datos en forma de matriz y aplicar el comando mean.

Page 2: 4ta PrÁctica de Metodos Numericos

2. Escribir un programa que calcule la varianza y la desviación estándar de un conjunto de datos.

El algoritmo es el siguiente:

function varianza n=input('ingrese el numero de datos\n'); f=0; g=0; for i=1:n m=input('ingrese los datos\n') f= f + m; g = g + (m^2); end me=f/n po=g/n var=po-(me^2) fprintf('la varianza sera es %6.2f\n',var) fprintf('la desviacion estandat sera es %6.2f\n',sqrt(var))

3. hallar la media y la desviación estándar de:

Xi Yi

0.15 4.4964

0.40 5.1284

0.60 5.6931

1.01 6.2884

1.50 7.0989

2.20 7.5507

2.40 7.5106

2.70 8.0756

2.90 7.8708

3.50 8.2403

3.90 8.5303

4.40 8.7394

4.60 8.9981

5.10 9.1450

6.60 9.5070

7.60 9.9115

El algoritmo es el siguiente:

Page 3: 4ta PrÁctica de Metodos Numericos

function medydst n=str2num(char(inputdlg('ingrese el numero de datos a ingresar'))); x=[]; y=[]; for i=1:n x(1,i)=str2num(char(inputdlg('ingrese los valores de x:'))); end for j=1:n y(1,j)=str2num(char(inputdlg('ingrese los valores de y:'))); end mx=sum(x)/n; vx=sum((x.^2)/n); my=sum(y)/n; vy=sum((y.^2)/n); fprintf('la media de los datos x es = %g\n',mx) fprintf('la desviacion estandar de los datos x es = %g\n',sqrt(vx-

(mx^2))) fprintf('la media de los datos y es = %g\n',my) fprintf('la desviacion estandar de los datos y es = %g\n',sqrt(vy-

(my^2)))

Ingresando el valor de n:

Ingresando los valores de x: ……………….

ingresando los valores de y: ……………….

4. Escribir un programa para aproximación a una recta un conjunto de datos por el método de mínimos

cuadrados; incluir en dicho programa la gráfica de la recta, graficar el conjunto de datos, el coeficiente

de correlación dado por 𝑟 = 1− ( yi− a∗xi+b

2ni=0

yi−M 2ni=0

) , donde M es la media de los Yi.

Escoger r positivo si la pendiente de la recta es positivo y r negativo si la pendiente es negativa. También

que muestre las ecuaciones normales.

Page 4: 4ta PrÁctica de Metodos Numericos

Los datos son los siguientes:

X 4 5 2 5 6 7 1 8 3 7

Y 5 6 4 5 7 10 3 11 4 9

El algoritmo es:

function mcuadrado n=str2num(char(inputdlg('ingrese el numero de datos\n'))); x=[]; y=[]; for i=1:n x(1,i)=str2num(char(inputdlg('ingrese los valores de x:'))); end for j=1:n y(1,j)=str2num(char(inputdlg('ingrese los valores de y:'))); end xy=sum(x.*y); x2=sum(x.^2); sx=sum(x); sy=sum(y); m=(sy/n); a=(n*xy-sx*sy)/(n*x2-(sx^2)); b=(sy*x2-xy*sx)/(n*x2-(sx^2)); r=sqrt(1-(sum((y-(a*x+b)).^2))/(sum((y-m).^2))) x_=linspace(min(x)-1,max(x)+1,100); y_=a*(x_)+b; plot(x_,y_,'r',x,y,'*'),ylabel(strcat('r=',num2str(r))),title(strcat('

y=',num2str(a),'x+',num2str(b)));axis square

Page 5: 4ta PrÁctica de Metodos Numericos

5. Hallar la recta por el método de mínimos cuadrados que se ajuste mejor al conjunto de datos. Escribir

las ecuaciones normales.

Xi Yi

4 5

5 6

2 4

5 5

6 7

7 10

1 3

8 11

3 4

7 9

El algoritmo es el mismo solo cambiara en la última fila ….

plot(x_,y_,'r',x,y,'*'),xlabel(strcat('la ecuación normal es y=-

',num2str(a),'x+c')),ylabel(strcat('r=',num2str(r))),title(strcat('y='

,num2str(a),'x+',num2str(b)));axis square

6. Escribir un programa para aproximar a un polinomio de grado K un conjunto de datos por el método

de mínimos cuadrados. Incluir en dicho programa la gráfica del polinomio, la gráfica del conjunto de

datos, el coeficiente de correlación dado por 𝑟 = 1 − ( yi−P xi

2ni=0

yi−M 2ni=0

) , donde M es la

media de los Yi.

Trabajaremos con los siguientes datos:

X 4 5 2 5 6 7 1 8 3 7

Y 5 6 4 5 7 10 3 11 4 9

Page 6: 4ta PrÁctica de Metodos Numericos

El algoritmo será:

function mcg n=str2num(char(inputdlg('ingrese el numero de datos n'))); k=str2num(char(inputdlg('ingrese el grado al que se va ha aproximar

K'))); x=[]; y=[]; for i=1:n x(1,i)=str2num(char(inputdlg('ingrese los valores de x:'))); end for j=1:n y(1,j)=str2num(char(inputdlg('ingrese los valores de y:'))); end x y m=[]; d=[]; e=-1; for a=1:(k+1) m(a,1)=sum(y.*(x.^(a-1))); end for b=1:(k+1) e=e+1; for c=1:(k+1) d(c,b)=sum(x.^(e+c-1)); end end m d f=inv(d)*m g=num2str(f(1,1)); for h=1:k l=g; p=num2str(f(h+1,1)); q=strcat(l,'+',p,'x^',num2str(h)); g=q end A=[]; w=[]; C=[]; for z=1:n C=x(1,z); for v=1:(k+1) w(1,v)=(C.^(v-1)); end A(1,z)=sum((f').*w); w=[]; end me=sum(y)/n; R=sqrt(1-(sum((y-A).^2))/(sum((y-me).^2))) x_=linspace(min(x),max(x),100); D=[]; E=[]; for r=1:100 D=x_(1,r); for F=1:(k+1) E(1,v)=(D.^(F-1)); end G(1,r)=sum((f').*E); E=[];

Page 7: 4ta PrÁctica de Metodos Numericos

end plot(x_,G,'r',x,y,'*'),title(strcat('la ecuación normal es

y=-',g)),ylabel(strcat('r=',num2str(R)));axis square

Ingresamos los valores y la condición…..

La gráfica estará dado por:

Page 8: 4ta PrÁctica de Metodos Numericos

7. Obtener la parábola por el método de mínimos cuadrados que se aproxima a la función 𝑓(𝑥) = x3

en

los puntos -1, 0, 8. ¿Cuáles son las ecuaciones normales? ¿Interprete el coeficiente de correlación?

X -1 0 8

Y -1 0 2

Al algoritmo anterior se le adiciona….

X=-.5/f(1,1) Y=2*f(1,1) Z=f(2,1) OR=strcat(num2str(X),'ln',num2str(Y),'x+',num2str(Z),'+C'); fprintf('la ecuación ortonormal es =%s\n',OR)

Page 9: 4ta PrÁctica de Metodos Numericos

NOTA: El valor de R=1 en la grafica significa que no existe error o que es ínfimo.

8. Considere los puntos {(-2, -3), (-1, -6), (0, -5), (1, 1), (2, 13)}

Utilizando el programa anterior:

a. Determine el polinomio de grado 3 por el método de mínimos cuadrados que se ajuste a los

datos. Indicar las ecuaciones normales, coeficiente de correlación.

Page 10: 4ta PrÁctica de Metodos Numericos

b. Determine el polinomio por el método de mínimos cuadrados que se ajuste a los datos.

Indicar las ecuaciones normales, coeficiente de correlación.

c. Determine la recta por el método de mínimos cuadrados que se ajuste a los datos. Indicar las

ecuaciones normales, coeficiente de correlación.

Page 11: 4ta PrÁctica de Metodos Numericos

d. Explicar sus resultados.

A medida que aumentamos el grado del polinomio de una aproximación de datos; abra mayor

posibilidad de que el error sea menor.

9. Escribir un programa que calcule el producto de dos vectores en 𝑅𝑛 .

El algoritmo es:

function pro n=str2num(char(inputdlg('ingrese el numero de datos los ambos

vectores'))); x=[]; y=[]; for i=1:n x(1,i)=str2num(char(inputdlg('ingrese los valores de x:'))); end for j=1:n y(1,j)=str2num(char(inputdlg('ingrese los valores de y:'))); end fprintf('el producto de los 2 vectores es') x.*y

Los datos son:

X=[1 2 3] y el vector Y=[5 6 8]

Page 12: 4ta PrÁctica de Metodos Numericos

10. Escribir un programa que calcule la norma de un vectores en 𝑅𝑛 .

El algoritmo es el siguiente:

function mod n=str2num(char(inputdlg('ingrese el numero de datos n'))); x=[]; for i=1:n x(1,i)=str2num(char(inputdlg('ingrese los valores del vector:'))); end r=sqrt(sum(x.^2)); fprintf('el valor de la norma del vector es =%f\n',r)

11. La moda es el elemento que más se repite de un conjunto de datos. Escribir un programa que calcule

la moda de un conjunto de datos.

El algoritmo esta dado por:

function moda n=str2num(char(inputdlg('ingrese el numero de datos'))); x=[]; y=[]; for a=1:n x(1,a)=str2num(char(inputdlg('ingrese los valores a analizar:'))); end fprintf('los numeros ingresados son:') x for b=1:n c=x(1,b); e=0; for d=1:n if c==x(1,d) e=e+1; end end y(1,b)=e; end fprintf('numero de repeciones') y

Page 13: 4ta PrÁctica de Metodos Numericos

f=max(y); h=[]; j=0; for g=1:n if f==y(1,g) j=j+1; h(1,j)=g; end end fprintf('la moda de los datos es = %d\n',x(1,h(1,1)))

12. Dado un numero de día en un determinado año encuentre el día, mes y año al que corresponde,

sabiendo que enero, marzo, mayo, julio, octubre y diciembre tienen 31 días y que febrero tiene 28 ó 29

días según sea año normal o bisiesto. Por ejemplo el día 300 del año 2000 es 26/10/2000.

Para el ejemplo se considerara una fecha = 300 del año 2000

El algoritmo es:

function numdia a=str2num(char(inputdlg('ingrese el año'))); d=str2num(char(inputdlg('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)

Page 14: 4ta PrÁctica de Metodos Numericos

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) 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 = %s\n',g) else fprintf('el dia %d es incorecto\n',d) end