English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

設計一牛頓法的程式
求出f(x)=x³+2x²+3x-1的根,其誤差範圍在0.001內。

2006-05-11 20:32:35 · 3 個解答 · 發問者 ☆小魈☆ 1 in 電腦與網際網路 程式設計

能註解一下程式的用意

2006-05-12 14:03:24 · update #1

謝謝大大ㄋ

2006-05-12 14:03:48 · update #2

3 個解答

f(x)=x³+2x²+3x-1
f'(x)=3x²+4x+3

若使用C語言

#include
#include
void main()
{
float xn1,xn;
xn1=1;
do
{
xn=xn1;
xn1 = xn - (pow(xn,3) + 2*pow(xn,2) + 3*xn - 1) / (3*pow(xn,2) + 4*xn +3);
}
while(abs(xn - xn1) >= 0.001);
printf("The solution of x³+2x²+3x-1=0 is approximately %f\n",xn1);
}

2006-05-13 00:50:16 補充:
牛頓法Xn+1 =Xn-f(Xn)/f'(Xn) n=1,2,3,...
(Xn+1的n+1是下標,不是(Xn)+1喔,因為不知怎麼下標字)
Xn先代入一個數字,算出Xn+1,再將Xn+1代入Xn得出第二個Xn+1,一直代下去得到的Xn+1會變化越來越小就是我們要的近似根
xn1=xn-(pow(xn,3)+2*pow(xn,2)+3*xn-1)/(3*pow(xn,2)+4*xn+3)
就是Xn+1=Xn-(Xn³+2Xn²+3Xn-1)/(3*Xn²+4Xn+3)用一do-while回圈一直把算出Xn+1代入Xn,直到Xn和Xn+1的差,小於0.001才停止,大概就是這樣

2006-05-13 10:00:54 補充:
簡單說%f是C語言印浮點數用的,可設格式,比方說%8.4f印出來整個浮點數佔8個位置,小數點後有4位,只寫%f內定小數點後6位的樣子,\n是new line,也就是換行.如果你printf不熟,可以自己改用cout<<"x="<

2006-05-12 10:34:04 · answer #1 · answered by chan 5 · 0 0

謝謝大大ㄋ還有這是%f\n什麼語法ㄚ謝謝ㄋ

2006-05-14 01:28:41 補充:
恩謝謝大大的幫忙ㄋ

2006-05-12 23:25:12 · answer #2 · answered by ☆小魈☆ 1 · 0 0

http://cetus.cs.tku.edu.tw/~u91510120/pbl466z/

2006-05-12 09:33:48 · answer #3 · answered by Piman 1 · 0 0

fedest.com, questions and answers