鱼C论坛

 找回密码
 立即注册
查看: 3652|回复: 9

编程小白求助,计算牛顿迭代法,为什么编出来的程序输出为 -nan

[复制链接]
发表于 2022-11-7 21:11:58 | 显示全部楼层
       你的 "牛顿迭代法" 是用来算什么的?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-7 21:54:00 | 显示全部楼层
  1. #include <stdio.h>

  2. #define abs(n) ((n) >= 0 ? (n) : -(n))

  3. double newton(double a , double b , double c , double x0)
  4. {
  5.          double f , fd , x1 = x0                        ;
  6.          do {
  7.                  x0 = x1                                ;
  8.                  f = a * x0 * x0 + b * x0 + c           ;
  9.                  fd = 2 * a * x0 + b                    ;
  10.                  x1 = x0 - f / fd                       ;
  11.         } while(abs(x1 - x0) > 1e-15)                   ;
  12.         return x1                                       ;
  13. }

  14. int main(void)
  15. {
  16.         printf("x = %lf\n" , newton(1 , 1 , 0.25 , -1)) ;
  17. }
复制代码

        编译、运行实况:
  1. D:\[00.Exerciese.2022]\C>g++ -o x x.c

  2. D:\[00.Exerciese.2022]\C>x
  3. x = -0.500000

  4. D:\[00.Exerciese.2022]\C>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-7 22:41:49 | 显示全部楼层
Earl_Flo 发表于 2022-11-7 22:41
谢谢回答 但是回答和我提的问题不太一样

         有什么不一样?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-7 23:04:32 | 显示全部楼层
本帖最后由 jackz007 于 2022-11-7 23:08 编辑
Earl_Flo 发表于 2022-11-7 22:56
正确代码我已经的出来了 我只是想知道我的另外两个和正确的那个有什么不一样 第二个代码是个正确的  我的 ...


       你只是笼统说了一个 "牛顿迭代法" ,至于计算什么也不知道,我辛辛苦苦在网上查资料,才猜出你是想求一元二次方程的根,然后,才参考别人的算法原理(网上没有找到计算一元二次方程根的代码),比照你的参数写出了这个代码,我才原创的东西,你却说在网上见过???
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-24 03:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表