C語言表程式設計 用二分法求一元三次方程的根要求 又主函式呼叫

時間 2021-09-03 05:42:41

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。二分法檢索...