kuramoto模型 - 简要介绍

news2024/12/27 12:48:40

Kuramoto模型源远流长,这里不会对它做过于理论方面的讲解,只是面向动力学重构的工作中,可能要用到Kuramoto模型的相关介绍。

假设读者了解的常微分方程基本概念,图论知识,了解邻接矩阵,

通过本文,你将获得

  1. 单个节点的Kuramoto模型,以及其中参数的含义

  2. 正弦耦合的Kuramoto

  3. Kuramoto模型的平均场分析 (Mean-Field),这也揭示了模型与复分析的关系

  4. 一般的Kuramoto网络

Kuramoto网络模型

数学表达

单个节点

参考[1],我们考虑单个节点的Kuramoto模型

d θ d t = ω (1) \frac{d \theta}{d t}=\omega \tag{1} dtdθ=ω(1)

明显这是一个线性常微分方程模型,它的解为 θ ( t ) = ω t + θ ( 0 ) \theta(t)=\omega t+\theta(0) θ(t)=ωt+θ(0),不难想象,当自然频率 ω \omega ω更大, θ \theta θ的斜率也会变化得越陡,如图1.a所示;绿色的 ω 3 \omega_3 ω3参数更高,蓝色的 ω 1 \omega_1 ω1更小

既然是振子模型,我们认为 θ + 2 π \theta+2\pi θ+2π θ \theta θ 没有区别,于是我们可以用对 2 π 2\pi 2π 取mod的方式,得到图1.b的齿状周期震荡图;

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图1

既然 θ \theta θ 的变化范围从0到 2 π 2\pi 2π,从这个角度,我们可以从单位圆的角度看待振子。同样,自然频率最大的绿色振子走在了最前面。

在这里插入图片描述

图2

正弦耦合

Kuramoto网络模型可以用如下的方式耦合在一起,也被称为正弦耦合(Sinusoidal Coupling)[YTB]:

d θ i d t = ω i + K N ∑ j = 1 N sin ⁡ ( θ j − θ i ) i = 1 … N (2) \begin{array}{r} \frac{d \theta_i}{d t}=\omega_i+\frac{K}{N} \sum_{j=1}^N \sin \left(\theta_j-\theta_i\right) \quad i=1 \ldots N \tag{2} \end{array} dtdθi=ωi+NKj=1Nsin(θjθi)i=1N(2)

这时是全连接网络,不过可以看出一些有趣的性质。
如果 0 < θ j − θ i < π 0<\theta_j-\theta_i<\pi 0<θjθi<π,那么 sin ⁡ ( θ j − θ i ) > 0 \sin \left(\theta_j-\theta_i\right)>0 sin(θjθi)>0。在2个节点的情况下, j j j号振子的 θ k \theta_k θk会有变大趋势,而 i i i 号振子相位有变小的趋势。(相比与他们各自的自然频率而言)


大家也能想象,当 0 < θ j − θ i < π 0<\theta_j-\theta_i<\pi 0<θjθi<π的时候,会发生怎样的运动🤔

一些情况,会发生锁频(Frequency Locking),即:两个振子一开始会拉开距离,然后保持在一个特定的距离前行。关于锁频的详细讲解就先不说了。其实用相位差 ϕ = θ 1 − θ 1 \phi = \theta_1-\theta_1 ϕ=θ1θ1 去做分析就行。

另一种情况是,当 ω 1 = ω 2 = . . . = ω N \omega_1=\omega_2=...=\omega_N ω1=ω2=...=ωN,且 K > 0 K>0 K>0时,这些振子会逐渐从散乱的状态收敛到完全同步的状态。这种情况可以类似的用减法来分析,比如构造向量 θ ^ i ( t ) = θ i − ω t \hat{\theta}_i(t)=\theta_i-\omega t θ^i(t)=θiωt

θ ^ i ( t ) = θ i − ω t d θ ^ i d t = K N ∑ j = 1 N sin ⁡ ( θ ^ j − θ ^ i ) (3) \begin{aligned} & \hat{\theta}_i(t)=\theta_i-\omega t \\ & \frac{d \hat{\theta}_i}{d t}=\frac{K}{N} \sum_{j=1}^N \sin \left(\hat{\theta}_j-\hat{\theta}_i\right) \end{aligned} \tag{3} θ^i(t)=θiωtdtdθ^i=NKj=1Nsin(θ^jθ^i)(3)

可以看到, θ ^ i \hat{\theta}_i θ^i 的个稳定点是所有 θ ^ i \hat{\theta}_i θ^i都为0的情况。

平均场分析 (Mean-Field)

单纯出于好奇了解Kuramoto与复数的联系,但这块在后续并不会用到

