数学建模社区-数学中国

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

作者: lxy444    时间: 2014-8-31 15:19
标题: 求助,用牛顿切线法编写的一个求根程序,恳请各位大侠指点一下
我想用mathematica编写一个求根函数,用牛顿切线法,我编的函数如下:, v- S4 h6 l5 z% {. j' T7 Z, E
Newton[f_,{x_,x0_},e_]:=. k1 N0 R$ _' }8 M1 x$ y
Module[{df,x1,y0,y1,k},8 }5 H2 p' h3 s4 C3 S
df=D[f,x];
; E& u0 s/ i3 w# j, o1 G5 Ay0=f/.x->x0;y1=df/.x->x0;
& Z2 M  ?" \+ L$ y  I# b( bx1=x0-y0/y1;
) ]. a1 R" f6 r# Z& _k=1;% m$ G8 ~4 v# E2 n- J( l9 e
While[Abs[x1-x0]>e,
7 m% _1 ?# B* j  a0 q! A1 E4 dx0=x1;* M. Y: P. |$ Y1 `* ?5 h) O7 H
y0=f/.x->x0;y1=df/.x->x0;) _6 v0 Z& t8 T) T6 S1 H" [
x1=x0-y0/y1;
3 l$ b1 L' ~5 }: Q- J/ M* rk=k+1;
! @/ B9 u  \& i3 s+ x/ u]
5 J8 S4 ^: ^2 ]; e9 nPrint["迭代次数为:",k];6 @( `3 F4 G& c! {3 E8 j
Print["近似根为:",x1];
1 l1 C* Y; {0 J! Q; g- `; A], P* k5 ?4 j1 L# @7 S
1 T. C! E* Q2 W2 _. _& N
但是当我调用它时,会出现这样的提示,如下:
; m( P4 d6 U' Y
: B; Q" T6 F5 _这是为什么啊?求高手解答,应该怎么修改啊
2 C' S. l1 I8 N/ d/ g, D% }6 H: K0 u1 [5 q1 N
+ y5 x3 q: N9 c5 ~( U

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

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];" g, I" V& a3 W: R9 o! H# P8 G
  2.   y0 = f /. {x -> x0; y1 = df} /. x -> x0;
    $ ^; c! @3 M3 k# m9 Q
  3.   x1 = x0 - y0/y1;
    0 m6 W1 z5 y, _8 K# p  s6 N+ o
  4.   k = 1;, n" c# W$ C) q9 }4 Y
  5.   While[Abs[x1 - x0] > e, x0 = x1;1 f9 M! _/ p5 O! ]" C+ h
  6.     y0 = f /. x -> x0; y1 = df /. x -> x0;4 v9 E; _* ^1 N& a( l% `6 K% S  k' x
  7.     x1 = x0 - y0/y1;- m1 X+ T2 ^  S, M' z) v
  8.     k = k + 1;] Print["迭代次数为:", k];* R; o7 Q6 ]. ?5 k/ |: T
  9.   Print["近似根为:", x1];]
复制代码
可选参数应该放在一个表里面
作者: lxy444    时间: 2014-9-1 00:08
madio 发表于 2014-8-31 21:59
  f$ A" [/ u! }# y可选参数应该放在一个表里面

& u" p$ ]; I! |3 k# s7 a: ^  m哦,明白了,十分感谢!
作者: Agent-Zero    时间: 2014-9-1 10:23
不明觉厉。就是看看。。。




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