我必須創建一個連續替換的函數。例如, 我有一個函數F(X,Y)=(sqrt((X-Y)/(X-1)))/ tanh(sqrt((X-Y)/(X-1))))。C中的連續替換函數
(X爲常數)
我有進入和檢查這樣的Y值(小於X):
Value 1: SET Y=0
E1 = F(X,Y)
then E2 = F(X,E1)
THEN E3 = F(X,E2)
.
.
.
.
E(n) = F(X,E(n-1))
and stop when (fabs(E(n)-E(n-1))<= 0.001);
我試圖用一個do-while循環,但我沒沒有辦法讓它工作。
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#define F(Ei,E) (sqrt (M*(Ei-E)/(Ei-1)))/tanh(sqrt(M*(Ei-E)/(Ei-1)))
#define Ei 1 + ((Db*CBoo)/(b*Da*CAi))
#define M (Da*k2*CBoo)/(kl*kl)
int main(){
double k2,Da,Db,b,h,CAi,CBoo,kl,E,i;
double E1 ,E2 ;
kl =1;
k2 = 3;
Da = 0.4;
Db = 0.3;
CAi = 3;
CBoo = 5;
b = 2;
E1=0;
E2=0;
E=0;
i=0;
do
{
E1 = E2;
E2 = F(Ei,E1);
printf("dd");
}while(fabs(E2-E1)<= 0.0001);
printf("\nanswer is %lf",E1);
system("PAUSE");
}
循環只做1輪,答案永遠是0
任何想法如何做到這一點?
謝謝!
需要顯示一些代碼,否則獵犬會攻擊。 –
我試圖避免它,我想這樣做幾個小時,我迫切需要更多的練習在C。但是謝謝。 – user3112161
你在'do-while'之前做過'E2 = 0'嗎? – Skyler