迭代法就是讓方程的解不斷去逼近真實(shí)的解。這是一種數(shù)值計(jì)算方法。思路就是按上面的步驟,只設(shè)置兩個(gè)x0,x1開(kāi)始x0代表第一個(gè)值,x1代表第二值第一次迭代之后,讓x0=x1,x1=新的值,這樣x0代表第二個(gè)值,x1代表第三值以此類(lèi)推。。。直到誤差滿足要求

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:申請(qǐng)域名、虛擬主機(jī)、營(yíng)銷(xiāo)軟件、網(wǎng)站建設(shè)、濱海新區(qū)網(wǎng)站維護(hù)、網(wǎng)站推廣。
main()
{double
x1,x2;
x1=0.0;
x2=cos(x1);
while(fabs(x2-x1)le-6)//當(dāng)誤差大于10的負(fù)六次方循環(huán)。
{x1=x2;
x2=cos(x1);
}
printf("x=%f\n",x2);
}
牛頓迭代法,是用于求方程或方程組近似根的一種常用的算法設(shè)計(jì)方法。設(shè)方程為f(x)=0,用某種數(shù)學(xué)方法導(dǎo)出等價(jià)的形式
x(n+1)
=
g(x(n))
=
x(n)–f(x(n))/f‘(x(n)).然后按以下步驟執(zhí)行:
(1)
選一個(gè)方程的近似根,賦給變量x1;
(2)
將x0的值保存于變量x1,然后計(jì)算g(x1),并將結(jié)果存于變量x0;
(3)
當(dāng)x0與x1的差的絕對(duì)值還小于指定的精度要求時(shí),重復(fù)步驟(2)的計(jì)算。
若方程有根,并且用上述方法計(jì)算出來(lái)的近似根序列收斂,則按上述方法求得的x0就
認(rèn)為是方程的根。
#include stdio.h
#include math.h
#define N 100
float f (float x,float y,float z)
{
if((1-x/y)0)
z=x/y-1;
else
z=1-x/y;
return z;
}
void main()
{
float a[N],b[N],c[N],d[N];
float m,n,p,s;
float z;
int i=0;
printf("please input data:\n");
scanf("%f,%f,%f,%f",m,n,p,s);
a[0]=m;
b[0]=n;
c[0]=p;
d[0]=s;
do{
a[i+1]=(40+30+b[i]+c[i])/4;
b[i+1]=(20+30+a[i+1]+d[i])/4;
c[i+1]=(10+15+a[i+1]+d[i])/4;
d[i+1]=(10+5+c[i+1]+b[i+1])/4;
i++;
}while(f(a[i+1],a[i],z)0.000001f(b[i+1],b[i],z)0.000001
f(c[i+1],c[i],z)0.000001f(d[i+1],d[i],z)0.000001);
printf("a[i]=%9.6f,b[i]=%9.6f,c[i]=%9.6f,d[i]=%9.6f",a[i],b[i],c[i],d[i]);
}
首先你的if關(guān)鍵詞打錯(cuò)了,但這是小事。最重要的是你在最后一行不能加取地址符“”。我這個(gè)能達(dá)到你的要求。
把兩個(gè)子函數(shù)都寫(xiě)主函數(shù)里頭吧!你這樣寫(xiě)a、b、c、d都沒(méi)有傳參,害我找了半天。
#includestdio.h
#includemath.h
int
a,b,c,d;
//a、b、c、d為系數(shù)
void
main()
{
int
k=0;
//計(jì)數(shù)變量
float
X0,X1,f,f1;
int
a,b,c,d;
printf("提示:函數(shù)f(x)=a*x^3+b*x^2+c*x+d\n");
printf("請(qǐng)輸入系數(shù):a,b,c,d的值:\n");
scanf("%d%d%d%d",a,b,c,d);
printf("請(qǐng)輸入初始近似值X0:\n");
scanf("%f",X1);
printf("---------------\n");
printf("斂散情況:\n");
printf("k:\tXk:\n");
printf("k=%d\tX%d=%f\n",k,k,X1);
do
{
k++;
X0=X1;
f=((a*X0+b)*X0+c)*X0+d;
f1=(3*a*X0+2*b)*X0+c;
X1=X0-f/f1;
printf("k=%d\tX%d=%f\n",k,k,X1);
}
while(fabs(X1-X0)
=0.00001);
printf("--------------------------\n");
printf("迭代的次數(shù)為:%d\n",k);
}
迭代法,是一種不斷用變量的舊值遞推新值的過(guò)程。
fun函數(shù)設(shè)置循環(huán),當(dāng)x0-x1的絕對(duì)值小于0.000001循環(huán)結(jié)束。
#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);
}
while 和do while是不同地
第二個(gè)改成
#include math.h
#include stdio.h
main()
{float x,t,c;
int a;
scanf("%d",a);
x=1;
t=x;x=(1.0/2)*(x+a/x);c=x-t;
while(fabs(c)/x1e-5)
{
t=x;x=(1.0/2)*(x+a/x);c=x-t;
}
printf("%f",x);
getch();
}
才會(huì)等價(jià)于第一個(gè)程序
網(wǎng)站名稱(chēng):c語(yǔ)言迭代函數(shù)寫(xiě)法 c++函數(shù)迭代
網(wǎng)頁(yè)URL:http://chinadenli.net/article16/hjipgg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)公司、建站公司、移動(dòng)網(wǎng)站建設(shè)、云服務(wù)器、搜索引擎優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)