¿Cómo puedo escribir el código correcto para resolver la ecuación en C?

programación


Help me write a program in C that will fit the values of k into the equation.

fórmula = 5/1+k + 9/2+k + 13/3+k + 17/4+k -16

The value of k can be negative and an integer; in the case of the above selection method, the result should come out to 0.250000000.

Lo que he probado:

I tried giving k an initially negative value, and using a loop to add 0.000001 at a time, but for some reason I don’t get the correct value when k is negative or not an integer

Solución 1

No creo que estés escribiendo eso correctamente. ¿No debería ser 5/(1+k) + 9/(2+k) … con paréntesis alrededor de cada término denominador? Este detalle es muy, muy importante. Yo agregaría paréntesis alrededor de cada término resumido para que no tenga que depender de la interpretación de la lista de precedencia.

Primero probaría el método Newton-Raphson como se describe en: Buscadores de raíces polinomiales rápidos y estables: segunda parte[^] aunque no estoy seguro de que funcione para esta ecuación.

Si eso no funciona, puedes probar un método de búsqueda binaria. Primero intente con una sucesión de valores para encontrar dos números donde una respuesta dé un resultado superior a cero y la siguiente dé un resultado inferior a cero, o viceversa. Luego intentas un resultado en medio de esos dos y posteriormente sigues probando el valor medio entre otros dos hasta que obtengas una respuesta que esté dentro de tu tolerancia, el épsilon descrito en mi respuesta anterior. En su pregunta anterior, probó valores sucesivos entre -10000 y 10000, si no recuerdo mal. Prueba este método con esas dos conjeturas iniciales. Si dan resultados con signos opuestos, entonces son primeras conjeturas razonables. Luego sigue intentando el valor medio entre conjeturas.

La clave de este enfoque es elegir el valor correcto para comprobarlo a continuación. Lo que quiero decir es que si se prueban primero -10000 y 10000 y los resultados son de signos opuestos, se prueba con 0 a continuación. El resultado de la verificación con 0 determinará qué valor intentará a continuación. Como ejemplo, digamos que el resultado de verificar -10000 es negativo y el resultado de 10000 es positivo; luego verifique 0 a continuación. Si el valor en cero es negativo, intente con +5000 a continuación. Si el valor en cero es positivo, intente con -5000 a continuación y siga dividiendo la diferencia así hasta que se haya centrado en el resultado.

コメント

タイトルとURLをコピーしました