[go: up one dir, main page]

0% encontró este documento útil (0 votos)
22 vistas27 páginas

Class User Defined Function

El documento describe cómo definir funciones personalizadas en MATLAB. Explica que una función es un bloque de código que acepta entradas y devuelve salidas, y que definir funciones propias permite programar de manera más eficiente. Detalla la estructura básica de una función MATLAB definida por el usuario, incluyendo los nombres, entradas, salidas y cómo guardarla en un archivo .m. Además, presenta varios ejemplos de funciones definidas por el usuario.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
22 vistas27 páginas

Class User Defined Function

El documento describe cómo definir funciones personalizadas en MATLAB. Explica que una función es un bloque de código que acepta entradas y devuelve salidas, y que definir funciones propias permite programar de manera más eficiente. Detalla la estructura básica de una función MATLAB definida por el usuario, incluyendo los nombres, entradas, salidas y cómo guardarla en un archivo .m. Además, presenta varios ejemplos de funciones definidas por el usuario.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 27

Class Monday November 29 th 2021

Funciones definidas por el usuario en matlab.

a. Una función es una pieza de código de un lenguaje de programación que acepta un argumento de entrada por
parte del usuario por ejemplo la función y con una salida o respuesta.
b. La funcion ayuda a programar fácilmente, lo que permite ahorrar tiempo con el calculo que se realiza
frecuentemente.
c. Son muchas las funciones internas de matlab, pero en algún momento se tiene la necesidad de definir una
función propia.
d. La función definida por el usuario se guarda como un archivo punto m (*.m). Matlab puede utilizar el archivo si
está guardado en el directorio en el que se esta trabajando.
e. El archivo con el que se guardo la función se puede incorporar como subprograma dentro de otro programa de
mayor tamaño. Es posible construir programas extensos uniendo funciones que se pueden evaluar y depurar
independientemente.
f. Las funciones internas de matlab y las funciones definidas por el usuario poseen la misma estructura. Cada una
tiene un nombre que se le asigna a la función, una alimentación proporcionado por el usuario y la salida.

g. La primera línea, cuando se crea una función definido por el usuario, que se guarda como un
archivo (*.m), por ejemplo el archivo triangle.m es de la siguiente forma:

function [lista_valores_retorno] = triangle(lista_argumentos_entrada)


% descripción de la función
bloque de código
end

donde triangle es el nombre con que guardaré mi función.


Entre corchetes y separados por comas se colocan las valores de retorno o de salida (siempre que haya más
de uno)
Entre paréntesis también separados por comas se colocan los argumento de entrada (las variables
independientes)
h. El nombre de la función debe comenzar con letra. Puede formarse con letras, números y el guión bajo.
i. No se pueden usar nombres reservados.
j. Permite una cadena de carácteres de cualquier longitud, aunque los nombres largos no son una buena práctica
en programación.
k. Si no hay valores de retorno se omiten los corchetes y el signo igual (=); si sólo hay un valor de retorno no hace
falta poner corchetes.

Ejemplo 1: rectanglearea.m

En MATLAB una funcion se define utilizando el siguiente formato:


La primera línea, cuando se crea una función definido por el osuario
function [area] = rectanglearea(a,b)
% descripción de la función
bloque de código
end

jesus granados hernnadez


Class Monday November 29 th 2021

Dos argumentos de entrada (a,b), un solo argumento de salida [area].

Ejemplo 2: spher.m

En MATLAB una funcion se define utilizando el siguiente formato:


La primera línea, cuando se crea una función definido por el osuario
function [volume,surface] = spher(r)
% descripción de la función
bloque de código
end

Una variable de entrada (r), dos variables de salida [volume,surface].

Ejemplo 3: trajectory.m

En MATLAB una funcion se define utilizando el siguiente formato:


La primera línea, cuando se crea una función definido por el osuario
function trajectory(t,x,y)
% descripción de la función
bloque de código
end

Tres argumentos de entrada (t,x,y), ningún argumento de salida.

Primero se guarda la función como un archivo (*.m), por ejemplo rectanglearea.m


Después de guardar el archivo (rectanglearea.m) la función está a disposición para ser ejecutada solamente
desde la cammand window, desde un archivo.m script o desde otra función.
La evaluación de una función en matlab se obtiene siempre a través de los valores de retorno, que pueden ser
múltiples y matriciales. Tanto el número de argumentos como el de valores de retorno no tienen que ser fijos,
dependiendo de cómo el usuario llama a la función.

