C++语言编一个迭代函数的稳定值

来源:百度知道 编辑:UC知道 时间:2024/05/17 15:51:43
哪位大大帮我编下吧
前面为F(n+1)后面为F(n)
求F的稳定值,怎么编啊?
1楼那里的newf-f;
能改成newf-1/sqrt(f)吗?
左边的式子是1/sqrt(f)啊。
刚开始没看清题目,把f参数看成5了。。。。f的初始值是0.04,还有是e-5和e-3不是e-51和e-31
但是程序无错,但没有结果。
多谢。

你那个是log10吧?

#include <iostream>
#include <cmath>
using namespace std;

double fun(double f){
double answer=0.04762/f+1.19048;
answer=sqrt(answer)*2.1877e-5;
answer=answer-2.0*log10(1.8018e-3);
answer=1.0/(answer*answer);
return answer;
}

int main(){
double f;
double temp=0.04;
do{
f=temp;
temp=fun(f);
}while(f!=temp);
cout<<f<<endl;
return 0;
}

double next_f(double f)
{
double temp = -2.0 * log10(sqrt(1.19048l + .04762l/f) * 2.1877e-5l + 1.8018e-3l );
temp = 1/ temp ;
return temp * temp;
}

#define ABS(a) ((a)>0?(a):-(a))

void main()
{
double f = 1, newf;
while ( 1) {
newf = next_f(f);
if ( ABS(newf-f) < 1e-3) break;
f = newf;
}
printf("%lf",f);
}

那是 e-3 l 字母l, 不是1.
什么叫“没有结果”?