无法在Matlab中使用颤振器绘制矢量场

时间:2020-06-18 07:06:35

标签: matlab plot ode

我对Matlab还是很陌生,所以如果我犯了一些明显的错误,我深表歉意,但是我有一个二阶常微分方程,我正在尝试绘制其矢量场。我已经查看了该站点上的各种资源,MATLAB文档和MATLAB论坛,但是仍然遇到问题。

我尝试使用ode45函数求解ODE,这给了我一个我可以绘制的解决方案。我正在使用函数odeToVectorField将ODE转换为一阶ODE系统。我感觉这就是阻止我正确执行自己想要做的事情的原因,因为它给了我一组很难在网状网格上评估的符号方程式。

到目前为止,这是我的代码:

% Setup outside variables
clear
mu = 0.75;  % resistance variable
l = 1;      % length of pendulum
g = 9.81;   % gravity

% Next we setup the domains of the vector space.
xdom = linspace(-pi,pi,51); % define the X axis space
ydom = linspace(-pi,pi,51); % define the Y axis space
[X,Y] = meshgrid(xdom,ydom);    % create a meshgrid for the vector field

% Define the system of ODEs
syms y(t)
eqn = diff(y,t,2) == - mu.*diff(y,t,1) - (g/l).*sin(diff(y,t,0));
U = odeToVectorField(eqn) % this is the part where I think I am doing wrong

Uf = matlabFunction(U(1), 'vars',{'t','Y'})  % trying to set a function handle for the first ODE
Vf = matlabFunction(U(2), 'vars',{'t','Y'})  % trying to set a function handle for the second ODE

% Now we plot it
figure
quiver(X,Y,Uf(X,Y), Vf(X,Y))

这是我的输出的屏幕截图。我特意省略了一些半冒号,以帮助您直观地了解我要做什么。

enter image description here

非常感谢您的帮助。

0 个答案:

没有答案