⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 newton.c

📁 牛顿法(Newton s method)又称为牛顿-拉夫逊方法(Newton-Raphson method)
💻 C
字号:
#include <stdio.h>#include <math.h>#include <stdlib.h>#include <string.h>#define lll 80#define dim 20typedef double vecteur[dim];/*trouver le polynome*/   double f(vecteur p, int rang, double x0)    {  double f1;  int i;     f1=0;  for(i=0;i<= rang;i++)     {               f1=f1+p[i]*pow(x0,rang-i);     }   return f1;    }/*trouver la derivee du polynome*/    double g(vecteur p, int rang, double x0)        {  double g1;  int i;     g1=0;  for(i=0;i<= rang-1;i++)     {               g1=g1+(rang-i)*p[i]*pow(x0,rang-i-1);       }   return g1;   } int lecture(char name[],vecteur p)  {    FILE *fp;    int num,i,j,rang;    char dd[2],dum[lll];    double ttt;printf(" donner le numero de l'exemple voulu (1<num<10):");    scanf("%d",&num);    printf(" le numero de l'exemple est %d\n",num);    if ((fp = fopen(name,"r+t")) == NULL)      {       puts(" on ne peut ouvrir le fichier\n" );       exit(1);      }  	do	 {	  fgets(dum,lll,fp);	  dd[0]=dum[24];dd[1]=dum[25];	 }while(dum[0] != '$' || atoi(dd)!=num);    fscanf(fp,"%d",&rang);    printf("\n le degre du polynome est: %d\n",rang);    for (i=0;i <= rang;i++)      {              fscanf(fp,"%lf",&p[i]);      }    for (i=0;i <= rang;i++)      {              printf("p[%d]=%lf \n" ,i,p[i]);      }    fclose(fp);    return(rang);  }void main(void){ /* declaration des variables */  extern int lecture();    vecteur p;  char rep,name[25];  int rang,i,j,n;  double s,erreur,x1,x0,racine; /* initialition des variables */for(i=0;i<=19;i++)     {               p[i]=0.;     } fflush(stdin);    printf(" donner le nom du fichier: ");    gets(name);    printf(" le nom du fichier est %s\n",name);do{    rang=lecture(name,p);/*trouver le x1*/  printf("\n donnez la valeur a x[0]: \n");  scanf("%lf",&x0);  printf("\n donnez la valeur du erreur: \n");  scanf("%lf",&erreur);   do      {                  x1=x0-(f(p,rang,x0)/g(p,rang,x0));           s=fabs(x1-x0);           x0=x1;                            }while(s>erreur);                    racine=x1;printf("la racine est %lf \n :",racine);  fflush(stdin);    printf("Voulez vous recommencer?(o/n)?\n");    scanf("%c",&rep); }  while (toupper(rep) == 'O');  puts(" fin de fichier \n");}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -