在Julia中调用多元牛顿方法时出现SingularException(2)

时间:2019-04-19 10:11:57

标签: julia newtons-method

我已经在Julia中实现了多元牛顿法。

function newton(f::Function, J::Function, x)
   h = Inf64
   tolerance = 10^(-10)
   while (norm(h) > tolerance)
      h = J(x)\f(x)
      x = x - h
   end
   return x
end

一方面,当我尝试求解以下方程组时,抛出LoadError: SingularException(2)

f(θ) = [cos(θ[1]) + cos(θ[2] - 1.3),
        sin(θ[1]) + sin(θ[2]) - 1.3]
J(θ) = [-sin(θ[1]) -sin(θ[2]); 
        cos(θ[1]) cos(θ[2])]
θ = [pi/3, pi/7]
newton(f, J, θ)

另一方面,当我尝试解决其他系统

f(x) = [(93-x[1])^2 + (63-x[2])^2 - 55.1^2, 
        (6-x[1])^2 + (16-x[2])^2 - 46.2^2]
J(x) = [-2*(93-x[1]) -2*(63-x[2]); -2*(6-x[1]) -2*(16-x[2])]
x = [35, 50]
newton(f, J, x)

没有引发错误,并且返回了正确的解决方案。

此外,如果我先解决第二个系统然后尝试解决通常抛出SingularException(2)的第一个系统,那么我现在没有遇到任何错误,但返回的是对第一个系统完全不正确的解决方案。

当我尝试解决第一个系统时究竟出了什么问题?如何解决该错误?

0 个答案:

没有答案