Filter löschen
Filter löschen

How to solve this two second order ODE with variable coefficients and change of coordinates afterwards?

2 Ansichten (letzte 30 Tage)
Hi, the problem here is to solve this 2 ode with variable coefficients and then change the coordinates using the called 'modal matrix'. This is a general vibration problem but given my little experience in matlab i don't know how to solve this equation and neither i know how to change the coordinates afterwards to represent grafically the solution. So the 2 equations are :
y'' + [-0.11674*(1-exp(-10*t))+0.05351*(1-cos(10t)]y'+y=0 y(0)=0 y'(0)=1.8989
y'' + [-0.18115*(1-exp(-10*t))+0.05157*(1-cos(10t)]y'+y=0 y(0)=0 y'(0)=0.6279
%the matrix for the change of coordintes is:
phi=[0.2029 0.9792;0.56535 -0.117145]
with the change of coordintes being x=phi*y with y and x being vector containing both solutions.

Akzeptierte Antwort

Star Strider
Star Strider am 25 Feb. 2017
The symbolic derivation is similar to that in your previous Question. I list it here (commented-out) for reference.
Symbolic Derivation
% syms p t y(t) Y
% p = sym('p%d', [1 2]);
% D1y = diff(y,t);
% D2y = diff(y,t,2);
% Eqn = D2y + p(1)*(1-exp(-10*t)) + p(2)*(1-cos(10*t))*D1y + y == 0;
% yode = odeToVectorField(Eqn);
% Yodefcn = matlabFunction(yode, 'Vars',[t Y p])
The code with the varying parameters is therefore straightforward with the results of the symbolic derivation.
The Code
Yodefcn = @(t,Y,p1,p2) [Y(2);p1.*(exp(t.*-1.0e1)-1.0)-Y(1)+p2.*(cos(t.*1.0e1)-1.0).*Y(2)];
Pmat = [-0.11674 0.05351 1.8989; -0.18115 0.05157 0.6279]; % Parameter & Initial Condition Matrix
tspan = linspace(0, 15, 100);
for k1 = 1:size(Pmat,1)
Y0 = [0 Pmat(k1,3)];
[T{k1},Y{k1}] = ode45(@(t,Y) Yodefcn(t,Y,Pmat(k1,1),Pmat(k1,2)), tspan, Y0);
end
figure(1)
plot(T{1}, Y{1})
hold on
plot(T{2}, Y{2}, '--')
hold off
grid
xlabel('\itt\rm')
ylabel('\ity\rm(\itt\rm)')
The ‘p’ vector in the symbolic derivation are the relevant parameters. These are then entered into the ‘Pmat’ matrix for convenience, the first two columns corresponding to the first two parameters in each differential equation, and the third column the initial condition for the derivative. These are then called in the corresponding iterations of the for loop, and the results saved in the corresponding cell arrays, ‘T’ and ‘Y’. Then figure(1) plots them, the first set with a solid line, and the second set with a dashed line. (I would have added a legend if I knew what to call the plotted values.)

Weitere Antworten (0)

Community Treasure Hunt

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

Start Hunting!

Translated by