Use function with symbolic variable within ODE45 in van der pol oscillator problem

2 Ansichten (letzte 30 Tage)
I want to call the second order derivative term as a symbolic function insead of the procedure stated in MATLAB documentation. How can I make this run. Thanks in advance.
%%
clear all
clc
syms t y
[t,y] = ode45(@(t,y)vdp1(t,y),[0 20],[2; 0])
function dydt = vdp1(t,y)
syms p1 p2
EQ1=2*(1-p1^2)*p2-p1;
% dydt = [y(2); 1*(1-y(1)^2)*y(2)-y(1)];
function k= makfun(EQ1,y(1),y(2))
Invalid expression. When calling a function or indexing a variable, use parentheses. Otherwise, check for mismatched delimiters.
k=subs(EQ1,[p1 p2],[y(1) y(2)]);
end
dydt = [y(2); makfun(EQ1,y(1),y(2))];
end

Antworten (1)

Gokul Nath S J
Gokul Nath S J am 21 Okt. 2022
Dear Aninda Pal,
There are few ways by which you can use symbolic to find the derivative. Refer to the code below.
syms y(t) dydt(t)
y(t) = t^2 + 2*t + 5;
dydt(t) = diff(y(t));
A sample function of y(t) has been created for the demonstration. If you want to evaluate the derivative at a specific point, say 5, just call dydt(5).
Refer to the attached documentation for more info.

Kategorien

Mehr zu Symbolic Math Toolbox 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