Calculo de una serie (1)

De Ejercicios

Contenido

Enunciado

Dado un vector x introducido por teclado, realiza un subalgoritmo que nos calcule la siguiente serie, teniendo en cuenta los casos en los que no sea posible obtener una solución y cuando dicha solución sea compleja:

Imagen:Serie01.png

Si algún termino de la sucesión no se puede calcular se parará el proceso y devolverá 0 (son los casos de divisor 0 y soluciones complejas).

Para calcular la raíz cuadrada y la potencia utilizad los siguientes subalgoritmos que se suponen ya implementados:

 FUNCION RaizCuadrada(a):REAL
 ENTRADAS:
   a: REAL  ''(un real positivo)''
 SALIDAS:
   ''(La raíz cuadrada de a)''

 PROCEDIMIENTO Potencia (base, exponente, VAR resultado)
 ENTRADAS: 
   base: REAL        ''(representa el número que se va a elevar)''
   exponente: ENTERO ''(representa el exponente al que se va a elevar la base, exponente>=0)''
 SALIDAS: 
   resultado: REAL   ''(devuelve el resultado de elevar la base al exponente)''

Soluciones

Diseño en pseudocódigo

FUNCION Sumatorio(x,n): REAL
ENTRADAS:
   x:ARRAY(n) DE REAL ''(representa el vector)''
   n:ENTERO ''(representa el tamaño)''
SALIDAS:
   s:REAL  ''(representa el valor del sumatario)''
VARIABLES:
   i,j,k:ENTERO
   p1,p2:REAL
   salir:LOGICO
   res:REAL
INICIO
   s=0
   i=0
   salir=FALSO
   MIENTRAS i<=n Y salir=FALSO
      SI x(i)=0 ENTONCES
         salir=VERDAD
      SINO
        p=1;
        PARA k=1 HASTA i HACER
            p1=p1*x(k);
        FIN_PARA
        SI p1/x(i)<0 ENTONCES
          salir=VERDAD;
        SINO
          p2=1
          PARA j=i HASTA n HACER
              Potencia(x(j),3,res)
              p2=p2*res
          FIN_PARA
          s = s + p2 + RaizCuadrada( p1/x(i) )
        FIN_SI
      FIN_SI
      i=i+1
   FIN_MIENTRAS
   SI salir=VERDAD ENTONCES
      s=0
   FIN_SI
   DEVOLVER s
FIN

Programa en Matlab

function s=Sumatorio( x )
% FUNCION s=Sumatorio( x )
% DESCRIPCIÓN: Dado un vector x calcular el valor de la serie dada
% ENTRADA:
%    x: ARRAY DE REALES; Valores de la serie a calcular
% SALIDA:
%    s: REAL; Resultado de la serie
% VARIABLES:
%    n,suma,posi,posj,posk,pro1,pro2,suma: ENTEROS
%    para: LÓGICO
 
n=length(x);
s=0;
posi=1;
para=false;
while (posi<=n)&&(para==false),
    if x(posi)~=0,
        pro1=1;
        for posj=posi:n,
            pro1=pro1*x(posj)^3;
        end
        pro2=1;
        for posk=1:posi,
            pro2=pro2*x(posk);
        end
        if pro2/x(posi)>=0,
            s = s + pro1+sqrt(pro2/x(posi));
        else
            para=true;
            s=0;
        end
    else
        para=true;
        s=0;
    end
    posi=posi+1;
end