Mathematica中的Newton方法

时间:2014-09-05 00:17:51

标签: wolfram-mathematica

这是我需要编程的功能:

f(x)= 1 - e ^ cos(x)

  1. 使用牛顿方法逼近f的根近似4.使用10-5作为踢出阈值。
  2. 这是教授在另一个例子中为课程写出来的,所以我只是在这个问题中用函数复制了同样的东西:

    f[x_] = 1 - E^Cos[x];
    a = 4;
    Plot[f[x], {x, 0, 10}]
    
    i = 1;
    While[i <= 1000,
     g[x_] = D[f[x], x];
     b = a - f[a]/g[a];
     a = b;
     c = Abs[a - prev a]
       If[c < 10^-5,
        i = 10000;
        i++
        ];]
    Print[a];
    Print[f[a]];
    Print[i];
    

    我的问题是它没有迭代近似根。我做错了什么?

1 个答案:

答案 0 :(得分:1)

您的代码有一些拼写错误,加上prev a需要定义。

f[x_] = 1 - E^Cos[x];
a = 4;
Plot[f[x], {x, 0, 10}] 

i = 1;
While[i <= 1000,
 g[x_] = D[f[x], x];
 b = a - f[a]/g[a];
 preva = a;
 a = N[b];
 c = Abs[a - preva];
  If[c < 10^-5,
  i = 10000,
  i++];] 
Print[a];
Print[f[a]];
Print[i];