Otras funciones
Funciones definidas por intervalos
Definimos la función escalón H(x) o función de Heaviside
La función H(x-a), es una traslación a de la función escalón, se define de forma análoga.

Esta función es importante para definir funciones por intervalos, como el pulso rectangular

Sea la función
Expresamos la función f(x) en términos de la función escalón H(x-a)
f=@(x) (heaviside(x+1)-heaviside(x)).*(1+x)+(heaviside(x)-heaviside(x-1)).*(1-x); fplot(f,[-1.5,1.5]) grid on xlabel('x') ylabel('y') title('Función escalón')
Extensión periódica de una función
Consideremos la función f(x) definida en el intervalo (-1,1) en color rojo, la hacemos periódica de periodo P=2 repitiendo esta función a la derecha y a la izquierda, tal como se muestra en la figura
Una función periódica cumple que f(x)=f(x+P), siendo P el periodo
El problema que se presenta ahora, es la de representar una función periódica con MATLAB
Por ejemplo, f(-0.8), tiene el mismo valor que las abscisas f(1.2), f(3.2),... (puntos de color azul)
Por ejemplo, f(0.8), tiene el mismo valor que las abscisas f(2.8), f(4.8),... (puntos de color rojo)
El código que convierte 1.2, 3.2, 5.2.. en -0.8 es
El código que convierte 2.8,4.8, 6.8.. en 0.8 es
f=@(x) (heaviside(x+1)-heaviside(x)).*(1+x)+(heaviside(x)-heaviside(x-1)).*(1-x); P=2; %periodo pf=@(x) f(x-P*round(x/P)); %función periódica fplot(pf,[-3,5]) grid on xlabel('x') ylabel('y') title('Función periódica')
Sea la función f(x)=1-x2 definida en el intervalo (-2,2). La hacemos función periódica de perido P=4
f=@(x) 1-x.^2; %función P=4; %periodo pf=@(x) f(x-P*round(x/P)); %función periódica fplot(pf,[-8,8]) grid on xlabel('x') ylabel('y') title('Función periódica')
Consideramos ahora la función f(x) definida en el intervalo (0,2) en color rojo. La hacemos periódica de periodo P=2. La fórmula para hacerla periódica es distinta.
Por ejemplo, f(0.2), tiene el mismo valor que las abscisas f(2.2), f(4.2),... (puntos de color azul)
El código que convierte 2.2, 4.2, 6.2... en 0.2, es el resto de la división de dichos números entre 2,
f=@(x) (heaviside(x)-heaviside(x-1)).*x+(heaviside(x-1)-heaviside(x-2)).*(2-x); P=2; %periodo pf=@(x) f(x-floor(x/P)*P); %función periódica fplot(pf,[-4,6]) grid on xlabel('x') ylabel('y') title('Función periódica')
En la página titulada Oscilaciones de una columna de líquido definimos la función
Representamos la función periódica hasta el instante τ=20
f=@(t) t.*(sqrt(2)-t/4); P=4*sqrt(2); %periodo pf=@(t) f(t-P*floor(t/P)); %función periódica fplot(pf,[0,20]) grid on ylim([0,2.1]) xlabel('\tau') ylabel('z') title('Oscilaciones de una columna de líquido')
Funciones recursivas
Números de Fibonacci
f0=0, f1=1, f2=1, f3=2, f4=3, f5=5, f6=8, f7=13, f8=21...
Los dos primeros números son el 0 y el 1. El tercero f2, se obtiene sumando el primero y segundo. El cuarto f3, se obtiene sumando el segundo y tercero y así, sucesivamente.
fn=fn-1+fn-2, n=2,3,4,...
Creamos un función
function y=fibonacci(n) if n==0 y=0; elseif n==1 y=1 else y=fibonacci(n-1)+fibonacci(n-2); end end
Probamos la función
>> fibonacci(8) ans = 21
Creamos una versión que devuelve la serie de números de Fibonacci f0, f1, ...fn
function Y=fibonacci_1(n) Y=[0,ones(1,n)]; for i=3:n+1 Y(i)=Y(i-1)+Y(i-2); end end
>> fibonacci_1(8) ans = 0 1 1 2 3 5 8 13 21
Factorial de un número
Definiremos una nueva versión de la función que calcula el factorial de un número n, n!, que denominaremos,
n!=n·(n-1)·(n-2)...3·2·1
function res=factorial_r(n) if n==0 res=1; else res=n*factorial_r(n-1); end end
Probamos la función
>> factorial_r(4) ans = 24
Polinomios de Hermite
Los primeros seis polinomios de Hermite son los siguientes.
H0(x)=1
H1(x)=2x
H2(x)=4x2-2
H3(x)=8x3-12x
H4(x)=16x4-48x2+12
H5(x)=32x5-160x3+120x
Todos los polinomios de Hermite de orden n>2 se pueden expresar en términos de los dos primeros polinomios H0(x) y H1(x), de orden cero y uno respectivamente, mediante la siguiente relación de recurrencia.
El código de la función recursiva
function res=hermite(n, x) if n==0 res=1; elseif n==1 res=2*x; else res=2*x*hermite(n-1,x)-2*(n-1)*hermite(n-2,x); end end
Probamos la función
>> hermite(5,2) ans = -16
Triángulo de Pascal

El triángulo de Pascal es una disposición de números tales que cada fila corresponde a los coeficientes del binomio (a+b)m. Por ejemplo la fila 3 es (a+b)3=1a3+3a2b+3ab2+1b3
Como podemos apreciar la fila m, se puede obtener a partir de la fila m-1, observando que Rm(i)=Rm-1(i-1)+Rm-1(i), para i=2,....m. Con Rm(1)=1 y Rm(m+1)=1
function Y =pascal(m) if m==1 Y=[1,1]; else Y=pascal(m-1); A=zeros(1,m-1); for i=1:m-1 A(i)=Y(i)+Y(i+1); end Y=[1,A,1]; end end
>> pascal(5) ans = 1 5 10 10 5 1
El número π
Para calcular la longitud de una circunferencia, comenzamos con el perímetro de un cuadrado, después con un octógono, un polígono regular de 16 lados y así, sucesivamente
En la figura se muestra un polígono regular de ocho lados
n=2^3; %ocho lados x0=cos(pi/n); y0=sin(pi/n); for i=1:n x1=cos(pi/n+2*i*pi/n); y1=sin(pi/n+2*i*pi/n); line([x0,x1],[y0,y1]) x0=x1; y0=y1; end axis equal grid on ylim([-1.1,1.1])

Calculamos la longitud del lado an un polígono regular de n lados inscrito en la circunferencia de radio R, (en color rojo).
Del mismo modo, obtenemos la longitud del lado de un polígono regular inscrito de 2n lados (en color azul)
Teniendo en cuenta la relación trogonométrica
Establecemos la relación entre an y a2n y por tanto, entre el perímetro Pn del polígono regular de n lados y el perímetro P2n del polígono regular de 2n lados.
Tomando R=1, empezamos con el cuadrado
Definimos la función auxiliar recursiva
function z = calculo_pi(n) if n>0 z=sqrt(2+calculo_pi(n-1)); else z=0; end end
En el script, calculamos el resto del perímetro dividido entre dos y lo comparamos con el número π
format long for n=1:10 z=2^n*sqrt(2-calculo_pi(n-1)); end disp([z; pi])
3.141591421504635 3.141592653589793