c 用迭代法求立方根,C 用迭代法求立方根?

時間 2021-09-02 11:59:39

1樓:匿名使用者

把 x2=2/3*x1+a/(3*x1*x1);

改為 x2=2.0/3*x1+a/(3*x1*x1);

就可以了。

編譯器認為2/3是整數除法,結果為0。

2樓:華娛創世

例如:#include "iostream.h"#include "math.

h"void main()if(x1==pow(a,1/3))cout<<"a="<

這是我的** 這個執行了以後總是隻顯示a=1,x=1而不顯示a=2~10時的情況

如果把if(x1==pow(a,1/3))這一行刪掉就能顯示a=1~10所有的情況,但是題目要求通過呼叫pow(x,1/3)函式加以驗證

解:比較浮點數是否相等時,考慮有舍入誤差,一般不用a==b

而是abs(a-b)《某個小值

基本上程式迭代出來的結果和呼叫pow函式的結果是有誤差的,==的判斷很難成立

以此類推

3樓:

我找了一段正確的程式,如下:

注意看,它的判斷條件跟你的是不同的,還有就是你的**,一開始x1=0的話,x2=2/3*x1+a/(3*x1*x1); 分母為0了,當然出錯了。

求立方根的牛頓法基於如下事實,如果y是x的立方根的一個近似值,那麼下式將給出一個更好的近似值:

(x/y2+2y)/3

**:#include

#include

float fun(float guess,float x)int main()

//a表示你猜測b的立方根大概等於幾.

4樓:

2/3==0,發現了麼

用迭代法求x 根號(a) 求平方根的迭代公式為

include include define eps 1e 6 void main x1 0 x0 a dif a while dif eps n 1000 if n 1000 printf sqrt a,x0,flag 1?i 就是讓你不用sqrt 這個函式來求平方根而已。c 高手進 用迭代法求x...

sor迭代法 求matlab程式

迭代法 matlab實現 如下 function x,n jacobi a,b,x0,eps,varargin if nargin 3 eps 1.0e 6 m 200 elseif nargin 3 disp 輸入引數數目不足3個 return elseif nargin 5 m varargin...

牛頓迭代法(matlab)求個問題

x 10 1 x syms x f x x 10 df diff f,x eps 1e 6 x0 10 cnt 0 maxcnt 200 最大迴圈次數 while cnt if abs x1 x0 break endx0 x1 cnt cnt 1 endif cnt maxcnt disp 不收斂 ...