数学建模社区-数学中国

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

作者: lxy444    时间: 2014-8-31 15:19
标题: 求助,用牛顿切线法编写的一个求根程序,恳请各位大侠指点一下
我想用mathematica编写一个求根函数,用牛顿切线法,我编的函数如下:$ |( Z, H2 ~1 U$ ~
Newton[f_,{x_,x0_},e_]:=
/ X! a+ d: H4 n% ^5 `0 ]Module[{df,x1,y0,y1,k},
. U7 s* j7 B) E1 Y1 v0 n+ Jdf=D[f,x];
" B% o( |6 b' ^2 v) @- q6 jy0=f/.x->x0;y1=df/.x->x0;
1 {# V0 {" j2 U1 J: Ax1=x0-y0/y1;
& L) r- r3 W% K  mk=1;
! g* N" r! l8 ^2 k- p3 yWhile[Abs[x1-x0]>e,
7 x1 `! ~: G5 L. m2 K6 k/ F1 k- h3 Px0=x1;
6 u9 d. R1 _, E3 I5 P  ~) \y0=f/.x->x0;y1=df/.x->x0;9 s4 W5 U2 f- O9 c- a
x1=x0-y0/y1;) H+ n3 y1 M' D  j
k=k+1;, g6 C' l! X# P1 d( q% _' ^8 D
]
4 I. ^6 d. t4 C5 k6 `- I; LPrint["迭代次数为:",k];
' f9 d! e' |+ S% e' `7 B. x1 GPrint["近似根为:",x1];% m9 B5 E/ h# Y
]
' {9 P- T7 B* n/ K& g8 d( R) u" B# _! U: j/ H
但是当我调用它时,会出现这样的提示,如下:" y9 A4 \/ X" E2 o
! c9 S5 Z& D& @- o6 K  @6 i
这是为什么啊?求高手解答,应该怎么修改啊
) {# z$ O* G  U( W; G: V* t. a6 Z' J/ k2 L6 O
4 E4 d( i( l1 t2 T9 n/ N: G5 m

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

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];: J" A' D+ I( a; S. l$ q' p
  2.   y0 = f /. {x -> x0; y1 = df} /. x -> x0;8 B$ S; V; j' T$ W3 h1 q: [( ~
  3.   x1 = x0 - y0/y1;
    , u8 @3 T% O( Q1 k) X% S; x, a! b7 ^/ y
  4.   k = 1;
    1 W- x' r+ [5 t& J  w* K* A
  5.   While[Abs[x1 - x0] > e, x0 = x1;$ E& ]5 F: I1 m* i) s4 i6 L0 j: _
  6.     y0 = f /. x -> x0; y1 = df /. x -> x0;3 K; V7 m6 l+ H* E" n4 [6 d! J) k' }
  7.     x1 = x0 - y0/y1;9 J% R" K, }/ G9 v' |) N
  8.     k = k + 1;] Print["迭代次数为:", k];
    ( v. t1 {/ Q0 o7 o2 x
  9.   Print["近似根为:", x1];]
复制代码
可选参数应该放在一个表里面
作者: lxy444    时间: 2014-9-1 00:08
madio 发表于 2014-8-31 21:59 ) `) \0 f( N. K. b1 L4 L  m
可选参数应该放在一个表里面
8 S/ P+ Y& O% [* ?3 {3 _4 q
哦,明白了,十分感谢!
作者: Agent-Zero    时间: 2014-9-1 10:23
不明觉厉。就是看看。。。




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