sinx=x^2/2有且僅有一解,即x=0。“輸出每次迭代的結果以及所用”這是什麼意思?程式碼寫了,具體輸入什麼東西,你自己新增語句。注意:所輸入的區間[x1,x2]要保證f(x1)*f(x2)<0,這樣才能用二分法計算。程式碼如下:#include "stdio.h"#include "math.h"main(){ float x,x1,x2; float F(float x,float x1,float x2); printf("請輸入區間[x1,x2]\n"); scanf("%f%f",&x1,&x2); printf("x=%.5f\n",F(x,x1,x2));}float F(float x,float x1,float x2){ float f,f1,f2; do { f1=sin(x1)-pow(x1,2)/2; f2=sin(x2)-pow(x2,2)/2; }while(f1*f2>0); //確保輸入的x1,x2使得f1,f2符號相反 do { x=(x1+x2)/2; //求x1,x2的中點 f=sin(x)-pow(x,2)/2; if(f1*f>0) //當f與f1符號相同時 {x1=x;f1=f;} else if(f2*f>0) //當f與f2符號相同時 {x2=x;f2=f;} }while(fabs(f)>1e-6); //判斷條件fabs(f)>1e-6的意思是f的值非常0 return x;}輸入:-1 1結果:x=0.00000
sinx=x^2/2有且僅有一解,即x=0。“輸出每次迭代的結果以及所用”這是什麼意思?程式碼寫了,具體輸入什麼東西,你自己新增語句。注意:所輸入的區間[x1,x2]要保證f(x1)*f(x2)<0,這樣才能用二分法計算。程式碼如下:#include "stdio.h"#include "math.h"main(){ float x,x1,x2; float F(float x,float x1,float x2); printf("請輸入區間[x1,x2]\n"); scanf("%f%f",&x1,&x2); printf("x=%.5f\n",F(x,x1,x2));}float F(float x,float x1,float x2){ float f,f1,f2; do { f1=sin(x1)-pow(x1,2)/2; f2=sin(x2)-pow(x2,2)/2; }while(f1*f2>0); //確保輸入的x1,x2使得f1,f2符號相反 do { x=(x1+x2)/2; //求x1,x2的中點 f=sin(x)-pow(x,2)/2; if(f1*f>0) //當f與f1符號相同時 {x1=x;f1=f;} else if(f2*f>0) //當f與f2符號相同時 {x2=x;f2=f;} }while(fabs(f)>1e-6); //判斷條件fabs(f)>1e-6的意思是f的值非常0 return x;}輸入:-1 1結果:x=0.00000