1樓:鷹弈
二分法的基本思路是:任意兩個點x1和x2,判斷區間(x1,x2)內有無一個實根,如果f(x1)與f(x2)符號相反,則說明有一實根。接著取(x1,x2)的中點x,檢查f(x)和f(x2)是否同號,如果不同號,說明實根在(x,x2)之間,如果同號,在比較(x1,x),這樣就將範圍縮小一半,然後按上述方法不斷的遞迴呼叫,直到區間相當小(找出根為止)!
比如用二分法求f(x)=x^3-6x-1=0的實根。
**如下(已除錯):
#include "math.h"
main()
float f(float x,float x1,float x2)
while(f1*f2>0); //確保輸入的x1,x2使得f1,f2符號相反
doelse if(f2*f>0) //當f與f2符號相同時
}while(fabs(f)>1e-6); //判斷條件fabs(f)>1e-6的意思是f的值非常0
return x;
}輸入:1 5
則輸出:x=2.528918
輸入:-10 10
則輸出:x=2.528918
2樓:阮飛
建議你問這些問題的時候給出方程,這樣,大家直接就給出你演算法和程式
c語言程式設計——內容:用牛頓迭代法求一元三次方程的根。要求:由主函式呼叫求根子函式,謝謝各位了
3樓:匿名使用者
牛頓迭代法
牛頓迭代法又稱牛頓切線法,它採用以下方法求根:先任意設定一個與真實的根接近的值x0作為第一個近似根,由x0求出f(x0),過(x0,f(x0))點做f(x)的切線,交x軸於x1,把它作為第二次近似根,再由x1求出f(x1),再過(x1,f(x1))點做f(x)的切線,交x軸於x2,再求出f(x2),再作切線……如此繼續下去,直到足夠接近真正的x為止。
其中f'(x0)是函式在x0處的斜率,也就是在x0處的導數。
**如下:
#include
#include
float f(float a,float b,float c,float d,float x)
float f1(float a,float b,float c,float x)
float root(float a,float b,float c,float d)
while(fabs(x1-x0)>=1e-6);
return x0;
}void main()
c語言二分法程式如下,結果好像沒問題,但提交系統總是說超時!誰能幫著修改一下,謝謝
淦海瑤 我看了一下,好像你的演算法思路不怎麼對,我把排序和二分法查詢給出for j 0 j n 2 j for i j 1 i n 2 i 排序結束 其實排序很多種方法,我喜歡這種l n 1 l代表末標,s代表首標 s 0 if ma l printf 不在這個區間 n1 else a mid 在後...
c語言誰會使用二分法法,查詢從鍵盤輸入的任意數,是否在下面的資料序列中。1 3 5
include using namespace std int num 7 已經排序 a low a high 區間內二分查詢關鍵字為 key 的元素 low 和 high 的初始值分別對應0 n 1int binsch int a,int low,int high,int key else ret...
二分法檢索如何進行,EXCEL如何進行二分法查詢
二分法檢索要求線性表結點按關鍵碼值排序且以順序方式儲存。在查詢時,首先與表的中間位置上結點的關鍵值比較,若相等則檢索成功 否則根據比較結果確定下一步在表的前半部或後半部中繼續進行。二分法檢索的效率較高,設線性表有n個元素,則最多的檢索次數為大於log2 n 的最小整數,最少的檢索次數為1。二分法檢索...