converting equation into multiple of two matrix

1 Ansicht (letzte 30 Tage)
Rahul Jangid
Rahul Jangid am 5 Jan. 2023
Kommentiert: Torsten am 6 Jan. 2023
hi there,
hope you are doing good
guys i want to convert some equations into the multiple of two matrices automatically. for example
it will be appreciated if u will help me.
thanks in advance .

Akzeptierte Antwort

Torsten
Torsten am 5 Jan. 2023
  4 Kommentare
Rahul Jangid
Rahul Jangid am 6 Jan. 2023
thanks bro tomorrow i am trying with
[A,b] = equationsToMatrix(eqns)
and getting error as
Error using mupadengine/feval_internal
Unable to convert to matrix form because the system does not seem to be linear.
Error in sym/equationsToMatrix (line 61)
T = eng.feval_internal('symobj::equationsToMatrix',eqns,vars);
Error in P_rough (line 11)
[A,b] = equationsToMatrix(eqns)
but after using
vars = [x y z]
[A,b] = equationsToMatrix(eqns,vars)
i am getting correct
thanks for your time
Torsten
Torsten am 6 Jan. 2023
Of your equations are nonlinear in x,y and z, equationsToMatrix will not work.
Your equations in the graphics you included were linear in x,y and z.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Rahul Jangid
Rahul Jangid am 6 Jan. 2023
Bearbeitet: Torsten am 6 Jan. 2023
HI BRO CAN YOU PLEASE HELP ME WITH THIS IT IS SHOWING SOME ERROR
syms m J x xd TE TEd xb xbd TEb TEbd a b t K1 K2 C1 C2
KE = m*xd^2/2 + J*TEd^2/2;
PE = K1*((x-a*sin(TE))-(xb-a*sin(TEb)))^2/2 + K2*((x+b*sin(TE))-(xb+b*sin(TEb)))^2/2;
R = C1*((xd-a*cos(TE)*TEd)-(xbd-a*cos(TEb)*TEbd))^2/2 + C2*((xd+b*cos(TE)*TEd)-(xbd+b*cos(TEb)*TEbd))^2/2;
L = KE-PE;
%% LagrangeDynamicEqDeriver
q = [x, TE]; Dq = [xd, TEd]; % variables : x and theta
Eq = S_LagrangeDynamicEqDeriver(L, R, q, Dq) == 0
L_q = 
R_Dq = 
L_Dq_dt = 
Eq = 
vars = [xd TEd x TE]
vars = 
[A,b] = equationsToMatrix(Eq,vars)
Error using mupadengine/feval_internal
Unable to convert to matrix form because the system does not seem to be linear.

Error in sym/equationsToMatrix (line 61)
T = eng.feval_internal('symobj::equationsToMatrix',eqns,vars);
Supporting file is
function Eq = S_LagrangeDynamicEqDeriver(L, R, q, Dq)
%%
syms t
N = length(q);
%% Calculation of L_q = r.L/r.q and L_Dq = r.L/r.Dq
L_q = sym(zeros(N,1));
L_Dq = sym(zeros(N,1));
for ii = 1:N
L_q(ii) = diff(L, q(ii)) ; % diff. of L wrt. q one by one
L_Dq(ii) = diff(L, Dq(ii)) ; % diff. of gen. coordinate wrt. q dot one by one
end
L_q
L_Dq;
%% Calculation of R_q = r.L/r.q and R_Dq = r.L/r.Dq
R_Dq = sym(zeros(N,1));
for ii = 1:N
R_Dq(ii) = diff(R, Dq(ii));
end
R_Dq
%% Calculation of L_Dq_dt = qd/dt( r_Dq )
L_Dq_dt = sym(zeros(N,1));
for ii = 1:N
for jj = 1:N
q_dst = [char(q(jj)), '(t)'];
Dq_dst = ['diff(', q_dst,',t)'];
L_Dq(ii) = subs(L_Dq(ii), {q(jj), Dq(jj)}, {str2sym(q_dst), str2sym(Dq_dst)});
end
L_Dq;
L_Dq_fcn = symfun(L_Dq(ii), t);
L_Dq_dt(ii) = diff(L_Dq_fcn, t);
end
L_Dq_dt
%% Lagrange's equations (Second kind)
Eq = sym(zeros(N,1));
for ii = 1:N
Eq(ii) = simplify(L_Dq_dt(ii) + R_Dq(ii) - L_q(ii)) ;
end
end
  1 Kommentar
Torsten
Torsten am 6 Jan. 2023
Your equations are two second-order differential equations.
EquationsToMatrix can't help to solve it.
Specify 4 boundary conditions and try "dsolve".
If "dsolve" fails (which is probable for such a complicated system), use ode45 or another of the numerical integrators.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Symbolic Math Toolbox finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by