lzth.net
当前位置:首页 >> C++ 迭代法求根号 >>

C++ 迭代法求根号

while那里是大于而不是小于; #include#include#includeusing namespace std;int main(void){ double a,x0,x1; couta; while (a

#include #include using namespace std; int main() { float a,x,y; cout 1e-5); //少了括号 cout

#include #include using namespace std; int main() { float a,x,y; cout 1e-5); //少了括号 cout

例如:#include "iostream.h"#include "math.h"void main(){int a;double x0,x1;for(a=1;a1E-5){x0=x1;x1=2*x0/3+a/(3*x0*x0);}if(x1==pow(a,1/3))cout

x0=a/2; 是不对的。会造成数据出错(1/2会等于0的)。应该改为: x0=(float)a/2; 或x0=a/2.0; 下面的 x1=(x0+a/x0)/2; 则不需要转。因为a/x0时,因为x0是double,系统会自动将a转为double的。

#include"iostream"using namespace std;int main(){ double Pi=0.0; int n=10000; for(int i=1;i

#include#includeusing namespace std;struct stu{ int socol[30];};int main(){ double a, x0, x1; printf("Input a:\n"); scanf("%lf", &a);//因为a是double型数据,所以要用%lf,而不是%f if (a < 0) printf("Error!\n"); else { x0 = a / 2...

for(int i=0;;i++){newx=a/x;if(fabs(newx-x)

第一个办法比较简单,就是利用一元三次方程的求根公式,具体算法请参看关于一元三次方程的卡尔丹方法; 第二个办法是利用高斯-塞德尔迭代法把方程变形为: x=(63x³-114x²+42)/95 把初始迭代值(即-1.0, 0.4和1.2三值)分别代入上述...

x=(1.0/2)*(x+a/x); 这一句改一下就可以了,因为1/2=0

网站首页 | 网站地图
All rights reserved Powered by www.lzth.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com