我有一个像这样的符号向量:
du = [3u11 - 1u12, 8*u12 - u11 - 3*u14, 4*u13 - 5*u14, 11*u14 - 12*u13 - 8*u12]
然后我想提取系数,我可以用coeffs
函数来做到这一点,例如
coeffs(du(:,1))
返回[3, -1]
。
我想用一个for
循环来做到这一点,然后将系数插入一个矩阵。在这个例子中,矩阵是 4×4,所以我会用C = zeros(4)
. 然后,系数 ,[3,-1]
将分别放在C(1,1)
和C(1,2)
中,而coeffs(du(:,2)
返回[8, -1 -3]
的 , 将放在C(2,2)
,C(2,1)
和C(2,4)
中。因此,in 中的du
行将对应于 中的行C
,并且每个系数名称中的第二个数字,例如u12
,将对应于列。
好的,这是我的代码:
clc, clear all
k=[1,2,3,4,5];
nodes= [1 2; 2 4; 2 4;2 4; 4 3];
nnodes=4;
nelem=5;
u=sym('u%d%d',[1 nnodes]);
f(u)=sym('f(u)');
f(u)=0;
for i=1:nelem
f=f+0.5*k(i)*(u(nodes(i,2))-u(nodes(i,1)))^2;
end
for i=1:nnodes
du(i)=diff(f,u(i),1);
end
所以我不确定如何用 du 的系数制作矩阵