3

我需要编写一个定点迭代算法,它主要是编码的,但我遇到了这个错误:

未定义的函数或变量“g”。

我想将 g 定义为 g(x) = 1/2*(1+5/x)。但是,我是 matlab n00b 并且不确定如何执行此操作。任何帮助将不胜感激,谢谢。

  function [y,k] = fixedpoint(g,p0,tol,max1)
          for k=1:max1
          p = g(p0);
          err = abs(p-p0);
          abserr = abs(sqrt(5)-p);
          ratioerr = abserr/(abs(sqrt(5)-p0));

          if (err<tol)
             break
          end
          p0 = p;

  end
  if (k==max1)
      disp('The algorithm did not converge')
  end
  y = p;
4

1 回答 1

3

您可以定义g为匿名函数

g = @(x)1/2*(1+5/x)

fixedpoint然后以通常的方式调用你的函数

于 2013-09-21T22:16:49.870 回答