I have a 14 equation system of second order differential equations which I am trying to solve using dsolve. The program just keeps running without finishing ?

조회 수: 2 (최근 30일)
This is the script: A is 14x14 matrix
syms x1(t) x2(t) x3(t) x4(t) x5(t) x6(t) x7(t) x8(t) x9(t) x10(t) x11(t) x12(t) x13(t) x14(t);
X = [x1;x2;x3;x4;x5;x6;x7;x8;x9;x10;x11;x12;x13;x14];
syms E;
syms alpha;
f = [(k/m) * E * cos(alpha*t);0;0;0;0;0;0;0;0;0;0;0;0;0];
odes = diff(X,2) == A*X + f;
%odes = diff(X,2) == A*X;
%V = odeToVectorField(odes)
%M = matlabFunction(V,'vars',{'t','E','alpha','Y'})
[x1Sol(t),x2Sol(t),x3Sol(t),x4Sol(t),x5Sol(t),x6Sol(t),x7Sol(t),x8Sol(t),x9Sol(t),x10Sol(t),x11Sol(t),x12Sol(t),x13Sol(t),x14Sol(t)] = dsolve(odes);
x1Sol(t) = simplify(x1Sol(t))
x2Sol(t) = simplify(x2Sol(t))
x3Sol(t) = simplify(x3Sol(t))
x4Sol(t) = simplify(x4Sol(t))
x5Sol(t) = simplify(x5Sol(t))
x6Sol(t) = simplify(x6Sol(t))
x7Sol(t) = simplify(x7Sol(t))
x8Sol(t) = simplify(x8Sol(t))
x9Sol(t) = simplify(x9Sol(t))
x10Sol(t) = simplify(x10Sol(t))
x11Sol(t) = simplify(x11Sol(t))
x12Sol(t) = simplify(x12Sol(t))
x13Sol(t) = simplify(x13Sol(t))
x14Sol(t) = simplify(x14Sol(t))
Would really appreciate help on this.
  댓글 수: 4

댓글을 달려면 로그인하십시오.

답변 (1개)

darova
darova 2019년 11월 29일
alpha and E should be numerical
function main
m = 15000;
k = 150000;
n = 14;
A = zeros(n);
A(n,n) = -k/m;
A(n,n-1) = k/m;
for i=1:n-1
A(i,i) = -2*k/m;
A(i+1,i) = k/m;
A(i,i+1) = k/m;
end
f = zeros(n,1);
x0 = ones(2*n,1);
ts = [0 5];
[t,X] = ode45(myode,ts,x0);
plot(t,X)
function dx = myode(t,x)
dx = zeros(2*n,1);
f(1) = k/m * E * cos(alpha*t);
dx(1:n) = x(n+1:end);
dx(n+1:end) = A*x(1:n) + f;
end
end
  댓글 수: 2
Tapas Peshin
Tapas Peshin 2019년 11월 29일
Question:
  1. In my case alpha, E and t are unknowns so I am using symbolic values ?
  2. It is a second order differential equation system. Isn't your solution with ode45 for first order ?
Thanks for the help.
darova
darova 2019년 11월 29일
  1. Do you have additional constraints for alpha and E?
  2. No. It's for 2d order

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Equation Solving에 대해 자세히 알아보기

태그

제품


릴리스

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by