数学建模社区-数学中国

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

作者: lxy444    时间: 2014-8-31 15:19
标题: 求助,用牛顿切线法编写的一个求根程序,恳请各位大侠指点一下
我想用mathematica编写一个求根函数,用牛顿切线法,我编的函数如下:( g) Z4 q' ^7 \* H# `! J
Newton[f_,{x_,x0_},e_]:=
" F+ D3 V  R  j( PModule[{df,x1,y0,y1,k},/ u& R* Z5 M" g4 z1 R
df=D[f,x];
( r8 r+ D5 [: F( [2 C4 m1 Ty0=f/.x->x0;y1=df/.x->x0;
; P! a7 A: O: S# hx1=x0-y0/y1;, ]0 W* o# e' ]( o# Z
k=1;, Z- d4 E. {- n4 S8 ]. I7 W
While[Abs[x1-x0]>e," n8 w; u  h8 Y: X7 e9 S0 e7 b2 p
x0=x1;
+ v  \3 [& I& I4 D& n" sy0=f/.x->x0;y1=df/.x->x0;
  ?; n, H7 |" ?6 `! U. ex1=x0-y0/y1;% e8 y4 f3 A. N, K) P
k=k+1;
1 W+ w- L. x, A0 o$ Q9 V6 u" l]
: v3 l, `3 l; ]  W/ k' @Print["迭代次数为:",k];
& M' i. p* K$ n8 \' ~$ pPrint["近似根为:",x1];
1 n, M3 H7 E) n]! t2 `! V0 n5 R1 g  R- x5 K
6 q2 L" {. C. y% B$ z
但是当我调用它时,会出现这样的提示,如下:# k) t. t3 o+ q( o. s
( N. G! q- z1 `& ^4 C# F/ N% `  _
这是为什么啊?求高手解答,应该怎么修改啊" q# i: s4 ~/ p/ K7 ^: `

$ ~0 C5 V$ {+ a: K3 U) v  t* z* |8 V# o9 g2 |* H# H: n

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

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];& {6 c: V+ |1 P8 b; S- m
  2.   y0 = f /. {x -> x0; y1 = df} /. x -> x0;/ O* P3 ^9 n% L* w8 w
  3.   x1 = x0 - y0/y1;) P" _; ]. ~# ?' U8 Z# A
  4.   k = 1;, U* ]% w) K, v( S! R2 T
  5.   While[Abs[x1 - x0] > e, x0 = x1;  X; K3 ~! T, p8 i3 I0 _! o! j
  6.     y0 = f /. x -> x0; y1 = df /. x -> x0;8 C' P: Y9 n& d( z4 m( O) h
  7.     x1 = x0 - y0/y1;2 M3 c# f1 a- q
  8.     k = k + 1;] Print["迭代次数为:", k];' ~8 p1 K; R* h' @
  9.   Print["近似根为:", x1];]
复制代码
可选参数应该放在一个表里面
作者: lxy444    时间: 2014-9-1 00:08
madio 发表于 2014-8-31 21:59   X  Q/ X9 o3 V* o/ Z4 f# A# A5 }* [5 S
可选参数应该放在一个表里面
2 _/ d5 u" t2 m; \  p  q, a
哦,明白了,十分感谢!
作者: Agent-Zero    时间: 2014-9-1 10:23
不明觉厉。就是看看。。。




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