gpt4 book ai didi

c++ - 定点迭代

转载 作者:行者123 更新时间:2023-11-30 00:39:56 36 4
gpt4 key购买 nike

我试图找到这样的 p,对于给定的函数 f(p),我们有相等性

p=f(p);这是代码

#include <iostream>
#include<math.h>
using namespace std;
float fixed(float x){
return (float)(pow(x,3)-4*pow(x,2)-10);
}

int main(){
float p=0.0;
float p0=1.5;
float tol=(float).001;
int N=25;
int i=1;
while(i<N){
p=(float)fixed(p0);
if((p-p0)<tol){
cout<<p<<endl;
break;
}
i=i+1;
p0=p;
if(i>N){
cout<<"solution not found ";
break;
}
}
return 0;
}

我尝试了不同的初始点,也尝试了不同的公差,但结果是非常荒谬的-16 或-15.something,所以有什么问题?代码是否正确?请帮忙

最佳答案

我认为你根本不存在迭代算法适用的情况。 See here对于某些条件。您的函数在 1.5 附近没有吸引人的不动点,并且算法发散。

但为什么是数字:你的函数是 f(x) = x^3 - 4x - 10,所以求解 f(x) = x 相当于找到f(x) - x 的零点,并且在 5.35 附近只有一个实数零。然而,此时的 f'(x) 非常大,因此即使在那里迭代算法也不可用。

数值求根算法可能是更合适的方法。

关于c++ - 定点迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7685610/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com