MATLAB如何对矩阵求偏导数
运行一下程序要求矩阵N的偏导矩阵syms x y z m l n%定义这六个为函数自变量
%进计算以得出形状函数矩阵
%一下为定义正六面的形状矩阵N~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
n_1=1-x/m-y/l-z/n+x*y/(m*l)+y*z/(l*n)+z*x/(m*n)-x*y*z/(m*l*n);
n_2=x/m-x*y/(m*l)-z*x/(m*n);
n_3=x*y/(m*l)-x*y*z/(m*l*n);
n_4=y/l-x*y/m*n;
n_5=z/n-y*z/(l*n);
n_6=z*x/(m*n)-x*y*z/(m*l*n);
n_7=x*y*z/(m*l*n);
n_8=-x*y*z/(m*l*n);
for i=1:3
N_1(i,i)=n_1;
N_2(i,i)=n_2;
N_3(i,i)=n_3;
N_4(i,i)=n_4;
N_5(i,i)=n_5;
N_6(i,i)=n_6;
N_7(i,i)=n_7;
N_8(i,i)=n_8;
end
N=;%形状函数矩阵
N
偏导数矩阵为
偏/偏x 0 0
0 偏/偏y 0
0 0 偏/偏z
偏/偏y 偏/偏x 0
0 偏/偏z 偏/偏y
偏/偏z 0 偏/偏x
我用diff命令好像说是不能够循环
出现了一下错误 :
for i=1:24;
n=N(1,i);
b=diff(n,x);
B(1,i)=b;
b=diff(N(2,i),y);
B(2,i)=b;
b=diff(N(3,i),z);
B(3,i)=b;
b=diff(N(1,i),y)+diff(N(2,i),x);
B(4,i)=b;
b=diff(N(2,i),z)+diff(N(3,i),y);
B(5,i)=b;
b=diff(N(1,i),z)+diff(N(3,i),x);
B(6,i)=b;
end
B
??? Conversion to double from sym is not possible.
各位大侠 问问你们 谢谢
页:
[1]