数学建模社区-数学中国

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

作者: lxy444    时间: 2014-8-31 15:19
标题: 求助,用牛顿切线法编写的一个求根程序,恳请各位大侠指点一下
我想用mathematica编写一个求根函数,用牛顿切线法,我编的函数如下:% M6 i+ p7 P0 Q3 l% O9 {; U4 m
Newton[f_,{x_,x0_},e_]:=
2 Y" v$ p6 }3 OModule[{df,x1,y0,y1,k},# s6 O; g1 L0 D9 z+ T( v
df=D[f,x];
/ N8 `, u' L  q' q, P! ^$ X; Py0=f/.x->x0;y1=df/.x->x0;
. W  v8 f" B" Q. a5 C- t5 rx1=x0-y0/y1;, p- J* b) d! t# P- k/ h4 }
k=1;' Q$ H' D- G. n8 N
While[Abs[x1-x0]>e,# f. y( X) q2 u% A$ K/ B
x0=x1;6 N0 _! u1 G& k1 x
y0=f/.x->x0;y1=df/.x->x0;+ [( @7 Z! X3 P" A
x1=x0-y0/y1;. [. E! Z$ B" y' U, @
k=k+1;
2 v. u, q9 H) E! r: O3 }, i]
! M3 V; z- b$ n' f, `Print["迭代次数为:",k];
& y0 `' _9 [! h( z5 [. dPrint["近似根为:",x1];- Q. _( ?9 m/ g
]( f7 h* \  F, |9 e1 m) N5 H% V

  ]9 a  M( O2 f4 M但是当我调用它时,会出现这样的提示,如下:) _$ I# O- _0 {( {

5 G% j! c# |# D2 N/ r这是为什么啊?求高手解答,应该怎么修改啊# A4 D) y$ y* ?0 w. d( H
% O: l/ [4 n2 I" D
/ J3 D2 Q: X! g6 f" j

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

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];1 _6 o: x2 f4 F( P; C
  2.   y0 = f /. {x -> x0; y1 = df} /. x -> x0;
    , g7 T# U9 D2 I! F2 \- ?. f
  3.   x1 = x0 - y0/y1;
    % k8 M' ~* o0 Z3 h0 l& f4 d1 o& N3 S
  4.   k = 1;+ V, Z5 \% t, F) s5 h
  5.   While[Abs[x1 - x0] > e, x0 = x1;8 R, F: V, R2 _1 Z2 w
  6.     y0 = f /. x -> x0; y1 = df /. x -> x0;& F4 l8 Q8 P- B( Z: e& O8 t
  7.     x1 = x0 - y0/y1;+ O% V) t0 u% n  I. y
  8.     k = k + 1;] Print["迭代次数为:", k];4 x% \2 X/ X. e" \. n1 m# u# e
  9.   Print["近似根为:", x1];]
复制代码
可选参数应该放在一个表里面
作者: lxy444    时间: 2014-9-1 00:08
madio 发表于 2014-8-31 21:59
5 V- ?) |2 t4 v4 s* D可选参数应该放在一个表里面

; K4 s# |6 N7 v哦,明白了,十分感谢!
作者: Agent-Zero    时间: 2014-9-1 10:23
不明觉厉。就是看看。。。




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