Using ode45 gives exponentially increasing solution
4 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
I am trying to solve a 6 degree of freedom equation [Mhat]x'' + [Bhat]x' + [K]x = [F]sin(wt). [Mhat],[Bhat] and [K] are all 6x6 matrices. This is the ODE function I am using.
function dxdt=MDOF1(t,x)
Bhat = [0.000223552500000000,6.94950000000000e-08,5.13525000000000e-07,-4.55100000000000e-09,3.75150000000000e-05,-2.68755000000000e-09;-1.21770000000000e-07,0.00161437500000000,1.23922500000000e-05,-4.76625000000000e-05,3.22875000000000e-08,1.37145000000000e-07;4.73550000000000e-06,3.75150000000000e-06,0.719550000000000,-8.54850000000000e-07,-8.17950000000000e-06,6.42675000000000e-07;9.47100000000000e-09,-4.88925000000000e-05,-6.94950000000000e-07,1.42372500000000e-06,-1.62975000000000e-09,-8.02575000000000e-09;3.72075000000000e-05,1.97107500000000e-07,-5.28900000000000e-06,-9.25575000000000e-09,6.30375000000000e-06,3.19800000000000e-09;3.87450000000000e-09,2.59530000000000e-07,1.83885000000000e-06,-2.82900000000000e-08,1.86037500000000e-08,7.77975000000000e-08];
Mhat = [1024.33244443821,0.144525000000000,-0.141450000000000,-0.0370025000000000,-36.2850000000000,0.0145550000000000;-0.149650000000000,2745.30744443821,-0.718525000000000,-88.3550000000000,0.0192700000000000,0.192700000000000;-0.474575000000000,-0.333125000000000,1501.98244443821,0.0795400000000000,0.745175000000000,-0.0570925000000000;0.0267525000000000,-89.0725000000000,0.0799500000000000,71.8652857627223,-0.00697000000000000,-0.00697000000000000;-36.2850000000000,0.0892775000000000,0.632425000000000,0.0131200000000000,1839.42588027002,0.0879450000000000;-0.0720575000000000,0.248050000000000,-0.0427425000000000,-0.0329025000000000,0.262400000000000,2124.90165940969];
K = [0,0,0,0,0,0;0,0,0,0,0,0;0,0,6005.09482852500,-0.000341104906106250,0.000290203027676250,0;0,0,-0.000341104906106250,-75.8401802437500,1.98933466826250e-05,-0.000500836689307500;0,0,0.000290203027676250,1.98933466826250e-05,2134.38089767500,2.51222481753750e-05;0,0,0,0,0,0];
F = [0.00749847190933425 + 146.863981327050i;0.100850251293675 + 0.0135606262961325i;5871.33767882513 + 0.0419397503470725i;-0.0121112998456613 - 0.00142823795502375i;-0.0437293876182638 + 24.4266695838750i;0.00837727213389788 - 0.0102890246599238i];
freq = 0.3*ones(6,1);
absF = abs(F);
FEXT = abs(F).*(sin(freq.*t-angle(F)));
dxdt = ones(12,1);
dxdt(1:6)=x(7:12);
dxdt(7:12)= inv(Mhat)*FEXT -inv(Mhat)*K*x(1:6)-inv(Mhat)*Bhat*x(7:12);
end
This is the main program to run ode45
t=[0 300];
IC = zeros(12,1);
opts = odeset('RelTol',1e-3,'AbsTol',1e-4);
[t,x]=ode45( @MDOF1,t,IC,opts);
The issue is, the analytical solution for all 6 degrees is sinusoidal (attached for x(1))

but when I run the solver, the output is an exponentially increasing function

I'm not sure why the error is occuring. I thought it was a time step error and ran it with a maximum step size of 0.0001 s. Still the same error is occuring.
I used these same matrices to build a model on Simulink and the error carried there as well.
3 Kommentare
David Goodmanson
am 18 Jul. 2020
Bearbeitet: David Goodmanson
am 18 Jul. 2020
Hi Aghamarshana,
the K matrix is not symmetric, which looks suspicious. However, that is probably not the real issue. The main problem could well be the damping term:
eig(-inv(Mhat)*Bhat)
ans =
-0.00047907
-2.2323e-07
-5.8818e-07
2.8822e-10
-2.9585e-11
-4.0592e-11
As you can see, the fourth eigenvalue is positive, which leads to exponential growth.
Antworten (0)
Siehe auch
Kategorien
Mehr zu Ordinary Differential Equations 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!