次のようなシンボリック ベクトルがあります。
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]
配置されますが、 を返す は、、およびに配置されます。したがって、 の行は の行に対応し、各係数名の 2 番目の数字 (たとえば、) は列に対応します。 C(1,1)
C(1,2)
coeffs(du(:,2)
[8, -1 -3]
C(2,2)
C(2,1)
C(2,4)
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 の係数から行列を作成する方法がわかりません。