Newton.c
上传用户:bjtelijie
上传日期:2010-01-01
资源大小:87k
文件大小:1k
源码类别:

数学计算

开发平台:

Visual C++

  1. #include <stdio.h>
  2. #include <math.h>
  3. #include <stdlib.h>
  4. int Function(double,double *,double *);
  5. int Newton(double *,double,int);
  6. int Function(x,f,dy)
  7. double x;
  8. double *f;
  9. double *dy;
  10. {
  11. *f = x*x*(x-1)-1;
  12. *dy = 3*x*x-2*x;
  13. return(1);
  14. }
  15. int Newton(x,eps,l)
  16. double *x;
  17. double eps;
  18. int l;
  19. {
  20. double f,dy,x1;
  21. Function(*x,&f,&dy);
  22. A: if(fabs(dy) == 0)
  23. {
  24. l = 0;
  25. return (0);
  26. }
  27. x1=*x-f/dy;
  28. Function(x1,&f,&dy);
  29. if(fabs(x1-*x)>=eps||fabs(f)>=eps)
  30. {
  31. l-=1;
  32. *x=x1;
  33. if(l==0)
  34. return(1);
  35. goto A;
  36. }
  37. *x = x1;
  38. return 1;
  39. }
  40. void main()
  41. {
  42. double x,eps;
  43. int l;
  44. eps=1.e-6;
  45. x=1.5;
  46. l=60;
  47. if(!Newton(&x,eps,l))
  48. {
  49. printf("该函数不可以用牛顿跌代法求根!n");
  50. }
  51. printf("利用牛顿跌代法求的的根为:n");
  52. printf("x=%.10fn",x);
  53. }