① C++用迭代法求立方根
我找了一段正確的程序,如下:
注意看,它的判斷條件跟你的是不同的,還有就是你的代碼,一開始x1=0的話,x2=2/3*x1+a/(3*x1*x1);
分母為0了,當然出錯了。
求立方根的牛頓法基於如下事實,如果y是x的立方根的一個近似值,那麼下式將給出一個更好的近似值:
(x/y2+2y)/3
代碼:
#include<stdio.h>
#include
<math.h>
float
fun(float
guess,float
x)
{
if(abs(guess*guess*guess-x)<0.0000001)
return
guess;
else
return
fun((x/guess/guess+2*guess)/3,x);
}
int
main()
{
float
a,b;
while(scanf("%f%f",&a,&b))
printf("%f\n",fun(a,b));
}
//a表示你猜測b的立方根大概等於幾.
② c語言迭代演算法,已知x使用公式計算x的立方根
#include <stdio.h>
int main()
{
float x = 1.0;
float a;
float xtmp = 0.0;
printf("\nInput a :\t");
scanf("%f",&a);
while((x-xtmp >1e-5) || (x-xtmp < -1e-5))
{
xtmp = x;
x = (2*xtmp/3 + a/(3*xtmp*xtmp));
}
printf("\nx = %f",x);
return 0;
}
③ c語言怎麼求立方根
第一,初值怎麼給都無所謂只是迭代的問題,只要符合條件是非負數就行。第二,假如要求立方根只不過是求導數時不一樣。
④ c語言 用迭代法求解
#include
<stdio.h>
#include
<math.h>
int
main(void)
{//本程序已測試,完全可用
double
a;
printf("input
a:");
scanf("%lf",&a);
if(fabs(a)<1e-13){//需要注意為0的情況,double雙精度精確到15位,這里設置下
printf("0");
return
0;
}
double
x,y;
x=a;
y=(2*x/3)+(a/(3*x*x));
while(fabs(y-x)>0.000001){
x
=
y;
y=(2*x/3)+(a/(3*x*x));
printf("%.6f
%.6f\n",x,x*x*x);
}
}
第一個回答的同志有兩個錯誤
1,倒數第三行while(fabs(xk2-temp)<1e-6)中的<應該改為>才對
2,沒有考慮輸入的數很小為0的情況
⑤ C語言:要求用遞歸方法編程,用迭代法求x=a的立方根
floatGetCubeRoot(floatx,floata)//調用的時候直接GetCubeRoot(a,a),a為要開根的數
{
floatx1=2.0/3*x+a/(3*x*x);
if(x-x1>-0.00001&&x-x1<0.00001)
returnx1;
else
return GetCubeRoot(x1,a);
}
⑥ c++迭代法求立方根 怎麼做!!
#include<iostream>
#include<cmath>
usingnamespacestd;
intmain()
{
doublex1,x2,a;
cout<<"inputx1=";
cin>>a;
x1=2;x2=0.0;
//while(abs(x1-x2)<1e-5)
while((x1-x2>1e-5)||(x1-x2<-1e-5))
{
x2=x1;
x1=2*x2/3.0+a/(3*x2*x2);
}
cout<<x1<<endl;
return0;
}
⑦ 用c語言迭代法實現x=a的立方
import java.util.*;
public class T {
void show(int x){
System.out.println("輸出立方:"+Math.pow(x, 3));
}
public static void main(String[] args){
T t=new T();
Scanner sc=new Scanner(System.in);
System.out.println("請輸入你自定義的數x:");
int x=sc.nextInt();
t.show(x);
}
}
運行結果如下:
請輸入你自定義的數x:
3
輸出立方:27.0
這是我用java代碼給你寫的,不過注意:我並沒有用迭代法,等一會我給你發過迭代法的做法;