用牛顿法求解Matlab中的非线性方程组

时间:2014-04-10 01:11:55

标签: matlab nonlinear-functions newtons-method

我正在使用一个程序,该程序在包含方程组和雅可比行列式的m文件上实现牛顿方法

function x = fun(x,mode)

% compute F(x)
  if mode == 1
      x   = [ 3*x(1)^2 + 5*x(2)^2 + x(2) - 1;
             x(1)^2 - 6*x(1) - 3*x(2) - 2];
  end 

% compute the Jacobian DF(x)
  if mode == 2
     x  = [ 1*x(1) 3*x(2)+1; 6*x(1)-2  -2];
  end 
return;

这是我开始的计算文件:

results.stat = 0;
if nargin == 3 
   epsilon = param.epsilon;
   nMax    = param.nMax;
else 
   epsilon = 1.0e-8; 
   nMax = 500;  
end

F = fun(x,1)
J = fun(x,2)
end

for k = 1:nMax 
    dx = -J\f
    x=x+dx  

我最终想要检查收敛并保存错误规范,并检查是否达到最大迭代计数而没有收敛。这到目前为止看起来不错吗?

0 个答案:

没有答案