fun函数设置循环,当x0-x1的绝对值小于0.000001循环结束。
#include
<stdio.h>
#include
<math.h>
float
fun()
{float
x,n=0.0,root
while(root>=0.000001||root<=-0.000001)
{
x=n
n=cos(x)
root=x-n
}
root=n
return
root
}
void
main()
{
float
f=fun()
printf("root=%f\n",f)
}
给你一点提示。牛顿迭代法要计算
(1)
y1=f(x)
在
x
的函数值
(2)
d1=f(x)
的一阶导数
在
x
的值
你可以写两个函数,分别计算y1,d1
如果一阶导数有解析解,则可用赋值语句,否则要写数值解子程序。
步骤:
设解的精度,例
float
eps=0.000001
设x初值,x1
算y1=f(x1)
迭代循环开始
算一阶导数
在
x1
的值
d1
用牛顿公式
算出
x2
[x2
=
x1
-
y1
/
d1]
如果
fabs(x2-x1)
>
eps
则从新迭代
--
用新的函数值和一阶导数值推下一个
新x.