【问题标题】:How to plot the graph using MATLAB (or not matlab))?如何使用 MATLAB(或非 matlab)绘制图形?
【发布时间】:2022-01-25 05:32:44
【问题描述】:

我有函数 fi(ϕ)=γi+sin(2⋅sinϕ) for i=1,2 where γ1=0.01 and γ2=0.02

φ1(0)=0.1 和 φ2(0)=0.2

φ1/dt=f1(φ)+d⋅sin(φ2−φ1)

φ2/dt=f2(φ)+d⋅sin(φ1−φ2)

其中 d=0.1

所以应该有像这张表这样的东西:

t     | ϕ1  | ϕ2
0.00  | 0.1 |0.2
0.01  | ... |...
0.02  | ... |...
...
100.00| ... | ...

因此需要使用接收到的值通过坐标绘制图形

所以问题是如何使用 MATLAB 在下图中绘制函数 φ2(φ1)?

【问题讨论】:

  • 请注明转帖math.stackexchange.com/questions/4341037/…。请用你自己的话解释最后两个方程,特别是变量是什么(独立的,相关的,即函数,...)。或者为这些方程提供一些上下文。
  • @LutzLehmann 谢谢!所以现在我试试。实际上它是一个由两个方程组成的系统。在函数f(ϕ)ϕ 中可能是ϕ1-ϕ2(或ϕ2-ϕ1)。没有说明,这只是我的假设(也许我不对)。我需要绘制一个图表来显示ϕ2ϕ1 的依赖关系。所以我可能需要使用ode45 或其他东西来计算ϕi/dt 来获得 φi 并绘制这种依赖关系。它还说∆t=0.01Tmax=100
  • @LutzLehmann 或者我可能需要使用 f1(ϕ1(ϕ2)) 和 'f2(φ2)' 而不是 f1,2(ϕ),正如您提到的问题中所建议的那样。你能帮帮我吗?

标签: function matlab plot graph ode


【解决方案1】:

所以系统的故事可能是你从两个不耦合且略有不同的方程开始

ϕ1/dt=f1(ϕ1)
ϕ2/dt=f2(ϕ2)

并用耦合或交换术语 sin(ϕ2-ϕ1) 将它们连接起来,

ϕ1/dt=f1(ϕ1)+d⋅sin(ϕ2−ϕ1)
ϕ2/dt=f2(ϕ2)+d⋅sin(ϕ1−ϕ2)

在 matlab 脚本中,您可以将其实现为

y0 = [ 0.1; 0.2 ];
[T,Y] = ode45(eqn,[0, 100], y0);

plot(Y(:,1),Y(:,2));

function dy_dt = eqn(t,y)
  d = 0.1;
  g = [ 0.01; 0.02 ];
  f = g+sin(2*sin(y));
  exch = d*sin(y(2)-y(1));
  dy_dt = f+[d;-d];
end%function

这几乎给出了一条以[pi; pi] 结尾的对角线。使用更强的耦合常数d,这会变得更有趣。

您可以将参数作为参数实参,然后您必须通过odeset 在选项对象中声明它们,或者使用匿名函数在求解器调用中绑定参数。

【讨论】:

  • 非常感谢!!!你真的帮了我很多!我可以再问你一个问题吗?我在 matlab 中运行它并通过更改参数b,轨迹发生变化,但始终返回点 [pi, pi]。为什么会发生这种情况?
  • d=0.8 我得到了一个弧形下降,结束于大约 [3.6,-3.6]。
  • 好的,现在好了!再次感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-12
  • 2014-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多