MATLAB Answers

How to prepare a matrix with variables that contain a range of values?

1 view (last 30 days)
Steven P.
Steven P. on 23 Apr 2021
Edited: Stephan on 23 Apr 2021
This is my first time writing matlab code and I am struggling. I am trying to write a transformation matrix for compliance and stiffness tensors matrices. The tranformation matrix is supposed to be Tsigma=[c^2 s^2 2cs; s^2 c^2 -2cs; -cs cs c*2-s^2] where c=cos(x) and s=sin(x) and x=-pi/2:pi/16:pi/2. This is what I had typed in which I know is completely wrong but I do not know where to begin. I keep getting a complicated matrix that says I cannot take the inverse of it, even though I need to. I need a series of 3x3 matrices with the different values of x put in but cannot seem to get it.
S is the compliance matrix and was defined as: S=[1/E1 -v12/E1 0; -v12/E1 1/E2 0; 0 0 1/G12] where E1=155; E2=12; v12=0.25; G12=5
The end goal is to determine Sbar=inv(Tsigma)*S*Tepsilon and Qbar=inv(Sbar). Tepsilon=[c^2 s^2 cs; s^2 c^2 -cs; -2sc 2sc c^2-s^2]. I had trouble getting this matrix to work out as well.
Any help or direction to get started would be very much appreciated!

Answers (1)

Stephan
Stephan on 23 Apr 2021
Edited: Stephan on 23 Apr 2021
syms c s x
% Tsigma
Tsigma = [c^2 s^2 2*c*s; s^2 c^2 -2*c*s; -c*s c*s c*2-s^2];
Tsigma = subs(Tsigma,[s, c],[sin(x), cos(x)])
Tsigma = 
% Tepsilon
Tepsilon = [c^2 s^2 c*s; s^2 c^2 -c*s; -2*s*c 2*s*c c^2-s^2];
Tepsilon = subs(Tepsilon,[s, c],[sin(x), cos(x)])
Tepsilon = 
% S
E1 = sym(155);
E2 = sym(12);
v12 = sym(0.25);
G12 = sym(5);
S = [1/E1 -v12/E1 0; -v12/E1 1/E2 0; 0 0 1/G12]
S = 
% Sbar symbolic function
Sbar(x) = inv(Tsigma)*S*Tepsilon
Sbar(x) = 
% Qbar symbolic function
Qbar(x) = inv(Sbar)
Qbar(x) = 
% Symbolic values of pi for the x values
pi_const = sym(pi);
xvals = -pi_const/2:pi_const/16:pi_const/2;
% preallocate
SbarVals = sym('sbar', [3,3,numel(xvals)]);
QbarVals = sym('qbar', [3,3,numel(xvals)]);
% calculate the resulting matrices
for k = 1:numel(xvals)
SbarVals(:,:,k) = Sbar(xvals(k));
QbarVals(:,:,k) = Qbar(xvals(k));
end
% Show values
SbarVals(:,:,1)
ans = 
QbarVals(:,:,2)
ans = 

Community Treasure Hunt

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

Start Hunting!