Borrar filtros
Borrar filtros

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

1 visualización (últimos 30 días)
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

Respuestas (1)

Gokul Nath S J
Gokul Nath S J el 21 de Oct. de 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.

Categorías

Más información sobre Symbolic Math Toolbox en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by