数学建模社区-数学中国

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

作者: lxy444    时间: 2014-8-31 15:19
标题: 求助,用牛顿切线法编写的一个求根程序,恳请各位大侠指点一下
我想用mathematica编写一个求根函数,用牛顿切线法,我编的函数如下:
2 [; H3 h! D( g* p2 A0 M$ bNewton[f_,{x_,x0_},e_]:=, y0 h& t( [+ k( F
Module[{df,x1,y0,y1,k},. K) ?2 e! Z) t
df=D[f,x];( Z' p6 G) }4 `8 c( e! m& t; k
y0=f/.x->x0;y1=df/.x->x0;: V$ t5 {) a2 [( q/ _3 ^. `7 X
x1=x0-y0/y1;
' k, Z. V" ?$ \7 {+ yk=1;# P  v6 D% [5 O
While[Abs[x1-x0]>e,% v! q$ d3 t1 M
x0=x1;
$ m- s9 G. {" Ry0=f/.x->x0;y1=df/.x->x0;! s. e7 Q) J9 O. j8 B6 k. E3 C( ]
x1=x0-y0/y1;( i' L' R8 g. M4 B
k=k+1;; B! ~/ q, {; X& Z
]
# l5 E  U! m3 P) j7 x- O* |Print["迭代次数为:",k];
: D: ?$ p" ~; B2 z, VPrint["近似根为:",x1];
3 u, Q7 D$ u2 `3 Q]# C- s2 }! j, H9 y

% ~0 ~4 _! H: z9 x3 s& ~但是当我调用它时,会出现这样的提示,如下:
3 Y: x' @3 o5 }2 E" ]
& L7 n5 d% N  F$ l5 E: U这是为什么啊?求高手解答,应该怎么修改啊7 H6 [5 b1 Y4 q; e! U+ \

- p7 F, G9 E" j* ^" ?+ W! m6 M
2 L" \9 O/ m" h7 `( `3 E7 ]

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

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];
    3 F2 ~3 t$ z5 [7 n3 Y! h- s
  2.   y0 = f /. {x -> x0; y1 = df} /. x -> x0;* p6 l& U4 c! j; Y4 L0 d
  3.   x1 = x0 - y0/y1;
    ( M% z0 g9 b3 z  i/ E, B
  4.   k = 1;& K: n6 q# [: g
  5.   While[Abs[x1 - x0] > e, x0 = x1;
    ! G1 p/ Q. v) n' k9 `5 ^/ g
  6.     y0 = f /. x -> x0; y1 = df /. x -> x0;( B( n- Y) e2 N9 M2 d2 D0 q
  7.     x1 = x0 - y0/y1;
    0 G1 M9 g/ _2 i+ e6 Y: T2 s
  8.     k = k + 1;] Print["迭代次数为:", k];
    # B2 H- n- P) _6 G4 C8 F, O2 w
  9.   Print["近似根为:", x1];]
复制代码
可选参数应该放在一个表里面
作者: lxy444    时间: 2014-9-1 00:08
madio 发表于 2014-8-31 21:59 * ~9 b  f$ \" A$ R! ~5 q7 p0 L8 W  P
可选参数应该放在一个表里面
- W5 k2 z  L; J! r0 L- {
哦,明白了,十分感谢!
作者: Agent-Zero    时间: 2014-9-1 10:23
不明觉厉。就是看看。。。




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