[ad_1]
Help me write a program in C that will fit the values of k into the equation.
formule = 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.
Ce que j’ai essayé :
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
Solution 1
Je ne pense pas que vous écriviez cela correctement. Ne devrait-il pas être 5/(1+k) + 9/(2+k) … avec des parenthèses autour de chaque terme du dénominateur ? Ce détail est très, très important. J’ajouterais des parenthèses autour de chaque terme résumé afin que vous n’ayez pas à vous fier à l’interprétation de la liste de priorité.
J’essaierais d’abord la méthode Newton-Raphson telle que décrite sur : Recherche de racines polynomiales rapides et stables – Deuxième partie[^] même si je ne suis pas certain que cela fonctionnerait pour cette équation.
Si cela ne fonctionne pas, vous pouvez essayer une approche de recherche binaire. Essayez d’abord une succession de valeurs pour trouver deux nombres où une réponse donne un résultat supérieur à zéro et la suivante donne un résultat inférieur à zéro, ou vice versa. Ensuite, vous essayez un résultat au milieu de ces deux et continuez ensuite à essayer la valeur moyenne entre deux autres jusqu’à ce que vous obteniez une réponse qui correspond à votre tolérance, l’epsilon décrit dans ma réponse précédente. Dans votre question précédente, vous avez essayé des valeurs successives comprises entre -10 000 et 10 000, si je me souviens bien. Vous essayez cette méthode avec celles-ci comme deux suppositions initiales. S’ils donnent des résultats avec des signes opposés, ce sont alors des premières suppositions raisonnables. Continuez ensuite à essayer la valeur moyenne entre les suppositions.
La clé de cette approche consiste à choisir la bonne valeur à vérifier ensuite. Ce que je veux dire, c’est que si -10 000 et 10 000 sont essayés en premier et que les résultats sont de signes opposés, essayez ensuite 0. Le résultat de la vérification avec 0 déterminera la valeur que vous essaierez ensuite. À titre d’exemple, disons que le résultat de la vérification de -10 000 est négatif et que le résultat de 10 000 est positif, puis vérifiez 0 ensuite. Si la valeur à zéro est négative, essayez ensuite +5000. Si la valeur à zéro est positive, essayez ensuite -5000 et continuez à diviser la différence ainsi jusqu’à ce que vous ayez ciblé le résultat.
[ad_2]
コメント