如何使用 MATLAB(或非 matlab)绘制图形?
How to plot the graph using MATLAB (or not matlab))?
我有函数 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
所以应该有类似这样的东西 table:
t | ϕ1 | ϕ2
0.00 | 0.1 |0.2
0.01 | ... |...
0.02 | ... |...
...
100.00| ... | ...
因此需要使用接收到的值按坐标绘制图表
所以问题是如何使用MATLAB在下图中绘制函数φ2(φ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
在选项对象中声明它们,或者使用匿名函数在求解器调用中绑定参数。
我有函数 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
所以应该有类似这样的东西 table:
t | ϕ1 | ϕ2
0.00 | 0.1 |0.2
0.01 | ... |...
0.02 | ... |...
...
100.00| ... | ...
因此需要使用接收到的值按坐标绘制图表
所以问题是如何使用MATLAB在下图中绘制函数φ2(φ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
在选项对象中声明它们,或者使用匿名函数在求解器调用中绑定参数。