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 ...