首页 > 其它 > 题目详情
问一个c++迭代法开方的问题:迭代公式就是指用现在的值,代到一个公式里面,算出下一个值再用下一个值代入公式,如此往复地代
题目内容:
问一个c++迭代法开方的问题:
迭代公式就是指用现在的值,代到一个公式里面,算出下一个值
再用下一个值代入公式,如此往复地代.公式是x=(x+a/x)/2
比如对2开方
x=(x+2/x)/2
你随便拿一个x=10代入,得x=(10+2/10)/2=5.1
再代进去x=(5.1+2/5.1)/2=2.746
再代入得1.737
再代得1.444
再代得1.414525655
再代得1.414213597
再代得1.414213562
初始不用10,用任一个正数,只要计算几次都可以得到1.414213562这样的结果.
#include
#include
using namespace std;
int main()
{
\x09float a,x0,x1;
\x09couta;
\x09x0=a/2;
\x09x1=(x0+a/x0)/2;
\x09do
\x09{
\x09\x09x0=x1;
\x09\x09x1=(x0+a/x0)/2;
\x09}while(fabs(x0-x1)优质解答
初值赋值为a/2,可以减少迭代次数
while(fabs(x0-x1)=1e-5)
可以适用非整数
迭代公式就是指用现在的值,代到一个公式里面,算出下一个值
再用下一个值代入公式,如此往复地代.公式是x=(x+a/x)/2
比如对2开方
x=(x+2/x)/2
你随便拿一个x=10代入,得x=(10+2/10)/2=5.1
再代进去x=(5.1+2/5.1)/2=2.746
再代入得1.737
再代得1.444
再代得1.414525655
再代得1.414213597
再代得1.414213562
初始不用10,用任一个正数,只要计算几次都可以得到1.414213562这样的结果.
#include
#include
using namespace std;
int main()
{
\x09float a,x0,x1;
\x09couta;
\x09x0=a/2;
\x09x1=(x0+a/x0)/2;
\x09do
\x09{
\x09\x09x0=x1;
\x09\x09x1=(x0+a/x0)/2;
\x09}while(fabs(x0-x1)
优质解答
while(fabs(x0-x1)=1e-5)
可以适用非整数
本题链接: