Having trouble with matrices? cant find error

조회 수: 3 (최근 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 CenterFile Exchange에서 Structural Analysis에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by