1/*uva10341:
2給定f(x)=p*e^(-x) + q*sin(x) + r*cos(x)+ s*tan(x) + t*x^2 + u = 0 這個方程的解
3r,p>=0,q,s,t<=0 定義域[0,1]
4我們可以看到《數值分析》這一小結的內容,我們發現似乎沒有提及解方程的有效辦法。
5這道題目是使用了函式的單調性,也都是基礎函式的和。所以說,以後遇到這種問題要能辨識特殊性。
6那麼我們一定需要的是通解:
71、f(x)=冪函式的和
8例f(x)=5x^4-3x^3+6x^2+7x-9=0
9我們知道的工具是求導,判單調性,每個單調區間上都可能存在最多乙個解。
10單調性也是需要解f(x)=0的點的。
11假設f(i)是最高次數是i的乙個方程.
12則f(i)的零點出現在f(i-1)的零點所劃分區間上;
13這樣遞迴下去,直到解i=1時的零點就可以了;
14當然,f(i-1)是f(i)相應的導函式,過程可以直接模擬出來
152、其他數值分析的方法(待補充)
16以後遇到文獻,補充進去
17*/
18/*
這道題雖然思路簡單,但是卻能學到很多東西:
19詳細見下面的**,加注釋的部分,f(l)*f(m)<0判斷不行啊,一直是w,然而直接判斷f(m)就可以,
20後來想想,是因為(注意)兩個很小的小數相乘是乙個更小的數啊,近似等於0,計算機儲存的精度精度已經不夠了。
21以後要避免這方面的問題
22想了想解決辦法,一是等比例放縮,例f(l)*10^5*f(r)*10^5<1,注意數字乘的順序,將eps也擴大了,二是直接避免相乘出現
23*/
2425 #include26 #include27 #include
28 #include29 #include30 #include//
要用abs(double) math.h不可
31 #include32 #include33 #include34
#define eps 1e-15
35#define ll long long
36using
namespace
std;
3738
double
p,q,rr,s,t,u;
39double f(double x)//
因為巨集定義的語法問題,最好直接寫成函式呼叫
4043
intmain()
4459 printf("
%.4lf\n
",l);60}
61}62return0;
63 }
函式零點的求解方法
有了函式後,我們怎麼用呢?方程的分類 單個方程按其係數的性質分為線性方程和非線性方程。一元非線性方程求解 fzero roots fsolve 多元非線性方程求解 fsolve fzero fsolve 比較 解 fzero 函式,初值,options 解 fsolve 函式,初值,options ...
Bailan4142 二分法求函式的零點 二分法
4142 二分法求函式的零點 總時間限制 1000ms 記憶體限制 65536kb 描述 有函式 f x x5 15 x4 85 x3 225 x2 274 x 121 已知 f 1.5 0 f 2.4 0 且方程 f x 0 在區間 1.5,2.4 有且只有乙個根,請用二分法求出該根。輸入 無。輸...
習題5 2 二分法求函式的零點(POJ 4142)
note 題目不難只需用到二分法,但要特別注意判斷語句 if abs f mid 0.0000005 只要滿足精度在輸出要求的保留小數內即可 不能寫成if f mid 0 會超時。描述 有函式 f x x5 15 x4 85 x3 225 x2 274 x 121 已知 f 1.5 0 f 2.4 ...