[Lenguaje C] Utilice la fórmula de Leibniz π/4≈1−1/3+1/5−1/7+⋯ para encontrar el valor aproximado de π

analizar el problema

Este problema es un proceso de solución iterativo que utiliza bucles. De manera similar a la suma acumulativa analizada anteriormente, el valor del último elemento es el valor del elemento anterior + un número regular, expresado como s=s+i. Siempre que analicemos las reglas de los datos que hay que sumar, este problema quedará solucionado, analicemos la regla (1), el numerador de cada ítem es 1. (2) El denominador del último término es el denominador del término anterior más 2. (3) El signo del primer término es positivo, y a partir del segundo término, el signo de cada término es opuesto al signo del término anterior.

Para completar el análisis, también existe una condición para finalizar el ciclo. Esto es encontrar una aproximación. Determinemos si el valor absoluto de la condición de finalización del ciclo i es mayor o igual a 10-6. Aquí necesitamos usar la función fabs() para encontrar el valor absoluto.Agregue el archivo de encabezado #include<math.h> al principio del programa.

Clasificando ideas

Variables y valores iniciales : double s=0, i=1.0;int n=1, sign=1;

cuerpo de bucle

  • s=s+yo
  • i: consta de símbolo, numerador y denominador,
  • Símbolo: signo=-signo;
  • Numerador: 1
  • Denominador: 1, 3, 5, 7, 9... Regla: n=n+2,2*n-1;
  • i=signo*1,0/n;

Condición de bucle : |i|El valor absoluto es menor que 10 elevado a la potencia de -5 ----- while(fabs(i)>=1e-5)

  • 10 elevado a -5 se expresa en notación científica como 1e-5
  • #incluir<matemáticas.h> 

Dibujar un diagrama de flujo ( hacer los ajustes apropiados a las variables )

signo=1, pi=0, n=1, término=1

Cuando |término|≥10-6

pi=pi+término

norte=norte+2

signo=-signo

término=signo/n

pi=pi*4

Pi de salida

Programación

#include<stdio.h>
#include<math.h>
int main()
{
	int sign=1;
	double item=1,pi=0,n=1;
	
	while(fabs(item)>=1e-6)
	{
		pi=pi+item;
		n=n+2;
		sign=-sign;
		item=sign/n;				
	}
	pi=4*pi;
	printf("pi=%f",pi);
	return 0;
 } 

resultado de la operación

 pensar

  • ¿Qué ajustes se deben hacer para mejorar la precisión de pi?
  • ¿Puede sugerir otras soluciones al problema?

Supongo que te gusta

Origin blog.csdn.net/studyup05/article/details/130375039
Recomendado
Clasificación