Simulation of Equation Set Equal to Zero

5 Ansichten (letzte 30 Tage)
Spencer Ferris
Spencer Ferris am 10 Dez. 2021
Bearbeitet: Torsten am 11 Dez. 2021
I'm trying to run simulations on the following equation:
Second-dervative(x) + gamma * x^2 * derivative(x) - alpha * derivative(x) + omega^2 * x = 0
Gamma, alpha, and omega are constants that I plug in and vary to see changes in the function.
From my understanding, the second derivative of a variable to the power of 1 (i.e. X^1) is always 0, and the first derivative is always 1.
If I plug in 1 for Gamma, alpha and Omega, I end up with this equation.
0 + 1.*(x.^2) * 1 - 1.*1 + 1^2 .* x
My question is, how do I simulate this equation, equal to zero? Here's the code I am working with.
% Set paramaters.
xo = 0;
x = [xo];
t = [0];
x0 = [-1, 0, 1 ];
% Simulate
[t,x] = ode23(@fx, [0 10], x0);
plot (t,x,"LineWidth",2)
xlabel("t")
ylabel("x")
xlim = [0 10];
ylim = [0 10];
function xdot = fx(t,x)
xdot = 0 + 1.*(x.^2) * 1 - 1.*1 + 1^2 .* x;
end
Is this the right way to do it? I feel like I'm missing something.
  2 Kommentare
Torsten
Torsten am 10 Dez. 2021
Bearbeitet: Torsten am 10 Dez. 2021
x usually is a function of the independent variable t.
So derivative(x) means dx(t)/dt, not dx/dx = 1.
Similarly Second-derivative(x) means d^2x(t)/dt^2, not d^2x/dx^2 = d1/dx = 0.
Spencer Ferris
Spencer Ferris am 10 Dez. 2021
Ah I knew I was missing something! So how would I take the derivative of x with respect to t in matlab?

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Sam Chak
Sam Chak am 10 Dez. 2021
Looks like the Van der Pol oscillator.
clear all; clc
tspan = 0:0.001:10;
y0 = [1; 0];
[t, y] = ode45(@(t,y) [y(2); y(2) - ((y(1)).^2).*y(2) - y(1)], tspan, y0);
plot(t, y)
plot(y(:, 1), y(:, 2))
  2 Kommentare
Spencer Ferris
Spencer Ferris am 10 Dez. 2021
It is! So part of what I have to do is vary gamma, alpha and omega, what values do I change here to vary them? Thank you!
Torsten
Torsten am 11 Dez. 2021
Bearbeitet: Torsten am 11 Dez. 2021
tspan = 0:0.01:10;
y0 = [1; 0];
alpha = 1;
gamma = 1;
omega = 1;
[t, y] = ode45(@(t,y) [y(2); -gamma*y(1)^2*y(2)+alpha*y(2)-omega^2*y(1)], tspan, y0);
plot(t, y)
plot(y(:, 1), y(:, 2))

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Gamma Functions 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!

Translated by