フィルターのクリア

Graphing and finding the closed form solution to a system of differential equations

7 ビュー (過去 30 日間)
I am trying to graph the solution to the following system of differential equations and finding the closed form solution using for example.the symbolic toolbox would help me understand what function is being plotted. When using the symbolic toolbox to find the analytical solution Matlab states that it is unable to find an explicit solution. On the other hand when I tried to write a function and graph the solution the graph was not visible. Can someone explain how I can either find the analytical solution or graph the solution? Any help would be appreciated.
t''= t'^2(tan(t)) - x''(4sec(t))
t'^2 (sec(t)-tan(t)) = x''*sec(t)*(1/0.625-4)
Initial conditions: t(0) = pi/3; t'(0) = 0; x'(0) = x(0) = 0
  1 件のコメント
Mohammad Sami
Mohammad Sami 2020 年 3 月 19 日
You can use the function fplot to plot a function. You will need to write out the functions you need to plot as anoynmous functions. An example for documentation.
See doc fplot for more details
xt = @(t) cos(3*t);
yt = @(t) sin(2*t);
fplot(xt,yt)

サインインしてコメントする。

採用された回答

Ameer Hamza
Ameer Hamza 2020 年 4 月 2 日
The following shows how to use the symbolic toolbox to create the handle for the ODEs and then use ode45 to find a numerical solution.
syms t(y) x(y)
dt = diff(t);
ddt = diff(dt);
dx = diff(x);
ddx = diff(dx);
eq1 = ddt == dt^2*(tan(t)) - ddx*4*sec(t);
eq2 = dt^2*(sec(t)-tan(t)) == ddx*sec(t)*(1/0.625-4);
[eqn, vars] = reduceDifferentialOrder([eq1 eq2], [t x]);
[M,F] = massMatrixForm(eqn,vars);
f = M\F;
odeFun = odeFunction(f, vars);
ic = [pi/6; 0; 0; 0];
ode45(odeFun, [0 10], ic)
Alternatively, you can also write your own odeFunction but It require a bit of algebric manipulation
ode = @myodeFun;
t = [0 10];
ic = [pi/6; 0; 0; 0];
[t,y] = ode45(ode, t, ic);
plot(t,y, 'o-');
function dydx = myodeFun(t,x)
% Rearranged Equations:
% t'' = -(dt^2*(2*cos(t)*tan(t) - 5))/(3*cos(t))
% x'' = (5*dt^2*(cos(t)*tan(t) - 1))/12
% x(1) -> t, x(2) -> t', x(3) -> x, x(4) -> x'
dydx = zeros(4,1);
dydx(1) = x(2);
dydx(2) = -(x(2)^2*(2*cos(x(1))*tan(x(1)) - 5))/(3*cos(x(1)));
dydx(3) = x(4);
dydx(4) = (5*x(2)^2*(cos(x(1))*tan(x(1)) - 1))/12;
end
  2 件のコメント
Aleem Andrew
Aleem Andrew 2020 年 4 月 2 日
Thank you for taking the time to help me. I appreciate it.
Ameer Hamza
Ameer Hamza 2020 年 4 月 2 日
Glad to be of help.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeCalculus についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by