数学建模社区-数学中国

标题: 求助,用牛顿切线法编写的一个求根程序,恳请各位大侠指点一下 [打印本页]

作者: lxy444    时间: 2014-8-31 15:19
标题: 求助,用牛顿切线法编写的一个求根程序,恳请各位大侠指点一下
我想用mathematica编写一个求根函数,用牛顿切线法,我编的函数如下:! F' N& O' Q5 U" {$ {8 b
Newton[f_,{x_,x0_},e_]:=
7 G; m" y" D" _( q  J5 pModule[{df,x1,y0,y1,k},; E6 G+ ?1 D2 x; T; g+ I% o) M
df=D[f,x];' m* h+ w5 f$ j9 @- O! O2 _
y0=f/.x->x0;y1=df/.x->x0;; v; Z9 |( Y: }! m
x1=x0-y0/y1;$ [2 B7 i* A3 b# I6 [
k=1;  q+ z/ _5 {9 r4 K4 k- q
While[Abs[x1-x0]>e,2 |8 L+ G- Y8 t2 A9 w$ b
x0=x1;# @6 ^- T$ m$ y) R1 \
y0=f/.x->x0;y1=df/.x->x0;
. ]. O9 [1 k  Y% _$ g- Zx1=x0-y0/y1;4 g9 t" v" j; Z2 K; S
k=k+1;) W6 x% L) ?; k9 U
]
9 J/ [% j: K; p; H8 bPrint["迭代次数为:",k];4 M  H! k$ }/ Z4 D8 `3 o
Print["近似根为:",x1];' \+ J* m/ U; M! d
]; o: {, t: U4 p6 U

( Q) n2 ^3 ]) F: M1 Y3 x但是当我调用它时,会出现这样的提示,如下:5 ?% T- H& L# X1 S7 [8 U0 x
9 w2 y1 q* ?& p
这是为什么啊?求高手解答,应该怎么修改啊) ]6 Y/ v" O1 S/ J4 \( m' T- u+ U
7 ^8 j5 P& @7 _4 S( R4 |
8 `  x- S( K/ u1 ^/ ~

1.PNG (19.82 KB, 下载次数: 266)

1.PNG


作者: lxy444    时间: 2014-8-31 15:22
恳请大神解答!@madio  
作者: madio    时间: 2014-8-31 21:59
  1. Newton[f_, {x_, x0_}, e_] := Module[{df, x1, y0, y1, k}, df = D[f, x];
    " y# V2 H( U# {% X1 @
  2.   y0 = f /. {x -> x0; y1 = df} /. x -> x0;) O8 Z) ]# F# ^  S; B7 I$ k: j
  3.   x1 = x0 - y0/y1;
    # f3 i" A( }2 }3 B" M
  4.   k = 1;
    - I5 w! X0 X5 ]9 R
  5.   While[Abs[x1 - x0] > e, x0 = x1;3 R' x# u- n7 W/ g0 q: l
  6.     y0 = f /. x -> x0; y1 = df /. x -> x0;
    % e6 z$ `$ d" Z5 o( ?8 w3 r6 z
  7.     x1 = x0 - y0/y1;
    $ C" X6 a+ o, J7 B( r
  8.     k = k + 1;] Print["迭代次数为:", k];
    & I+ H0 [, [/ V; C( H
  9.   Print["近似根为:", x1];]
复制代码
可选参数应该放在一个表里面
作者: lxy444    时间: 2014-9-1 00:08
madio 发表于 2014-8-31 21:59
( g: l% Y, O1 z* F/ X可选参数应该放在一个表里面
5 R; Z+ N# ^& @3 F$ b; a! C
哦,明白了,十分感谢!
作者: Agent-Zero    时间: 2014-9-1 10:23
不明觉厉。就是看看。。。




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5