根据一个复分析欧拉公式: e i θ = cos ⁡ ( θ ) + i sin ⁡ ( θ ) Im ( e i θ ) = sin ⁡ ( θ ) \begin{aligned} & e^{\mathbf{i} \theta}=\cos (\theta)+\mathbf{i} \sin (\theta) \\ & \text{Im}\left(e^{\mathbf{i} \theta}\right)=\sin (\theta)\end{aligned} eiθ=cos(θ)+isin(θ)Im(eiθ)=sin(θ),公式(3)可表为:

KaTeX parse error: \tag works only in display equations

接下来是一个不那么容易理解的设定,为了进一步对上面的公式进行处理,我们定义一个叫做 Kumamoto Order Parameter 的东西,就是令: 1 N ∑ j = 1 N e i θ ^ j : = r e ( i ϕ ^ ) \frac{1}{N} \sum_{j=1}^N e^{\mathrm{i} \hat{\theta}_j}:=r e^{(\mathrm{i} \hat{\phi})} N1j=1Neiθ^j:=re(iϕ^)。(毕竟复数加复数还是一个复数,现在只是用 r r r ϕ ^ \hat{\phi} ϕ^来进行刻画)。从而,公式(4)可以进一步化简为

d θ ^ i d t = Im ( r K e − i θ ^ i e i ϕ ^ ) = Im ( r K e ( i ( ϕ ^ − θ ^ i ) ) = r K sin ⁡ ( ϕ ^ − θ ^ i ) \frac{d \hat{\theta}_i}{d t}=\text{Im} \left(r K e^{-i \hat{\theta}_i} e^{\mathbf{i} \hat{\phi}}\right)=\text{Im} \left(r K e^{\left(\mathrm{i}\left(\hat{\phi}-\hat{\theta}_i\right)\right.} \right)=r K \sin \left(\hat{\phi}-\hat{\theta}_i\right) dtdθ^i=Im(rKeiθ^ieiϕ^)=Im(rKe(i(ϕ^θ^i))=rKsin(ϕ^θ^i)

从而,同步的速度由 r r r ϕ \phi ϕ 来决定,他们看起来代表了网络的某种全局性质。

一般网络

上面都是在谈论全连接网络,这里我们给不同的 i i i j j j之间赋予不同的形式,[Yan,2023]

θ ˙ i = ω i + K N ∑ j = 1 N a i j sin ⁡ ( θ j − θ i ) , ( i = 1 , ⋯   , N ) , \dot{\theta}_i=\omega_i+\frac{K}{N} \sum_{j=1}^N a_{i j} \sin \left(\theta_j-\theta_i\right),(i=1, \cdots, N), θ˙i=ωi+NKj=1Naijsin(θjθi),(i=1,,N),

其中, θ i \theta_i θi表示第i个振子的相位, ω i \omega_i ωi表示第i个振子的自然频率。 A = a i j A=a_{ij} A=aij为邻接矩阵, a i j = 1 a_{ij}=1 aij=1第i个节点会受到第j个节点的影响(j→i)。0表示没有连接。 K N \frac{K}{N} NK表示整体的连接强度,当K很小时,所有振子都会倾向以他们的自然频率运动,当K比较大时,每个振子会受到自己邻居节点的影响。当K超级大时,所有的振子将会以一个共同的频率 ∑ i ω i / N \sum_i \omega_i / N iωi/N运动。

仿真

首先,绘制单个Kuramoto的图形。因为是线性模型,每次将得到的相位保持在0到2pi的范围,如下图3所示

在这里插入图片描述

图3

接下来,我们进行2个节点的绘制,这里的主要困难在于连接矩阵和累乘的定义,在matlab中的编程可能会混淆,这里这里我们设 A = [ a 11 a 12 a 21 a 2 n ] A=\left[\begin{array}{ll}a_{11} & a_{12} \\ a_{21} & a_{2 n}\end{array}\right] A=[a11a21a12a2n], theta是表示状态变量的列向量 [ θ 1 θ 2 ] \left[\begin{array}{l}\theta_1 \\ \theta_2\end{array}\right] [θ1θ2],于是theta'-theta [ 0 θ 2 − θ 1 θ 1 − θ 2 0 ] \left[\begin{array}{ccc}0 & \theta_2-\theta_1 \\ \theta_1-\theta_2 & 0\end{array}\right] [0θ1θ2θ2θ10]

可以验证: [ θ 1 θ 2 ] = [ ω 1 + K N ( a 11 × 0 + a 12 × ( θ 2 − θ 1 ) ) ω 2 + K N ( a 21 × ( θ 1 − θ 2 ) + a 22 × 0 ) ] d t + [ θ 1 θ 2 ] \left[\begin{array}{l}\theta_1 \\ \theta_2\end{array}\right]=\left[\begin{array}{l}\omega_1+\frac{K}{N}\left(a_{11} \times 0+a_{12} \times\left(\theta_2-\theta_1\right)\right) \\ \omega_2+\frac{K}{N}\left(a_{21} \times\left(\theta_1-\theta_2\right)+a_{22} \times 0\right)\end{array}\right] d t +\left[\begin{array}{l}\theta_1 \\ \theta_2\end{array}\right] [θ1θ2]=[ω1+NK(a11×0+a12×(θ2θ1))ω2+NK(a21×(θ1θ2)+a22×0)]dt+[θ1θ2]是与公式2一致的。

% 计算每个振荡器的相位变化率
dtheta = omega + (K/N) * sum(A .* sin(theta' - theta),2);

% 更新相位
theta = theta + dtheta * dt;

在这里插入图片描述

图4

图4:在16左右出现了两个峰,这是从15之后,被 θ 1 − θ 2 \theta_1-\theta_2 θ1θ2给往回拉扯导致的(可以对比黄线看出红线被拉扯的轨迹)

参考

[1] YTB Episode 1: Kuramoto Model Part 12

[2] 源码地址

[3] flowus博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1630117.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

归并排序详解

目录 归并排序的核心思想&#xff1a; 递归实现&#xff1a; 非递归实现&#xff1a; 时间复杂度&#xff1a; 空间复杂度&#xff1a; 应用场景&#xff1a; 本文全部以升序为例&#xff1a; 归并排序的核心思想&#xff1a; 先分解在合并&#xff1a; 1.归并的归&…

运算符重载(2)

1.赋值运算符重载 #include<iostream> using namespace std;class Person { friend void test01(); public:Person(int age){m_Age new int(age);}/*堆区的数据由程序员手动开辟并手动释放*/~Person(){if (m_Age ! NULL){delete m_Age;}}Person& operator(Person &a…

Python_AI库 Matplotlib的应用简例:绘制与保存折线图

本文默认读者已具备以下技能&#xff1a; 熟悉Python基础语法&#xff0c;以自行阅读python代码块熟悉Vscode或其它编辑工具的应用 在数据可视化领域&#xff0c;Matplotlib无疑是一个强大的工具。它允许我们创建各种静态、动态、交互式的可视化图形&#xff0c;帮助我们更好…

币圈资讯Cryptosquare论坛

在加密货币世界中&#xff0c;信息的及时获取对于投资者和交易者至关重要。今天&#xff0c;我将向大家介绍Cryptosquare这个综合性资讯论坛&#xff0c;它汇集了币圈新闻、空投信息、社会热点以及与Web3相关的工作信息。让我们一起解锁加密世界的种种可能性&#xff0c;探索Cr…

鹏哥C语言复习——字符函数与字符串函数

目录 一.字符函数 1.字符分类函数 2.字符转换函数 二.基础字符串函数 1.strlen函数 2.strcpy函数 3.strcat函数 4.strcmp函数 三.基础字符串函数优化 1.strncpy函数 2.strncat函数 3.strncmp函数 四.进阶字符串函数 1.strstr函数 2.strtok函数 3.strerror函数 一…

Eclipse 如何导入一个 Maven 项目

如果你的项目是 Maven 项目的话&#xff0c;导入的时候需要使用 Import&#xff0c;而不能使用打开项目的方式。 选择导入 选择导入 Maven 项目 然后选择 Maven 项目&#xff0c;开始导入。 选择目录后导入 然后选择你需要导入的目录后&#xff0c;单击导入。 Eclipse 如何导…

Llama-7b-Chinese本地推理

Llama-7b-Chinese 本地推理 基础环境信息&#xff08;wsl2安装Ubuntu22.04 miniconda&#xff09; 使用miniconda搭建环境 (base) :~$ conda create --name Llama-7b-Chinese python3.10 Channels:- defaults Platform: linux-64 Collecting package metadata (repodata.js…

【MySQL精炼宝库】数据库的约束 | 表的设计 | 聚合查询 | 联合查询

目录 一、数据库约束 1.1 约束类型&#xff1a; 1.2 案例演示&#xff1a; 二、表的设计 2.1 一对一: 2.2 一对多: 2.3 多对多: 2.4 内容小结&#xff1a; 三、新增 四、查询 4.1 聚合查询&#xff1a; 4.1.1 聚合函数&#xff1a; 4.1.2 GROUP BY子句&#xff1a…

nginx配置ip_hash负载均衡策略

一、nginx配置ip_hash负载均衡策略 nginx默认的负载均衡策略为轮询&#xff0c;某些场景需要使用ip_hash负载策略&#xff0c;即&#xff1a;同一个ip地址&#xff0c;永远访问nginx后面同一台tomcat。配置示例如下&#xff0c;主要是设置ip_hash&#xff1a; upstream www.ab…

B站美化插件,支持自定义,太酷辣~

大公司的软件和网站通常具有优雅的默认界面设计。 以国内二次元聚集地B站为例&#xff0c;可以说它的UI设计非常吸引人。与其他视频网站繁复的设计相比&#xff0c;B站的界面设计可以说是遥遥领先 然而&#xff0c;总有些人对默认的用户界面感到不满意&#xff0c;他们渴望尝试…

Arm功耗管理精讲与实战

安全之安全(security)博客目录导读 思考 1、为什么要功耗管理&#xff1f;SOC架构中功耗管理示例&#xff1f;功耗管理挑战&#xff1f; 2、从单核->多核->big.LITTLE->DynamIQ&#xff0c;功耗管理架构演进? 3、什么是电压域&#xff1f;什么是电源域&#xff1f…

C#上位机与S7-200Smart通信注意事项

S7-200SMART连接 问题描述 我们使用C#开发上位机和S7-200Smart系列PLC交互数据时&#xff0c;大多会用到Sharp7、Snap7之类的通信类库。有些通信类库默认的使用的是PG连接资源&#xff0c;而对于S7-200Smart来说&#xff0c;它的PG连接资源只有1个。 官网200smart提到的连接数…

smart200 做client,modbus_tcp读取modbus_slave

这里还隐藏一个重要的设置&#xff0c;就是站地址。这个在库函数里。不同plc位置会不一样&#xff0c;我这里是vb1651对应modbus的地址为255&#xff0c;这个值我们可以自己更改&#xff0c;范围为1-247. 打开modbus_slave 软件&#xff0c;

MySQL recursive 递归

MySQL 从最内的select开始执行&#xff0c;但是同一个select clause可以在查询的结果上继续查询。 SELECT menu_id,parent_id,(SELECT m1.parent_id FROM sys_menu AS m1 WHERE m1.menu_idm.parent_id) FROM sys_menu AS m WHERE m.menu_id 89 方案1.通过recursive递归 使用…

Matlab 使用subplot绘制多个子图,一元拟合

实现效果&#xff1a; clc; clear;filename sri.xlsx; % 确认文件路径data readtable(filename); datavalue data{:,2:end}; datavalue datavalue;fig figure(Position, [0, 0, 1500, 900]); indexString ["(a)","(b)","(c)","(d)&qu…

科技感十足特效源码

源码介绍 科技感十足特效源码&#xff0c;源码由HTMLCSSJS组成&#xff0c;记事本打开源码文件可以进行内容文字之类的修改&#xff0c;双击html文件可以本地运行效果&#xff0c;也可以上传到服务器里面 源码截图 源码下载 科技感十足特效源码

十大常见B端管理系统,经常用,未必能叫上名字。

常见的B端管理系统有以下几种&#xff1a; 客户关系管理系统&#xff08;CRM&#xff09;&#xff1a; CRM系统帮助企业管理与客户相关的信息&#xff0c;包括客户联系信息、销售机会、市场活动等。它提供了客户数据整合、销售流程管理、客户沟通跟进等功能&#xff0c;帮助企…

【人工智能基础】逻辑回归实验分析

实验环境&#xff1a;anaconda、jutpyter Notebook 实验使用的库&#xff1a;numpy、matplotlib 一、逻辑回归 逻辑回归是一个常用于二分类的分类模型。本质是&#xff1a;假设数据服从这个分布&#xff0c;然后使用极大似然估计做参数的估计。 二、实验准备 引入库、预设值…

【三】Spring Cloud Ribbon 实战

Spring Cloud Ribbon 实战 概述 一直在构思写一个spring cloud系列文章&#xff0c;一方面是对自己实践经验进行一次完整的梳理&#xff0c;另一方面也是希望能够给初学者一些借鉴&#xff0c;让初学者少走些弯路&#xff0c;看到本系列博客就能够很好的把微服务系列组件用好。…

字符函数·字符串函数·C语言内存函数—使用和模拟实现

字符函数字符串函数C语言内存函数 1.字符分类函数2. 字符转换函数3. strlen的使用和模拟实现4.strcpy的使用和模拟实现5.strcat的使用和模拟实现6.strcmp的使用和模拟实现7.strncpy的模拟和实现8.strncat的实现和模拟实现9.strncmp函数使用10.strstr的使用和模拟实现11.strtok函…