Help with subs command and symbolic variables
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
i have written a piece of code,(apologises for it not being that quick or tidy) but the symbolic values between lines 72 and 78 won't substitute in for the prescribed values above?.. and i have no idea what im missing or could be wrong :(
function assignment_3_5
clc
close all
syms m1p m2p a1p a2p k1 k2 d1p d2p Fp m1q m2q c1 c2 a2q a1q v1q v2q dt F1 Fq
k1 = 1; k2 = 0.1; c1=0.1; c2=1;
m1p = 3; m2p=1.5;
m1q = 2; m2q=1;
EQN1=[m1p 0;0 m2p]*[a1p;a2p]+[(k1+k2) -k2; -k2 k2]*[d1p;d2p] -[F1;Fp]
EQN2=[m1q 0;0 m2q]*[a1q;a2q]+[(c1+c2) -c2; -c2 c2]*[v1q;v2q] -[0;Fq]
syms diss1q1 diss1q2 veloc1q diss1p1 diss1p2 veloc1p
a1q = (((diss1q2 - diss1q1)/dt^2)-(veloc1q/dt));
a1p = (((diss1p2 - diss1p1)/dt^2)-(veloc1p/dt));
v1q = ((diss1q2 - diss1q1)/dt);
syms diss2q1 diss2q2 veloc2q diss2p1 diss2p2 veloc2p
a2q = (((diss2q2 - diss2q1)/dt^2)-(veloc2q/dt));
a2p = (((diss2p2 - diss2p1)/dt^2)-(veloc2p/dt));
v2q= ((diss2q2 - diss2q1)/dt);
d1p = diss1p2;
d2p = diss2p2;
EQN1 = subs(EQN1);
EQN2 = subs(EQN2);
%p
eqn1 = EQN1(1,1);
eqn2 = EQN1(2,1);
%q
eqn3 = EQN2(1,1);
eqn4 = EQN2(2,1);
%simplify equations 4 sep eqns in for expanded system
eqn1=simplify(eqn1);
eqn2=simplify(eqn2);
eqn3=simplify(eqn3);
eqn4=simplify(eqn4);
%
% pretty(eqn1)
% pretty(eqn2)
% pretty(eqn3)
% pretty(eqn4)
%%%system Q
%%%solve eqn3 for diss1Q2
diss1q2 = solve(eqn3,diss1q2);
Fq = solve(eqn4,Fq);
Fq = subs(Fq)
%%%System P
%%%subs Fq into eqn2 for Fp
Fp = -Fq;
disp('System p')
diss1p2 = solve(eqn1,diss1p2);
diss2p2 = solve(eqn2,diss2p2);
diss1p2 = subs(diss1p2)
DT=linspace(0,50,100);
%assume known dissplacment of balls 1 and 2
diss1p1 = 0;diss2p1 = 0;
diss1q1 = 0;diss2q1 = 0; diss2q2 = 1;
%assume known velocityies of balls 1 and 2
veloc1p = 0;veloc2p = 0;
veloc1q = 0;veloc2q = 0;
F1=0;
temp = subs(diss1p2)
for i = 1:100
dt = DT(i);
plt(i) = subs(temp);
%plt(i) = (-1200 -1860*dt -500*dt^2 - 682*dt^3 - 22*dt^4) / ((11*dt + 20)*(2*dt^4 + 39*dt^2 + 90));
end
plot(DT,plt)
end
1 comentario
Walter Roberson
el 17 de Abr. de 2013
Is it dt that is not being substituted?
Have you tried
plt(i) = double( subs(temp, 'dt', dt) );
Respuestas (0)
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!