[問題] 一些關於數學的問題

看板C_and_CPP作者 (none)時間12年前 (2012/03/26 05:57), 編輯推噓3(3013)
留言16則, 5人參與, 最新討論串1/4 (看更多)
原PO是一個剛接觸C語言的小新手 使用的開發平台是codeblocks 最近在寫程式的時候遇到了一點小問題想問各位大大 我原本的預想是設定一個方程式 A[1] A[2] A[n] f(x)=A[0]+ ── + ── +...───── x x^2 x的i次方 再來讓使用者可以輸入一連串的整數n A[1] A[2]...A[n] n是數值的個數 A[n]是數值 中間以空白區分 程式會依輸入的數值帶入原本設定的方程式 接著讓程式計算求出當f(x)=0的時候 x的值 誤差則設定在10^-4以下 以下是部分的程式碼 #include<stdio.h> #include<math.h> int main(){ int n; int a[]; double x; double fx; scanf("%d",&n) if(n==0) break; for(i=0,i<=n,i++){ scanf("%d",&a[i]); fx=fx+a[i]/x^i; } 我只寫到這裡就遇到瓶頸了@@ 我已經讓程式把fx記錄下來了 但是卻不知道怎麼把x的值計算出來 我有想過用自訂函數 可是不知道要怎麼把已記錄的數值代入@@ 可以請各位大大幫忙指導一下嗎QQ 感激不盡!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.32.242.172

03/26 06:49, , 1F
x 的值根本沒給啊
03/26 06:49, 1F

03/26 06:53, , 2F
你要解x喔 那可能你要跑一堆x去找哪個x會使得fx=0
03/26 06:53, 2F

03/26 06:57, , 3F
至於怎麼跑 可能要去看一下數值分析之類的書吧
03/26 06:57, 3F

03/26 10:20, , 4F
另外, x^i在C/C++裡不是x的i次方, 是x XOR i的意思:)
03/26 10:20, 4F

03/26 10:22, , 5F
另外運算子的優先順序要小心; 還有, (整數)3/(整數)2的
03/26 10:22, 5F

03/26 10:23, , 6F
結果, 在C/C++裡的答案是1而不是1.5, 要注意數值的型態.
03/26 10:23, 6F

03/26 10:24, , 7F
PS. 上面這點請參考置底十三誡之七:)
03/26 10:24, 7F
@shomingchang 我原本的意思就是要求出x的值@@ 我也是想說要跑一堆x來使得f(x)=0並把誤差控制在10^-4 我後來去問自己身邊學過的人 他說可以寫一個類似勘根定理還是十分逼近法的for迴圈 然後慢慢代入x的值 可是我只假定出double low 跟dowble up之後就不知道怎麼寫了冏 @VictorTom 原來如此@@ 因為我學的時候 別人都跟我說如果是2個數值做四則運算了話 只要其中一個是double 那麼輸出的值也會自動變成double int/int=int double/int=double 還是這樣的寫法有時候會出現問題 所以盡量不要混用? ※ 編輯: Accelsynchro 來自: 114.32.239.249 (03/26 13:24)

03/26 13:34, , 8F
除非分母為0,否則不會有問題,盡量用沒關係。
03/26 13:34, 8F

03/26 17:45, , 9F
盡量不要混用 最好"強制轉型" 避免意料之外的事情
03/26 17:45, 9F

03/26 17:46, , 10F
如果程式碼是自己使用 自己也深知轉型規則 那就沒有關係了
03/26 17:46, 10F

03/26 18:17, , 11F
如果沒有標準的f(x)值要怎麼知道誤差…你頂多能紀錄前一
03/26 18:17, 11F

03/26 18:18, , 12F
次迭代得到的f(x)和這次的f(x),相減得出他們的差值,再
03/26 18:18, 12F

03/26 18:19, , 13F
除以f(x)平均值得到相對誤差…理論上只要這個相對誤差縮
03/26 18:19, 13F

03/26 18:19, , 14F
小到門檻以下而且持續縮小就可以了,但是有時因為浮點數
03/26 18:19, 14F

03/26 18:20, , 15F
的某些特性,誤差會突然變大…你能多寫一些程式之後才會
03/26 18:20, 15F

03/26 18:20, , 16F
碰到這些問題,老實講現在談也是空談。
03/26 18:20, 16F
文章代碼(AID): #1FRvJdgn (C_and_CPP)
文章代碼(AID): #1FRvJdgn (C_and_CPP)