Bonjour,
j'ai le programme suivant qui représente la méthode de Newton, et comme je l'utilise pour programmer un bras robotisé, il me le faudrait en C.
Je n'y connais hélas rien en C est-ce qu'une bonne âme peut m'aider voire me le convertir ?

Merci beaucoup
Aurélie

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include <cmath>
#include <iostream>
using namespace std;
 
double lmain=10.0;
double monabs;
double ord;
double haut;
double lbras=14.7 ;
double lavbras=18.7 ;
// la fonction dont on cherche un zero
inline double f(double x) 
{      
return (lmain-sqrt(ord*ord+monabs*monabs)+x*lbras*(sqrt(1-((haut-x*lbras)/lavbras)*((haut-x*lbras)/lavbras))+sqrt(1-x*x)));
}
// la derivee de f
inline double fderiv(double x)
{
return lbras*(sqrt(1-((haut-x*lbras)/lavbras)*((haut-x*lbras)/lavbras))+sqrt(1-x*x))+x*lbras*(-x/(sqrt(1-x*x))+lbras*(haut-x*lbras)/(lavbras*sqrt(1-((haut-x*lbras)/lavbras)*((haut-x*lbras)/lavbras))));
 
       };
 
double Newton(double (*f)(double), double (*fderiv)(double))
{
     double epsilon;
     double itermax;
     double x0;  
     cout << "Quelle est la precision souhaitee?";
     cin >> epsilon;                                              
     cout << "Quelle est la valeur initiale?";
     cin >> x0;
     cout << "Quelle est le nombre d'iterations maximal?"; 
     cin >> itermax; 
 
     double x = x0;
     double xnew;
     int i = 0;
 
 while(i<itermax && abs(f(x)/fderiv(x))>=epsilon)
 {
        xnew = x - f(x) / fderiv(x);
        x=xnew;
        i++;
 
 
 }
    if(i==itermax)
    {cout << "la methode ne converge pas" << endl;}
    else
    {cout << "la methode converge en " << i <<" iterations"<< endl;};
    return xnew;
}
 
int main()
{
       cout<<"abscisse= ?"<<endl; 
       cin>>monabs;
       cout<<"ordonnee= ?"<<endl;
       cin>>ord;
       cout<<"hauteur= ?"<<endl;
       cin>>haut;
       cout << "les racines du polynome sont " << Newton(f, fderiv)<<endl;
       system ("pause"); 
       return 0;
}