在MatLab中编写函数

时间:2014-04-14 15:39:02

标签: matlab

我被要求在MatLab中做Jacobian来解决f(x)的最高值的坐标以及同一函数的最大值。

我必须使用的功能是:f(x; y) = (x^3y + 5x^2y^2)/ e^(x^2+3y^4)

所以到目前为止我所取得的成就:

function [j1,j2]=J(x)    
    [3*x(1)^2+20*x(1)*x(2)-36*x(1)^2*x(2)^4-120*x(1)*x(2)^5,10*x(1)^2-48*x(1)^3*x(2)^3-300*x(1)^2*x(2)^4;6*x(1)*x(2)+10*x(2)^2-8*x(1)^3*x(2)-30*x(1)^2*x(2)^2,3*x(1)^2+20*x(1)*x(2)-2*x(1)^4-20*x(1)^3*x(2)]     
end

我相信这是一个矩阵,包括f(x)的所有四个导数。 Nut现在我不知道如何解决我的两个问题。

1 个答案:

答案 0 :(得分:0)

答案已经在评论中给出,以确保问题不会无法解决,我将在此发布:

首先我把jocobian matris写成

function A = J(x) j11 = 6*x(1)*x(2)+10*x(2)^2-8*x(1)^3*x(2)-30*x(1)^2*x(2)^2; 
j12 = 3*x(1)^2+20*x(1)*x(2)-2*x(1)^4-20*x(1)^3*x(2); 
j21 = 3*x(1)^2+20*x(1)*x(2)-36*x(1)^2*x(2)^4-120*x(1)*x(2)^5; 
j22 = 10*x(1)^2-48*x(1)^3*x(2)^3-300*x(1)^2*x(2)^4; A = [j11, j12;j21, j22]; 
end 

然后我用这个函数来估计关键点

function xnp1 = NewtonMultyVar(x0,N); 
xn = x0; 
  for n = 1:N 
    xnp1 = xn - inv(J(xn))*z(xn); 
    xn = xnp1; 
end 
end 

其中x0是近似点而N代表数字符号。