首先可以将方程两边同时加上x,,这时候两边同时再除以1+x,就得到了,变形为。(变性后的迭代式不唯一,这里随便选取一个)
当x是准确值的时候,两边应该是相等的,如果x是近似值,x误差很小很小,我们变可以认为x是可接受的近似解。
因此可以构造迭代式:
根据上面的迭代式,可以得到一个x值的序列:,这个序列中的每一个值都应该比前面的值更加接近x的精确值, 关于什么是不动点迭代法这里大致介绍一下:
详细请参考:第四章:方程求根的迭代法 - 简书 (jianshu.com)中的4.2
#include<stdio.h>
#include<math.h>
#define PRECISION 0.000001
int main()
{
//用迭代法计算方程x^2=a的解,即计算根号a的值(不用库函数)
float a,x=1.0,temp;
int count=0;
printf("请输入一个非负数初始迭代值a:");
scanf("%f",&a);
do
{
temp=x;
x=1+(a-1)/(x+1);
count++;
}while(fabs(x-temp)>=PRECISION);
printf("\t方程的近似解为:%f,迭代次数为%d\n",x,count);
return 0;
}
文章来源:https://www.toymoban.com/news/detail-618810.html
文章来源地址https://www.toymoban.com/news/detail-618810.html
到了这里,关于求解方程x^2=a的根,不使用库函数直接求解(不动点迭代法)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!