Ejercicio 1: polynomialseconddegree.m
%La función evalua un polinomio de segundo grado en el intervalo (a ≤ x ≤ b)
function [] = polynomialseconddegree(a,b)
x=a:0.01:b;
y=5*x. ^2 - 2*x +1;
plot(x,y);
end

Ejercicio 2: circleonpolarcoordinates.m
% La función grafica una parte de la circunferencia de radio 1 con centro en el origen en
% coordenada polares; dependiendo del valor que se asigne a la variable angle, si angle es 𝜋 se
% mostrará la mitad superior de la circunferencia, y si angle es 2𝜋 se
% mostrará una circunferencia completa

jesus granados hernnadez


Class Monday November 29 th 2021

function []=circleonpolarcoordinates(angle)
tetha=0:0.01:angle;
r=tetha.^0;
polar(tetha,r);
end

Una vez guardado el archivo en el directorio actual o de trabajo, se puede consultar la


ayuda sobre la funcion:

>> help circleonpolarcoordinates

La función grafica una parte de la circunferencia de radio 1 con centro en el origen en


coordenada polares; dependiendo del valor que se asigne a la variable angle, si angle es 𝜋 se
mostrará la mitad superior de la circunferencia, y si angle es 2𝜋 se
mostrará una circunferencia completa

Las variables definidas dentro de una función son


variables locales, en el sentido de que son inaccesibles
desde otras partes del programa y que no
interfieren con variables del mismo nombre definidas
en otras funciones o partes del programa. Se puede
decir que pertenecen al propio espacio de trabajo de la
función y no son vistas desde otros espacios de trabajo.
A diferencia de las variables locales, las variables
globales están disponibles para todas las partes de un
programa. En general, es mala idea definir variables globales.
Sin embargo, matlab protege al usuario del uso no
previsto de una variable global al requerir que se
identifique tanto en el ambiente de la ventana de
comandos (o en un archivo.m script) como en la
función que la usará.
Con el comando global avisa a la función para que busque
en el área de trabajo el valor de la constante de gravitación universal de Newton (G) y la constante del campo
gravitatorio (g) sobre la superficie del Planeta Tierra

Ejercicio 3: forcegravity.m
function [mass,density] = forcegravity(r)
%La función calcula la masa y la densidad del plenta Tierra.
global G;
global g;
G=6.6712e-11;
g=9.81;
mass=g*r^2/G;
volume=4*pi*r^3/3;
density=mass/volume;

jesus granados hernnadez


Class Monday November 29 th 2021

end

Ejercicio 4: factorials.m
% La función calcula el factorial de n.
function [factorial] = factorials(n)
if n==0
factorial=1;
else
while (n<0 || rem(n,1)~=0)
disp("recuerda que n debe der entero y positivo")
n=input('introduce nuevamente n=? ');
end
f=1;
for i=1:1:n
f=f*i;
end
factorial=f;
end
end

Ejercicio 5: lessernumberinsidedatalist.m
% La función calculará el menor número al interior de una lista de datos, ingresados los datos
% uno por uno con el teclado
function [lesser] = lessernumberinsidedatalist(n)
while (n<=0 || rem(n,1)~=0)
disp("recuerda que n debe ser entero y positivo")
n=input('newly enter the value of n=? ');
end
x1=input('Introduce el dato 1 ');
lesser=x1;
for i=2:1:n
fprintf('Introduce el dato %g ',i),x=input(' ');
if lesser >x
lesser=x;
end
end
end

Ejercicio 6: lessernumberinsidearrayonedimensional.m
% La función calcula el menor número al interior de un vector unidimensional, ingresados todos
% los datos al mismo tiempo en un solo vector.
% enter the elements on way of array one dimensional x=[x1,x2,x3, ... ,xn]
function [lesser] =lessernumberinsidearrayonedimensional(x)
lesser=x(1);
n=length(x);
for i=2:1:n

jesus granados hernnadez


Class Monday November 29 th 2021

if lesser>x(i)
lesser=x(i);
end
end
end

Ejercicio 7: orderinglessergreaternumbersinsidearrayonedimensional.m
% La función ordena los números de menor a mayor al interior de una matriz unidimensional,
% ingresados todos los datos al mismo tiempo en un solo vector
% La funcón regresa otro vector, como una lista de datos ordenados de menor a mayor
% enter the elements on way of array one dimensional x=[x1,x2,x3, ... ,xn]
function [x] =orderinglessergreaternumbersinsidearrayonedimensional(x)
n=length(x);
for j=1:1:n-1
greater=x(1);
for i=1:1:n-j
if greater >x(i+1)
x(i)=x(i+1);
x(i+1)=greater;
else
greater=x(i+1);
end % fin del if
end % fin del for interior (anidado)
end % fin del for exterior
end

En programación, poder definir funciones propias para ejecutarlas en un programa es de verdadera utilidad, ya que
serán la mayoría de programas que queramos crear para operar con ellos.

Para crear un fichero que contenga una función sera muy importante crear o guardar el archivo.m con el mismo
nombre de la función para su correcta ejecución posterior.

Un archivo.m puede contener varias functions. Sin embargo, solo la primera de ellas puede
ser invocada desde fuera del archivo: desde un guion, desde the command window,
otra funcion ubicada en otro archivo. ¿Cuál es la utilidad entonces de escribir varias functions
en un archivo.m? La respuesta es sencilla, a veces una function es lo suficientemente
compleja como para dividir su codigo en varias functions. A la primera function ubicada en
un archivo.m se le llama función principal y al resto funciones auxiliares. Las funciones ubicadas
en un mismo archivo pueden invocarse entre ellas, pero desde fuera del archivo solo se
puede llamar a la principal.

jesus granados hernnadez


Class Monday November 29 th 2021

Ver un primer ejercicio.

Elaborar un programa que calcule:


a. el promedio
b. la varianza
c. la desviación estándar

Las fórmulas son.

a. The mean ( ⏨
x)

n
∑ xi
i=1 x1 + x2 + x3 + ⋯ + xn
x=
⏨ =
n n

b. The variance s 2

