Having trouble with matrices? cant find error

2 ビュー (過去 30 日間)
asdfasdf
asdfasdf 2015 年 11 月 27 日
コメント済み: Walter Roberson 2019 年 3 月 5 日
I'm using matlab to design a truss and the output is suppose to be the deflections caused by the applied loads. But I keep getting "not a number" for my deflections . here is the warnings I get.
Warning: System may be partially constrained.
> In truss3 (line 222)
In truss3ex2 (line 26)
Warning: Matrix is singular to working precision.
> In truss3 (line 224)
In truss3ex2 (line 26)
relevant lines from truss3 starting at line 219
% Solve the force-displacement equations.
AA = [a,zero1;e,d]; BB = [b,zero2]'; detAA = det(AA);
if abs(detAA) < 1e-16
warning('System may be partially constrained.')
end
AAinv = inv(AA); sol = AAinv*BB;
% Prepare the output quantities.
pp = 0;
for i = 1:n
Jforce(i,1) = i; Jdispl(i,1) = i;
isol = 2*m+p+3*(i-1);
Jdispl(i,2) = sol(isol+1); Jdispl(i,3) = sol(isol+2);
Jdispl(i,4) = sol(isol+3);
end
here is the code.
% class design project example
%
% all of the members are quenched steel
% k = 2000 k-lb, Pmax = 1500 k-lb (A = 100 sq-inch)
%
clear
n = 24; m = 60; LOADZ = -20000; LOADY = 1000; A = 100;
joint = [0,0,0;0,0,-10;0,0,-20;12,0,0;12,0,-10;12,0,-20;...
0,10,0;0,10,-10;12,10,0;12,10,-10;0,20,0;0,20,-10;...
12,20,0;12,20,-10;0,30,0;0,30,-10;12,30,0;12,30,-10;...
0,40,0;0,40,-10;0,40,-20;12,40,0;12,40,-10;12,40,-20];
assembly = [1,2;1,4;1,7;2,3;2,4;2,5;2,6;2,7;2,8;3,6;3,8;...
4,5;4,9;5,6;5,9;5,10;6,10;7,8;7,9;7,11;8,9;8,10;8,11;...
8,12;9,10;9,13;10,13;10,14;11,12;11,13;11,14;11,15;11,16;...
12,14;12,16;13,14;13,17;13,18;14,18;15,16;15,17;15,19;15,20;...
16,17;16,18;16,20;16,21;17,18;17,22;17,23;18,23;18,24;19,20;...
19,22;20,22;20,23;20,24;21,24;22,23;23,24];
forceJ = [3,1,1,1;3,1,1,1;3,1,1,1;3,1,1,1;3,1,1,1;...
3,1,1,1;-1,0,0,0;-1,0,0,0;...
-1,0,0,0; -1,0,0,0;-1,0,LOADY,LOADZ;-1,0,0,0;...
-1,0,LOADY,LOADZ;-1,0,0,0;-1,0,0,0;-1,0,0,0;-1,0,0,0;-1,0,0,0;...
3,1,1,1;3,1,1,1;3,1,1,1;3,1,1,1;3,1,1,1;3,1,1,1];
for i = 1:m; stretch(i) = 2000*1000; end; stretch(1);
%
index = 1;
[Jforce,Mforce,Jdispl,Mdispl] = ... (LINE 26)
truss3(n,m,joint,assembly,forceJ,stretch,index);
%
peak_klb = 18*A
maxMforce_klb = max(abs(Mforce/1000))
maxJdispl = max(abs(Jdispl*12));
maxDX_in = maxJdispl(2),maxDY_in = maxJdispl(3),maxDZ_in = maxJdispl(4)
for forceJ, (3,1,1,1) indicates a external joint with 3 reaction forces. (-1,0,0,0) indicates an internal joint with no loads.
Can anyone help me figure out this problem with the matrices? I have no idea what to do
  2 件のコメント
Arnab Sen
Arnab Sen 2015 年 12 月 30 日
編集済み: Arnab Sen 2015 年 12 月 30 日
Provide the following information:
1.The entire code for 'truss3'.
2.Exact line or statement the script is throwing the error.
3.The exact error message.
4.As a workaround try 'pinv' function in place of 'inv' function.
Rena Berman
Rena Berman 2019 年 3 月 5 日
(Answers Dev) Restored edit

サインインしてコメントする。

回答 (1 件)

Walter Roberson
Walter Roberson 2015 年 12 月 30 日
AAinv = inv(AA); sol = AAinv*BB;
should be replaced by
sol = AA\BB;
This will find a least-squared solution to the problem even when the matrix is singular.
However, it cannot work miracles so you might still get inf or NaN.
  2 件のコメント
Walter Roberson
Walter Roberson 2019 年 1 月 11 日
pinv(AA)*BB is sometimes useful
Walter Roberson
Walter Roberson 2019 年 3 月 5 日
"System may be partially constrained" is a key message. It indicates that the definition of the truss has available rotations or translations that do not anchor the truss to a particular location or orientation. That matters because finite element methods have to quantize the space and assume that the locations transform gradually, which you cannot guarantee if you could in theory suddenly move or translate the object without changing the equations.
When a geometry has too many degrees of freedom, then it is typical that the solution matrix is singular, because by definition it is underdetermined.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeStructural Analysis についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by