Red de conocimiento informático - Conocimiento sistemático - Programa en lenguaje C para resolver ecuaciones cúbicas de una variable

Programa en lenguaje C para resolver ecuaciones cúbicas de una variable

Puedes utilizar el método de bisección, el método de intercepción de cuerdas y el método de Newton, que escribí antes. Espero que sea útil para LZ.

①Método de intercepción de cuerdas:

Utiliza el método de intercepción de cuerdas para encontrar las raíces de la ecuación F(x)=X^3-5X^2+16X-80=0.

El método es el siguiente:

(1) Tome dos puntos diferentes x1, x2. Si f(x1) y f(x2) tienen signos opuestos, entonces el intervalo (x1. , x2) Debe haber una raíz dentro. Si f(x1) y f(x2) tienen el mismo signo, entonces x1 y x2 deben cambiarse hasta que f(x1) y f(x2) tengan signos diferentes. Tenga en cuenta que los valores de x1 y x2 no deben diferir demasiado para garantizar que solo haya uno en el intervalo (x1, x2).

(2) Conecte los dos puntos (x1, f(x1)) y (x2, f(x2)). Esta línea intersecta el eje x en x. La coordenada de x se puede calcular usando. la siguiente fórmula: x =(x1*f(x2)-x2*f(x1))/f(x2)-f(x1),

Encontrar f(x) a partir de x;

(3) Si f(x) y f(x1) tienen el mismo signo, entonces la raíz debe estar en (x,x2), y x se considerará como el nuevo x1 si f(x) y f(x2) tiene el mismo signo, lo que significa que la raíz está en (x1,x) y x se considera como el nuevo x2 en este momento.

(4) Repita los pasos (2) y (3) hasta que |f(x)|

El programa es el siguiente:

#include

#include

float f(float x)

{

flotar y;

y=((x-5.0)*x+16.0)*x-80.0;

devolver y;

}

float xpoint(float x1,float x2)

{//Encuentra la conexión entre (x1, f(x1) y (x2, f (x2)) La intersección de la línea y el eje x

float y;

y=(x1*f(x2)-x2*f(x1))/( f(x2)-f(x1 ));

return y;

}//función xpoint

raíz flotante(flotante x1,flotante x2)

{

flotar x,y,y1;

y1=f(x1);

hacer

{

x=xpunto(x1,x2);

y=f(x);

if(y*y1>0)

{

y1=y;

x1=x;

}

si no x2=x;

} while (fabs( y)>=0.00001);

return x;

}//función raíz

void main()

{

flotador x1,x2,f1,f2,x;

hacer

{

printf(" entrada x1,x2:\n" );

scanf("%f%f",&x1,&x2);

f1=f(x1);

f2=f(x2) ;

} mientras(f1*f2>=0);

x=raíz(x1,x2);

printf("una raíz de la ecuación es %8.4f\n",x);

getch();

}

②: Método de iteración de Newton:

Método de iteración de Newton

El método de iteración de Newton también se llama método tangente de Newton. Utiliza el siguiente método para encontrar la raíz: primero establezca arbitrariamente un valor x0 que esté cerca de la raíz real. como la primera raíz aproximada, y encuentre f desde x0 (x0), dibuje la recta tangente de f(x) a través del punto (x0, f(x0)), interseque el eje x en x1, utilícelo como la segunda raíz aproximada raíz, y luego use x1 para encontrar f(x1), y luego pase (haga una línea tangente a f(x) en el punto x1, f(x1)), interseque el eje x en x2, luego encuentre f(x2) , y luego dibuja una línea tangente... y continúa de esta manera hasta que esté lo suficientemente cerca de la x real.

Donde f'(X0) es la pendiente de la función en X0, que es la derivada en X0.

El código es el siguiente:

#include

#include

float f (flotar a, flotar b, flotar c, flotar d, flotar x)

{

flotar f;

f=((a*x+b )*x +c)*x+d;

regresar f;

}

flotar f1(flotar a,flotar b,flotar c,flotar x )

{

flotador f;

f=(x*3*a+2*b)*x+c;

return f ;

}

raíz flotante(flotador a,flotador b,flotador c,flotador d)

{

flotador x0,x1 =1;

hacer

{

x0=x1;

x1=x0-f(a,b, c,d ,x0)/f1(a,b,c,x0);

}mientras(fabs(x1-x0)>=1e-6);

devuelve x0 ;

p>

}

void main()

{

flotador a,b,c,d,x;

printf("ingrese cuatro números flotantes:\n");

scanf("%f%f%f%f",&a,&b,&c,&d);

x =root(a,b,c,d);

printf("%.1fX^3+%.1fX^2+%.1fX+%.1f=0 su raíz cerca x=1.5 es: %.4f\n",a,b,c,d,x);

getch();

}