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

C++ 迭代法求根号

#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

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

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

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

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

我找了一段正确的程序,如下: 注意看,它的判断条件跟你的是不同的,还有就是你的代码,一开始x1=0的话,x2=2/3*x1+a/(3*x1*x1); 分母为0了,当然出错了。 求立方根的牛顿法基于如下事实,如果y是x的立方根的一个近似值,那么下式将给出一个更...

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的。

a/2是在迭代法中自定义的x0的初值。 用牛顿迭代法解方程,理论上初值可以是任意值。但是如果初值选得好,收敛得就快。当然程序所需要的内存更低,费时更少了。 这条方程转换过来就是a=Xn(2Xn+1-Xn),求的就是a的平方根,无限迭代求近似值。 这样...

#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...

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