大一下学期刚开始学c语言 求n次方根 用牛顿迭代法 别用一些不懂的知识 就用牛顿迭代法前面和后面一点点的

学习 时间:2026-04-07 23:19:59 阅读:192
大一下学期刚开始学c语言 求n次方根 用牛顿迭代法 别用一些不懂的知识 就用牛顿迭代法前面和后面一点点的要n次方根都能求

最佳回答

雪白的小猫咪

爱笑的豆芽

2026-04-07 23:19:59

请参考:百度百科之牛顿迭代法。#include <stdio。h>#include <stdlib。h> #include <string。h> #include <stdio。h>#include <stdio。h>#include <math。h>int n;int y;double func(double x) //函数   {    double k = 1;    int i;        for(i = 0; i < n; i++)    {        k *= x;    }    return k-y;}double func1(double x) //导函数   {    double k = 1;    int i;    for(i = 0; i < n-1; i++)    {        k *=x;    }    return n*k;}int Newton(double *x,double precision,int maxcyc) //迭代次数   {      double x1,x0;      int k;      x0=*x;      for(k=0;k<maxcyc;k++)      {            if(func1(x0)==0。0)//若通过初值,函数返回值为0               {                  printf("迭代过程中导数为0!\n");                  return 0;            }            x1=x0-func(x0)/func1(x0);//进行牛顿迭代计算               if(fabs(x1-x0)<precision || fabs(func(x1))<precision) //达到结束条件               {                  *x=x1; //返回结果                     return 1;            }            else //未达到结束条件                   x0=x1; //准备下一次迭代       }    printf("迭代次数超过预期!\n"); //迭代次数达到,仍没有达到精度       return 0;}int main(){    double x,precision;    int maxcyc;    printf("输入被开方数:");    scanf("%d",&y);    printf("输入开方数:");    scanf("%d",&n);    printf("输入初始迭代值x0(不为0):");    scanf("%lf",&x);    printf("输入最大迭代次数:");    scanf("%d",&maxcyc);    printf("迭代要求的精度:");    scanf("%lf",&precision);    if(Newton(&x,precision,maxcyc)==1) //若函数返回值为1           printf("该值附近的根为:%lf\n",x);    else //若函数返回值为0           printf("迭代失败!\n");    getchar();    system("pause");}

最新回答共有2条回答

  • 坚强的路人
    回复
    2026-04-07 23:19:59

    请参考:百度百科之牛顿迭代法。#include <stdio。h>#include <stdlib。h> #include <string。h> #include <stdio。h>#include <stdio。h>#include <math。h>int n;int y;double func(double x) //函数   {    double k = 1;    int i;        for(i = 0; i < n; i++)    {        k *= x;    }    return k-y;}double func1(double x) //导函数   {    double k = 1;    int i;    for(i = 0; i < n-1; i++)    {        k *=x;    }    return n*k;}int Newton(double *x,double precision,int maxcyc) //迭代次数   {      double x1,x0;      int k;      x0=*x;      for(k=0;k<maxcyc;k++)      {            if(func1(x0)==0。0)//若通过初值,函数返回值为0               {                  printf("迭代过程中导数为0!\n");                  return 0;            }            x1=x0-func(x0)/func1(x0);//进行牛顿迭代计算               if(fabs(x1-x0)<precision || fabs(func(x1))<precision) //达到结束条件               {                  *x=x1; //返回结果                     return 1;            }            else //未达到结束条件                   x0=x1; //准备下一次迭代       }    printf("迭代次数超过预期!\n"); //迭代次数达到,仍没有达到精度       return 0;}int main(){    double x,precision;    int maxcyc;    printf("输入被开方数:");    scanf("%d",&y);    printf("输入开方数:");    scanf("%d",&n);    printf("输入初始迭代值x0(不为0):");    scanf("%lf",&x);    printf("输入最大迭代次数:");    scanf("%d",&maxcyc);    printf("迭代要求的精度:");    scanf("%lf",&precision);    if(Newton(&x,precision,maxcyc)==1) //若函数返回值为1           printf("该值附近的根为:%lf\n",x);    else //若函数返回值为0           printf("迭代失败!\n");    getchar();    system("pause");}

上一篇 爱情公寓最后一句英语什么意思

下一篇 《父亲挑书》在文中,在问中画出对父亲外貌描写的句子,并说说这些句子的表达作用.