????????首先可以將方程兩邊同時加上x,,這時候兩邊同時再除以1+x,就得到了
,變形為
。(變性后的迭代式不唯一,這里隨便選取一個)
????????當x是準確值的時候,兩邊應該是相等的,如果x是近似值,x誤差很小很小,我們變可以認為x是可接受的近似解。?
?因此可以構造迭代式:
????????????????????????????????????????
根據(jù)上面的迭代式,可以得到一個x值的序列:,這個序列中的每一個值都應該比前面的值更加接近x的精確值,?關于什么是不動點迭代法這里大致介紹一下:
?詳細請參考:第四章:方程求根的迭代法 - 簡書 (jianshu.com)中的4.2
#include<stdio.h>
#include<math.h>
#define PRECISION 0.000001
int main()
{
//用迭代法計算方程x^2=a的解,即計算根號a的值(不用庫函數(shù))
float a,x=1.0,temp;
int count=0;
printf("請輸入一個非負數(shù)初始迭代值a:");
scanf("%f",&a);
do
{
temp=x;
x=1+(a-1)/(x+1);
count++;
}while(fabs(x-temp)>=PRECISION);
printf("\t方程的近似解為:%f,迭代次數(shù)為%d\n",x,count);
return 0;
}
文章來源:http://www.zghlxwxcb.cn/news/detail-618810.html
?文章來源地址http://www.zghlxwxcb.cn/news/detail-618810.html
到了這里,關于求解方程x^2=a的根,不使用庫函數(shù)直接求解(不動點迭代法)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!