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,發現了麼 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... 迭代法 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... 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 不收斂 ...用迭代法求x 根號(a) 求平方根的迭代公式為
sor迭代法 求matlab程式
牛頓迭代法(matlab)求個問題