n
∑ (x i - ⏨
x)2
i=1 x ) 2 + (x 2 - ⏨
(x 1 - ⏨ x ) 2 + (x 3 - ⏨
x ) 2 + … + (x n - ⏨
x)2
s2 = =
n-1 n-1

c. The standard deviation (s)

s = + s2

Example numerical.

x={9, 8, 10, 5, 7}

Substituyendo los datos (9, 8, 10, 5, 7) en las fórmula

5
∑ xi
i=1 9 + 8 + 10 + 5 + 7 39
a. x=
⏨ = =
5 5 5

x = 7.8

jesus granados hernnadez


Class Monday November 29 th 2021
5
∑ (x i - ⏨
x)2
2 i=1 (9 - 7.8) 2 + (8 - 7.8) 2 + (10 - 7.8) 2 + (5 - 7.8) 2 + (7 - 7.8) 2 14.8
b. s = = =
5-1 5-1 4

s 2 = 3.7

c. s = + 3.7

s = 1.923538406

average.m
% La funcion calcula el promedio
% de una lista de datos agrupados en forma de un vector
% Las datos se deben ingresar como un vector x=[x1,x2,x3, ... ,nx]
function [promedio]=average(x)
suma=0;
n=length(x);
for i=1:1:n
suma=suma+x(i);
end
promedio=suma/n;
end

jesus granados hernnadez


Class Monday November 29 th 2021

variance.m
% La funcion calcula la varianza y la desviacion estandar
% de una lista de datos agrupados en forma de un vector
% Las datos se deben ingresar como un vector x=[x1,x2,x3, ... ,nx]
function [varianza,standarddeviation]=variance(promedio,x)
n=length(x);
suma=0;
for i=1:1:n
suma=suma+(x(i)-promedio)^2;
end
varianza=suma/(n-1);
standarddeviation=sqrt(varianza);
end

parameters.m
% El programa calcula la media, la varianza y la desviacion estandar
% con una lista de datos agrupados en forma de un vector
% Las datos se deben ingresar como un vector x=[x1,x2,x3, ... ,nx]
clear all,clc
x=input('Introduce el arreglo en forma de vector? ');
n=length(x);
[promedio]=average(x)
[varianza,standarddeviation]=variance(promedio,x)% fin del programa
% La funcion calcula el promedio
% de una lista de datos agrupados en forma de un vector
% Las datos se deben ingresar como un vector x=[x1,x2,x3, ... ,nx]
function [promedio]=average(x)
suma=0;
n=length(x);
for i=1:1:n
suma=suma+x(i);

jesus granados hernnadez


Class Monday November 29 th 2021

end
promedio=suma/n;
end
% La funcion calcula la varianza y la desviacion estandar
% de una lista de datos agrupados en forma de un vector
% Las datos se deben ingresar como un vector x=[x1,x2,x3, ... ,nx]
function [varianza,standarddeviation]=variance(promedio,x)
n=length(x);
suma=0;
for i=1:1:n
suma=suma+(x(i)-promedio)^2;
end
varianza=suma/(n-1);
standarddeviation=sqrt(varianza);
end
% end program

parameters.m
% El programa calcula la media, la varianza y la desviacion estandar
% con una lista de datos agrupados en forma de un vector
% Las datos se deben ingresar como un vector x=[x1,x2,x3, ... ,nx]
clear all,clc
x=input('Introduce el arreglo en forma de vector? ');
n=length(x);
[promedio]=average(x)
[varianza,standarddeviation]=variance(promedio,x)
% end program

jesus granados hernnadez


Class Monday November 29 th 2021

Ver un segundo ejercicio.

Elaborar un programa que calcule:


a. el promedio
b. la mediana
c. la varianza
d. la desviación estándar

Las fórmulas son.

a. The mean ( ⏨
x)

n
∑ xi
i=1 x1 + x2 + x3 + ⋯ + xn
x=
⏨ =
n n

b. The Median (Md)

mediana = x n + 1 ; si n es par.
2
xn + xn
+1
2 2
mediana = ; si n es impar.
2

c. The variance s 2

n
∑ (x i - ⏨
x)2
i=1 x ) 2 + (x 2 - ⏨
(x 1 - ⏨ x ) 2 + (x 3 - ⏨
x ) 2 + … + (x n - ⏨
x)2
s2 = =
n-1 n-1

jesus granados hernnadez


Class Monday November 29 th 2021

d. The standard deviation (s)

s = + s2

Example numerical.

x={9, 8, 10, 5, 7}

Substituyendo los datos (9, 8, 10, 5, 7) en las fórmula

5
∑ xi
i=1 9 + 8 + 10 + 5 + 7 39
a. x=
⏨ = =
5 5 5

x = 7.8

b. The Median (Md)

mediana = x n + 1 ; si n es par.
2
x n + x n +1
2 2
mediana = ; si n es impar.
2

primero se ordenan los datos (9, 8, 10, 5, 7) de menor a mayor (5, 7, 8, 9, 10); n=5 datos

mediana = x n + 1 = x 5 + 1 = x 6 = x3 = 8
2 2 2

5
∑ (x i - ⏨
x)2
i=1 (9 - 7.8) 2 + (8 - 7.8) 2 + (10 - 7.8) 2 + (5 - 7.8) 2 + (7 - 7.8) 2 14.8
c. s2 = = =
5-1 5-1 4

s 2 = 3.7

d. s = + 3.7

s = 1.923538406

jesus granados hernnadez


Class Monday November 29 th 2021

average.m
% La funcion calcula el promedio
% de una lista de datos agrupados en forma de un vector
% Las datos se deben ingresar como un vector x=[x1,x2,x3, ... ,nx]
function [promedio]=average(x)
suma=0;
n=length(x);
for i=1:1:n
suma=suma+x(i);
end
promedio=suma/n;
end

jesus granados hernnadez


Class Monday November 29 th 2021

inicio
% program that claculate median
clear,clc
x = {x1 , x2 , x3 , … , xn }
% x=[x1,x2,x3, ... ,xn]
x=input('enter the elements on way of array');
n n=length(x);
for j=1:1:n-1
para j=1,∆j = 1, j = n - 1 greater=x(1);
for i=1:1:n-j
if greater >x(i+1)
greater = x1
x(i)=x(i+1);
x(i+1)=greater;
para i=1,∆i = 1, i = n - j else
greater=x(i+1);
False True end % fin del if
greater > xi+1
end % fin del for interior
end % fin delfor exterior
greater = xi+1 xi = xi+1
if rem(n,2)==0
mediana=(x(n/2)+x((n/2)+1))/2;
xi+1 = greater else
mediana=x((n+1)/2);
end
disp(x)
fprintf('\nLa mediana es %g picocurie/gramo\n',mediana)
% end program
False n True
residuo =0
2
(x n + x n )
mediana = x n + 1 2 2
+1
2 mediana =
2

mediana

fin

themedian.m
% La funcion calcula la mediana
% de una lista de datos agrupados en forma de un vector
% Las datos se deben ingresar como un vector x=[x1,x2,x3, ... ,nx]
function [mediana]=themedian(x)
n=length(x);

jesus granados hernnadez


Class Monday November 29 th 2021

for j=1:1:n-1
greater=x(1);
for i=1:1:n-j
if greater >x(i+1)
x(i)=x(i+1);
x(i+1)=greater;
else
greater=x(i+1);
end % fin del if
end % fin del for interior
end % fin delfor exterior
if rem(n,2)==0
mediana=(x(n/2)+x((n/2)+1))/2;
else
mediana=x((n+1)/2);
end
end

variance.m
% La funcion calcula la varianza y la desviacion estandar
% de una lista de datos agrupados en forma de un vector
% Las datos se deben ingresar como un vector x=[x1,x2,x3, ... ,nx]
function [varianza,standarddeviation]=variance(promedio,x)
n=length(x);
suma=0;
for i=1:1:n
suma=suma+(x(i)-promedio)^2;
end
varianza=suma/(n-1);
standarddeviation=sqrt(varianza);

jesus granados hernnadez


Class Monday November 29 th 2021

end

parameterscentral.m
% El programa calcula la: media, mediana, varianza y desviacion estandar
% con una lista de datos agrupados en forma de un vector
% Las datos se deben ingresar como un vector x=[x1,x2,x3, ... ,nx]
clear all,clc
x=input('Introduce el arreglo en forma de vector? ');
n=length(x);
[promedio]=average(x)
[mediana]=themedian(x)
[varianza,standarddeviation]=variance(promedio,x) % fin del programa
% La funcion calcula el promedio de una lista de datos agrupados en forma de un vector
% Las datos se deben ingresar como un vector x=[x1,x2,x3, ... ,nx]
function [promedio]=average(x)
suma=0;
for i=1:1:n
suma=suma+x(i);
end
promedio=suma/n;
end
% La funcion calcula la mediana
% de una lista de datos agrupados en forma de un vector
% Las datos se deben ingresar como un vector x=[x1,x2,x3, ... ,nx]
function [mediana]=themedian(x)
n=length(x);
for j=1:1:n-1
greater=x(1);
for i=1:1:n-j
if greater >x(i+1)
x(i)=x(i+1);
x(i+1)=greater;
else
greater=x(i+1);

jesus granados hernnadez


Class Monday November 29 th 2021

end % fin del if


end % fin del for interior
end % fin delfor exterior
if rem(n,2)==0
mediana=(x(n/2)+x((n/2)+1))/2;
else
mediana=x((n+1)/2);
end
end
% La funcion calcula la varianza y la desviacion estandar
% de una lista de datos agrupados en forma de un vector
% Las datos se deben ingresar como un vector x=[x1,x2,x3, ... ,nx]
function [varianza,standarddeviation]=variance(promedio,x)
suma=0;
for i=1:1:n
suma=suma+(x(i)-promedio)^2;
end
varianza=suma/(n-1);
standarddeviation=sqrt(varianza);
end
% end program

parameterscentral.m
% El programa calcula la: media, mediana, varianza y desviacion estandar
% con una lista de datos agrupados en forma de un vector
% Las datos se deben ingresar como un vector x=[x1,x2,x3, ... ,nx]
clear all,clc
x=input('Introduce el arreglo en forma de vector? ');
n=length(x);
[promedio]=average(x)
[mediana]=themedian(x)
[varianza,standarddeviation]=variance(promedio,x)

jesus granados hernnadez


Class Monday November 29 th 2021

% end program

Ver un tercer ejercicio.

Elaborar un programa que ajuste el modelo de línea recta a un conjunto de datos, por el método de mínimos
cuadrados :
a. la pendiente de la línea recta [a]
b. la intersección con el eje y [b]
c. el modelo lineal [f(x)=ax+b]
d. las graficas de el diagrama de dispersión junto con el modelo ajustado
e. el coeficiente de correlación de Karl Pearson. [r 2 ]

Las fórmulas son.

a. Slope of the straight line (a)

n n n
n ∑ xi yi - ∑ xi ∑ yi
i=1 i=1 i=1
a=
2
n n
n ∑ xi2 - ∑ xi
i=1 i=1

b. y - intercept (b)

jesus granados hernnadez


Class Monday November 29 th 2021
n n n n
∑ xi2 ∑ yi - ∑ xi ∑ xi yi
i=1 i=1 i=1 i=1
b=
2
n n
n∑ xi2 - ∑ xi
i=1 i=1

c. Linear model.

f(x) = y = ax+b

d. Dispersion diagram with the fitting linear model

f(x) = y = ax + b
y sixa

yn

y3

y2
y1

x1 x2 x3 ⋯ xn exis x

e. Karl Pearson's coefficient of correlation

n
∑ [f(xi ) - ⏨
y]2
i=1
r2 = n
∑ [y i - ⏨
y]2
i=1
n
∑ yi
i=1
ten presente que el promedio es y=

n
r= r2

Example numerical.

x={-2, -1, 0, 1, 2}

jesus granados hernnadez


Class Monday November 29 th 2021

y={ 0, 0, 1, 1, 3}

Substituyendo los datos x={-2, -1, 0, 1, 2} , y={ 0, 0, 1, 1, 3} en las fórmula; n=5 datos.

a.

5 5 5
5 ∑ xi yi - ∑ xi ∑ yi
i=1 i=1 i=1 5[x1 y1 + x2 y2 + x3 y3 + x4 y4 + x5 y5 ] - (x1 + x2 + x3 + x4 + x5 )(y1 + y2 + y3 + y4 + y5 )
a=
2
=
5 5 5 x12 + x22 + x32 + x42 + x52 - (x1 + x2 + x3 + x4 + x5 ) 2
5∑ xi2 - ∑ xi
i=1 i=1
5[(-2)(0) + (-1)(0) + (0)(1) + (1)(1) + (3)(2)] - (-2 - 1 + 0 + 1 + 2)(0 + 0 + 1 + 1 + 3) 5(0 + 0 + 0 + 1 + 6) - (0)(5) 5(7) + 0
a= = =
2
5 (-2) + (-1) + 0 + 1 + 2 2 2 2 2
- (-2 - 1 + 0 + 1 + 2) 2 5(4 + 1 + 0 + 1 + 4) - 0 2 5(10) - 0

35 7
a= =
50 10

a = 0.7

b.

5 5 5 5
∑ xi2 ∑ yi - ∑ xi ∑ xi yi
i=1 i=1 i=1 i=1
x12 + x22 + x32 + x42 + x52 (y1 + y2 + y3 + y4 + y5 ) - (x1 + x2 + x3 + x4 + x5 )(x1 y1 + x2 y2 + x3 y3 + x4 y4 + x5 y5 )
b= 2
=
5 5 5 x12 + x22 + x32 + x42 + x52 - (x1 + x2 + x3 + x4 + x5 ) 2
5∑ xi2 - ∑ xi
i=1 i=1

(-2) 2 + (-1) 2 + 0 2 + 1 2 + 2 2 (0 + 0 + 1 + 1 + 3) - (-2 - 1 + 0 + 1 + 2)[(-2)(0) + (-1)(0) + (0)(1) + (1)(1) + (3)(2)]


b=
5 (-2) 2 + (-1) 2 + 0 2 + 1 2 + 2 2 - (-2 - 1 + 0 + 1 + 2) 2

(4 + 1 + 0 + 1 + 4)(5) - (0)(0 + 0 + 1 + 6) (10)(5) - (0)(7) 50 - 0 50


b= = = =
5(4 + 1 + 0 + 1 + 4) - 0 2 5(10) - 0 50 - 0 50

b=1

c. f(x) = y = 0.7x + 1

jesus granados hernnadez


Class Monday November 29 th 2021

d.

y sixa f(x) = 0.7x + 1

yn

y3

y2
y1

x1 x2 x3 ⋯ xn exis x

e. Karl Pearson's coefficient of correlation

5
∑ [f(xi ) - y⏨] 2
i=1 [(0.7x1 + 1) - 1] 2 + [(0.7x2 + 1) - 1] 2 + [(0.7x3 + 1) - 1] 2 + [(0.7x4 + 1) - 1] 2 + [(0.7x5 + 1) - 1] 2
r2 = =
5
∑ [yi - y⏨] 2 (y1 - y⏨) 2 + (y2 - y⏨) 2 + (y3 - y⏨) 2 + (y4 - y⏨) 2 + (y5 - y⏨) 2
i=1
2 [(-2 × 0.7 + 1) - 1] 2 + [(-1 × 0.7 + 1) - 1] 2 + [(0 × 0.7 + 1) - 1] 2 + [(1 × 0.7 + 1) - 1] 2 + [(2 × 0.7 + 1) - 1] 2
r =
(0 - 1) 2 + (0 - 1) 2 + (1 - 1) 2 + (1 - 1) 2 + (3 - 1) 2
2 (-1.4) 2 + (-0.7) 2 + 0 2 + (0.7) 2 + (1.4) 2 1.96 + 0.40 + 0.49 + 1.96 4.9
r = = = = 0.8167
1+1+0+0+4 6 6
5
∑ yi
i=1 y1 + y2 + y3 + y4 + y5 0+0+1+1+3 5
ten presente que el promedio es y⏨= = = = =1
5 5 5 5

r= r2 = 0.8167

r = 0.9037

jesus granados hernnadez


Class Monday November 29 th 2021

inicio

x = {x1 , x2 , x3 , ⋯ , xn }

y = {y1 , y2 , y3 , … , yn }

sumaxy=0

sumax=0

sumay=0

% programa que calcula los parametros a y b


sumax 2 =0
% junto con Karl Pearson's coefficient of correlation.
% x=[x1,x2,x3, ... , xn]
n % y=[y1,y2,y3, ... , yn]
clear all,clc
para i=1,∆i = 1, i = n x=input('enter data in array form x= ');
y=input('enter data in array form y= ');
sumaxy=sumaxy+x i y i sumaxy=0;
sumax=0;
sumay=0;
sumax=sumax+x i
sumax2=0;
n=length(x);
sumay=sumay+y i
for i=1:1:n
sumaxy=sumaxy+x(i)*y(i);
sumax 2 =sumax 2 +x i2 sumax=sumax+x(i);
sumay=sumay+y(i);
sumax2=sumax2+x(i)^2;
end
n(sumaxy) - sumax(sumay) a=(n*sumaxy-sumax*sumay)/(n*sumax2-sumax^2);
a= b=(sumax2*sumay-sumax*sumaxy)/(n*sumax2-sumax^2);
n sumax 2 - (sumax) 2
fprintf('los parametros son a=%g y b=%g\n',a,b)
f=a*x+b;
n sumax 2 (sumay) - sumax(sumaxy) sumar1=0;
b= sumar2=0;
n sumax 2 - (sumax) 2
promedioy=sumay/n;
for i=1:1:n
jesus granados hernnadez
Class Monday November 29 th 2021
for i 1:1:n
a, b sumar1=sumar1+(f(i)-promedioy)^2;
sumar2=sumar2+(y(i)-promedioy)^2;
fin end
r2=sumar1/sumar2
r=sqrt(r2)
%end program

pendienteinterseccion.m
% La function calcula la pendiente de la recta y la interseccion con el eje y
% con dos lista de datos agrupados, cada uno, en forma de un vector
% Las datos se deben ingresar como dos vectores
% separados por una coma x=[x1,x2,x3, ... ,nx], y=[y1,y2,y3, ... ,yn]
function [a,b]=pendienteinterseccion(x,y)
sumaxy=0;
sumax=0;
sumay=0;
sumax2=0;
n=length(x);
for i=1:1:n
sumaxy=sumaxy+x(i)*y(i);
sumax=sumax+x(i);
sumay=sumay+y(i);
sumax2=sumax2+x(i)^2;
end
a=(n*sumaxy-sumax*sumay)/(n*sumax2-sumax^2);
b=(sumax2*sumay-sumax*sumaxy)/(n*sumax2-sumax^2);
end

jesus granados hernnadez


Class Monday November 29 th 2021

coefficientcorrelation.m
% La function calcula the Karl Pearson's coefficient of correlation.
% con dos listas de datos agrupados, cada una, en forma de un vector.
% Los datos se deben ingresar como dos vectores, separados por una coma
% x=[x1,x2,x3, ... ,nx], y=[y1,y2,y3, ... ,yn]. También deberan ingresar
% la pendiente de la recta (a) y la interseccion de la recta con ele eje y (b)
function [r2,r]=coefficientcorrelation(a,b,x,y)
n=length(x);
sumay=0;
for i=1:1:n
sumay=sumay+y(i);
end
f=a*x+b;
suma1=0;
suma2=0;
promedioy=sumay/n;
for i=1:1:n
suma1=suma1+(f(i)-promedioy)^2;
suma2=suma2+(y(i)-promedioy)^2;
end
r2=suma1/suma2;
r=sqrt(r2);
end

linearmodel.m
%La función grafica un diagrama de dispersion
% junto con el ajuste de linea recta
% Los datos se deben ingresar como dos vectores, separados por una coma

jesus granados hernnadez


Class Monday November 29 th 2021

% [x1,x2,x3, ... ,nx], [y1,y2,y3, ... ,yn]. También ingresar


% la pendiente de la recta (a) y la interseccion de la recta con ele eje y (b)
% y los grafica en el intervalo (x1 ≤ t ≤ x2)
function [] = linearmodel(a,b,x,y)
x1=input('Limite inferior de graficacion x1=?');
x2=input('Limite superior de graficacion x2=?');
plot(x,y,'r*')
t=x1:0.01:x2;
f=a*t+b;
hold on
plot(t,f);
xlabel('eje x')
ylabel('eje y')
title('ajuste modelo lineal')
legend('dispersion','ajuste')
end

linearfit.m
% El programa ajusta el modelo lineal a dos conjuntos de datos
% agrupados en dos vectores [x1,x2,x3, ... ,xn], [y1,y2,y3, ... , yn]
% y muestra en pantalla el diagrama de dispersion junto con
% la linea recta ajustada y los grafica en el intervalo (x1 ≤ t ≤ x2)
% Tambien calcula la pendienete de la recta (a),
% la interseccion de la recta con el eje y (b) y el coeficiente
% de correlacion de Karl Pearson
clear all,clc
x=input('Introduce el arreglo en forma de vector x=? ');
y=input('Introduce el arreglo en forma de vector y=? ');
n=length(x);
[a,b]=pendienteinterseccion(x,y)
[r2,r]=coefficientcorrelation(a,b,x,y)
linearmodel(a,b,x,y)
fprintf('El modelo ajustado es f(x)=%gx +%g\n',a,b) % fin del programa

jesus granados hernnadez


Class Monday November 29 th 2021

% La function calcula la pendiente de la recta y la interseccion con el eje y


% con dos lista de datos agrupados, cada uno, en forma de un vector
% Las datos se deben ingresar como dos vectores
% separados por una coma x=[x1,x2,x3, ... ,nx], y=[y1,y2,y3, ... ,yn]
function [a,b]=pendienteinterseccion(x,y)
sumaxy=0;
sumax=0;
sumay=0;
sumax2=0;
n=length(x);
for i=1:1:n
sumaxy=sumaxy+x(i)*y(i);
sumax=sumax+x(i);
sumay=sumay+y(i);
sumax2=sumax2+x(i)^2;
end
a=(n*sumaxy-sumax*sumay)/(n*sumax2-sumax^2);
b=(sumax2*sumay-sumax*sumaxy)/(n*sumax2-sumax^2);
end
% La function calcula the Karl Pearson's coefficient of correlation.
% con dos listas de datos agrupados, cada una, en forma de un vector.
% Los datos se deben ingresar como dos vectores, separados por una coma
% x=[x1,x2,x3, ... ,nx], y=[y1,y2,y3, ... ,yn]. También deberan ingresar
% la pendiente de la recta (a) y la interseccion de la recta con ele eje y (b)
function [r2,r]=coefficientcorrelation(a,b,x,y)
n=length(x);
sumay=0;
for i=1:1:n
sumay=sumay+y(i);
end
f=a*x+b;
suma1=0;
suma2=0;
promedioy=sumay/n;
for i=1:1:n
suma1=suma1+(f(i)-promedioy)^2;
suma2=suma2+(y(i)-promedioy)^2;
end
r2=suma1/suma2;
r=sqrt(r2);
end
%La función grafica un diagrama de dispersion
% junto con el ajuste de linea recta
% Los datos se deben ingresar como dos vectores, separados por una coma
% [x1,x2,x3, ... ,nx], [y1,y2,y3, ... ,yn]. También ingresar
% la pendiente de la recta (a) y la interseccion de la recta con ele eje y (b)

jesus granados hernnadez


Class Monday November 29 th 2021

% y los grafica en el intervalo (x1 ≤ t ≤ x2)


function [] = linearmodel(a,b,x,y)
x1=input('Limite inferior de graficacion x1=?');
x2=input('Limite superior de graficacion x2=?');
plot(x,y,'r*')
t=x1:0.01:x2;
f=a*t+b;
hold on
plot(t,f);
xlabel('eje x')
ylabel('eje y')
title('ajuste modelo lineal')
legend('dispersion','ajuste')
end
% end program

linearfit.m
% El programa ajusta el modelo lineal a dos conjuntos de datos
% agrupados en dos vectores [x1,x2,x3, ... ,xn], [y1,y2,y3, ... , yn]
% y muestra en pantalla el diagrama de dispersion junto con
% la linea recta ajustada y los grafica en el intervalo (x1 ≤ t ≤ x2)
% Tambien calcula la pendienete de la recta (a),
% la interseccion de la recta con el eje y (b) y el coeficiente
% de correlacion de Karl Pearson
clear all,clc
x=input('Introduce el arreglo en forma de vector x=? ');
y=input('Introduce el arreglo en forma de vector y=? ');
n=length(x);

jesus granados hernnadez


Class Monday November 29 th 2021

[a,b]=pendienteinterseccion(x,y)
[r2,r]=coefficientcorrelation(a,b,x,y)
linearmodel(a,b,x,y)
fprintf('El modelo ajustado es f(x)=%gx +%g\n',a,b) % fin del programa
% end program

jesus granados hernnadez

También podría gustarte