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

5 vues (au cours des 30 derniers jours)
Steven P.
Steven P. le 23 Avr 2021
Modifié(e) : Stephan le 23 Avr 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!

Réponses (1)

Stephan
Stephan le 23 Avr 2021
Modifié(e) : Stephan le 23 Avr 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 = 

Catégories

En savoir plus sur Symbolic Math Toolbox dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by