Raíz cuadrada usando series de Taylor

Alberto Larrauri

/* La serie de Taylor es una representación de cualquier función como un polinomio de infinitos términos:

Taylor

En el caso concreto de la raíz cuadrada:

raiz….

Podemos comprobar como a partir del 2 sumando cada miembro de la serie se forma multiplicando el anterior por “(x-a)”, por el siguiente número impar (3, 5, 7…) y por (-1), y dividiéndolo para el puesto que ocupaba el término anterior en la serie, por 2 y por “a”. Nuestro programa utilizará esto para calcular los términos de la serie. */



/*Este programa calcula la raíz cuadrada de un número dado con una 
precisión de hasta la millonésima usando la serie de Taylor.*/

#include<iostream>
#include<stdlib.h>
using namespace std;
void cifras(); /*Calcula el número de cifras enteras de nuestro 
número y el número desde el cual vamos a aproximarnos a la raíz buscada.*/
void valor(); /*Calcula el valor absoluto del término actual de la 
serie de Taylor y lo guarda en la variable valorsuma. */
int serie,aprox,miniaprox;
double number,r,menos,suma,valorsuma;

int main(){
cout<<"Calculadora de raices cuadradas"<<endl;
cin>>r;
if(r==0){
cout<<"0"<<endl;
system("pause");
return 0;
}

cifras();
menos=r-aprox;
number=miniaprox;
suma=menos/(2*miniaprox);
serie=1;
int paridad;
valor();
while(valorsuma > 0.000001){
number=number+suma;
/*Calculamos el siguiente término de la serie */
suma=-suma*menos*(2*serie - 1)/(2*(serie+1)*aprox);
valor();
serie++;
}
cout.precision(7); //Para que cout nos muestre 7 decimales.
cout<<number<<endl;

system("pause");
return 0;
}

void cifras(){
int a=r;
int digito=0;
aprox=1;
do{
aprox=aprox*10;
digito=digito+1;
a=a/10;
}while(!a==0);
aprox=aprox/10;
int par=digito%2;
int cifraraiz;
switch(par){
case 0:
aprox=aprox/10*81;
cifraraiz=(digito-2)/2;
miniaprox=9;
break;
case 1:
aprox=aprox*9;
cifraraiz=(digito-1)/2;
miniaprox=3;
break;
}
for(int j=0; j<cifraraiz; j++){
miniaprox=miniaprox*10;
}
}

void valor(){
valorsuma=(suma>0)? suma: -suma;
}

Anuncios
Esta entrada fue publicada en Informática e Internet. Guarda el enlace permanente.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s