牛顿迭代法在开方中的应用,最好有C代码~
1个回答
展开全部
求a的平方根,其实就是求
f(x)=x^2 - a的两个解
我以求正的那个为例
先对f(x)求导
f'(x)=2x
所以对于x1来说,x1-(f(x1)/2x1)是比x1更优的一个值(自己随便画个图就明白了,先把x1的切线做出来,f(x1)/2x1就是把一条直角边变成另一条)
-----------------------------
x1-(f(x1)/2x1)化简得到:x1-((x1^2 - a)/2x1) = x1-((x1 - a/x1)/2)=(x1 + a/x1)/2
-----------------------------
所以我一开始只要随便代入一个数x(求正根就代入正的),然后不断地让它等于(x + a/x)/2即可
-----------------------------
代码就这样
int x=500;(随便一个数)
for(i=1;i<=10(越大越靠近);i++)
x=(x+a/x)/2;
f(x)=x^2 - a的两个解
我以求正的那个为例
先对f(x)求导
f'(x)=2x
所以对于x1来说,x1-(f(x1)/2x1)是比x1更优的一个值(自己随便画个图就明白了,先把x1的切线做出来,f(x1)/2x1就是把一条直角边变成另一条)
-----------------------------
x1-(f(x1)/2x1)化简得到:x1-((x1^2 - a)/2x1) = x1-((x1 - a/x1)/2)=(x1 + a/x1)/2
-----------------------------
所以我一开始只要随便代入一个数x(求正根就代入正的),然后不断地让它等于(x + a/x)/2即可
-----------------------------
代码就这样
int x=500;(随便一个数)
for(i=1;i<=10(越大越靠近);i++)
x=(x+a/x)/2;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询