1
votes
Dx=y
Dy=-k*y-x^3+9.8*cos(t)
inits=('x(0)=0,y(0)=0')

these are the differential equations that I wanted to plot.

first, I tried to solve the differential equation and then plot the graph.

Dsolve('Dx=y','Dy=-k*y-x^3+9.8*cos(t)', inits)

like this, however, there was no explicit solution for this system.

now i am stuck :(

how can you plot this system without solving the equations?

1
define x,y,t and use plot afterapomene

1 Answers

3
votes

First define the differential equation you want to solve. It needs to be a function that takes two arguments - the current time t and the current position x, and return a column vector. Instead of x and y, we'll use x(1) and x(2).

k = 1;
f = @(t,x) [x(2); -k * x(2) - x(1)^3 + 9.8 * cos(t)];

Define the timespan you want to solve over, and the initial condition:

tspan = [0, 10];
xinit = [0, 0];

Now solve the equation numerically using ode45:

ode45(f, tspan, xinit)

which results in this plot:

enter image description here

If you want to get the values of the solution at points in time, then just ask for some output arguments:

[t, y] = ode45(f, tspan, xinit);

You can plot the phase portrait x against y by doing

plot(y(:,1), y(:,2)), xlabel('x'), ylabel('y'), grid

which results in the following plot

enter image description here