0

次のようなシンボリック ベクトルがあります。

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)duCu12

わかりました、ここに私のコードがあります:

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 の係数から行列を作成する方法がわかりません。

4

0 に答える 0