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

時間 2021-09-03 05:43: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()

一元三次方程的最大值怎麼求,一元三次函式最值怎麼求?

潭厚赫飛語 你可以求一下單調區間啊,看看在 1,5 上是增還是減啊,設x1大於x2然後判斷f x1 f x2 的符號 元喜市綺夢 x 14時,y最大,約為15.7547 亓立軒 y 20 2x 2 x 4x 3 80x 2 400xy的導數 12x 2 160x 400 令導數 0 則有 x 10 ...

C 求一元二次方程的根

濮陽蘭登燕 這是一道經典題 我在很多地方都看到過這道題。如下 include include void f float m,float n,float l if deta 0 printf 方程有一個解。nx g n x1 if deta 0 printf 方程有兩個解。nx1 g,x2 g n x...

c語言,牛頓迭代法求三次方程的根。一下程式為何錯誤

樓主你好。我修改了下程式,可以正常執行,如下 include include include int a,b,c,d float f float x1 float f1 float x2 float dian int x float qiu float y1 int main 輸出 1 1 1 1 ...