Note that there area some poor practices in place here, but with the most minimal change to what you already have is to create a blank matrix Reactions and then add each column to that matrix as they are developed.
clear all
clc
F = 2;
x = [.1:.05:1.9];
Reactions = [];
for i = x;
theta1 = atan((2-i)/1);
theta2 = atan(1/(2-i));
theta3 = atan(1/i);
A = [-1 -cos(theta2) 0 0 0 0 0 0 0 0;
0 sin(theta2) 0 0 0 0 0 0 0 0;
1 0 -1 0 0 0 0 0 0 0;
0 0 0 1 0 0 0 0 0 0;
0 sin(theta1) 0 0 -1 -cos(theta3) 0 0 0 0;
0 -cos(theta1) 0 -1 0 -sin(theta3) 0 0 0 0;
0 0 1 0 0 cos(theta3) -1 0 0 0;
0 0 0 0 0 sin(theta3) 0 1 0 0;
0 0 0 0 1 0 0 0 -1 0;
0 0 0 0 0 0 0 -1 0 1];
b = [0 F 0 F/2 0 0 0 0 0 0]';
Reactions = [Reactions, A\b];
end
a better solution would be to loop over index value (instead of the values of x) and preallocate the matrix.
clear all
clc
F = 2;
x = [.1:.05:1.9];
Reactions = zeros(10,size(x,1));
for ii = 1:length(x)
theta1 = atan((2-x(ii))/1);
theta2 = atan(1/(2-x(ii)));
theta3 = atan(1/x(ii));
A = [-1 -cos(theta2) 0 0 0 0 0 0 0 0;
0 sin(theta2) 0 0 0 0 0 0 0 0;
1 0 -1 0 0 0 0 0 0 0;
0 0 0 1 0 0 0 0 0 0;
0 sin(theta1) 0 0 -1 -cos(theta3) 0 0 0 0;
0 -cos(theta1) 0 -1 0 -sin(theta3) 0 0 0 0;
0 0 1 0 0 cos(theta3) -1 0 0 0;
0 0 0 0 0 sin(theta3) 0 1 0 0;
0 0 0 0 1 0 0 0 -1 0;
0 0 0 0 0 0 0 -1 0 1];
b = [0 F 0 F/2 0 0 0 0 0 0]';
Reactions(:,ii) = A\b;
end
disp(Reactions)
Both are valid, but the later is more efficient and clear to future readers.
0 Comments
Sign in to comment.