matlab小记(一)

求解多元函数的Jacobi矩阵,可以采用matlab中自带的diff函数,来求解。

diff函数在matlab中的调用格式:

diff(函数) , 求函数一阶导数;

diff(函数, n) , 求的n阶导数(n是具体整数);

diff(函数,变量名), 求对“变量名”的偏导数;

diff(函数, 变量名,n) ,求对“变量名”的n阶偏导数;

即使在函数中有些字母变量对应的是常数,但是我们在对其函数进行求偏导操作是,仍可以看其为变量,这样就可以采用diff函数,也不会影响求解结果。
%求解Jacobi矩阵
syms h h1 h2 s110 s111 s1130 s130 s140 c1 c2 b1 h3;
syms x1 x2 x3 x4;
f1(x1,x2,x3,x4,h,h1,h2,s110,s111,s1130,s130,s140,c1,c2,b1,h3)=s110+s111*x1+2*c1*h*h3*x2+(s1130-2*h*h3*x2)*x3+(-2*c2*h+2*h*h3*x1)*x4;

a11=diff(f1(x1,x2,x3,x4,h,h1,h2,s110,s111,s1130,s130,s140,c1,c2,b1,h3),x1);
a12=diff(f1(x1,x2,x3,x4,h,h1,h2,s110,s111,s1130,s130,s140,c1,c2,b1,h3),x2);
a13=diff(f1(x1,x2,x3,x4,h,h1,h2,s110,s111,s1130,s130,s140,c1,c2,b1,h3),x3);
a14=diff(f1(x1,x2,x3,x4,h,h1,h2,s110,s111,s1130,s130,s140,c1,c2,b1,h3),x4);

J=[a11 a12 a13 a14;a21 a22 a23 a24;a31 a32 a33 a34;a41 a42 a43 a44]

后来发现matlab函数中有求解Jacobi矩阵的自带函数,来求解,例程如下:

       syms x1 x2 x3 
  f1=f1(x1,x2,x3);
  f2=f2(x1,x2,x3);
  f3=f3(x1,x2,x3)
  J=jacobian([f1;f2;f3],[x1 x2 x3])

posted @ 2018-04-03 17:22  Qiangcm  阅读(308)  评论(0编辑  收藏  举报