编程,编写函数f(x),用迭代法求x=a的三次方根

编程,编写函数f(x),用迭代法求x=a的三次方根,第1张

主要问题是原程序的 f 函数错了。double a[1000]的作用域是在f函数内,当函数返回时即释放,并不能像你想象的那个在下次调用时依然存在。

再者,

for(i=0i<10000i++)

 {

  if (fabs(f(i+1,b)-f(i,b))<1e-4)

   break

 }

怎么能保证这10000次就一定能得到解呢?结束的条件宽薯是差<1e-4,直接做循环条件就可以了。

参考程序如下:

#include <stdio.h>

#include 猛并<math.h>

double f(double a,double x)  //x为上一个近似解

{

 x=2.0/3*x+a/(3*x*x)  //不能直接写2/3

 return x

}

main()

{

 double a,x1,x0

 scanf("%lf"枝巧迹,&a)

 x1=a/3    //假设初始值

 do

  { x0=x1

    x1= f(a,x0)

    } while(fabs(x1-x0)>1e-4) 

 printf("%lf\n", pow(a,1.0/3))

 printf("%lf",x0)

}

#include <stdio.h>

#include<math.h>//pow()所需的头文件凳扮

int main(int argc, char *argv[])

{

int a,b

scanf("%d%d",&a,&b)

double sum=pow(a,b)//调用计算平方的库函数

printf("%.2f",sum)//.2f保留乱卜小数点枣陪灶后两位

return 0

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12553140.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存