¿Cómo se resuelven los problemas x ^ x = y, cuando x no es un número entero? Ejemplo: x ^ x = 15?

Puede aplicar la función Lambert W:

[matemáticas] x = e ^ {W (\ ln y)} [/ matemáticas]

Lo cual no entiendo completamente. Esto tiene solo 1 solución si [math] y \ ge 1 [/ math], pero si [math] e ^ {- \ frac {1} {e}} <y <1 [/ math], entonces hay 2 soluciones . Si [math] y <e ^ {- \ frac {1} {e}} [/ math], no hay soluciones.

O para una aproximación, puede usar el Método Newton-Raphson.

[matemáticas] x ^ x = y [/ matemáticas]

[matemáticas] x ^ x – y = 0 [/ matemáticas]

Cuando [math] f (x) = 0 [/ math] para una función con buen comportamiento, puede encontrar aproximaciones de las raíces como esta:

Primero escoges una suposición cerca de la raíz. Esa suposición será [matemáticas] x_0 [/ matemáticas]. Entonces puede mejorar la suposición utilizando iteraciones de esta fórmula:

[matemáticas] x_ {n + 1} = x_n – \ dfrac {f (x_n)} {f ‘(x_n)} [/ matemáticas]

A medida que avanza más y más, la aproximación se vuelve más y más fuerte.

Para este problema, haría esto:

[matemáticas] f (x) = x ^ x – y [/ matemáticas]

[matemáticas] f ‘(x) = x ^ x (1 + \ ln x) [/ matemáticas]

[matemáticas] x_ {n + 1} = x_n – \ dfrac {{x_n} ^ {x_n} – y} {{x_n} ^ {x_n} (1 + \ ln x_n)} [/ matemáticas]

Puedes repetir esto tantas veces como quieras.

Usando su ejemplo de [matemáticas] x ^ x = 15 [/ matemáticas], obtenemos esto:

[matemáticas] x_ {n + 1} = x_n – \ dfrac {{x_n} ^ {x_n} – 15} {{x_n} ^ {x_n} (1 + \ ln x_n)} [/ matemáticas]

Comenzaré con [math] x_0 = 3 [/ math], por lo que puedo ver, ese es el número entero más cercano a la solución. Redondeé los valores a 35 dígitos, pero en realidad se calcularon a 1000 dígitos de precisión. Elegí redondear a 35 dígitos porque [math] x_6 [/ math] tenía una precisión de tantos dígitos.

[matemáticas] x_1 \ aprox 2.7882198408708869297895501587611008 [/ matemáticas]

[matemáticas] x_2 \ aprox 2.719022719825559667606083261836369 [/ matemáticas]

[matemáticas] x_3 \ aprox 2.7132009256292373237196542452928477 [/ matemáticas]

[matemáticas] x_4 \ aprox 2.7131636055242615507678842945223974 [/ matemáticas]

[matemáticas] x_5 \ aprox 2.7131636040042392120977870380868416 [/ matemáticas]

[matemáticas] x_6 \ aprox 2.7131636040042392095764012768285094 [/ matemáticas]

Si encuentra el registro de ambos lados, se detiene (xlogx = log15)

pero los métodos gráficos siempre producen una solución.

La solución en este caso es x = 2.713

A veces simplemente no hay un método algebraico.

Fuerza bruta:

  #include 
 #include 

 int main () {
	 doble x = 0;
	 doble d = 0.1;
	 doble t;
	 hacer{
		 hacer{
			 t = pow (x, x);
			 x + = d;
		 } while (t <15);
		 d / = 10.0;
		 hacer{
			 t = pow (x, x);
			 x - = d;
		 } while (t> 15);
		 d / = 10.0;
	 } while (d> 1e-8);
	 printf ("% f \ n", x);
 } // resultado: 2.713164