基于FPGA的Hamiton方程--辛几何算法实现(全网唯一)
创始人
2024-02-16 11:06:54
0

1、本文实验基于冯康院士的《哈密尔顿系统的辛几何算法》开展,链接:https://pan.baidu.com/s/1GM0Px7SLWBWzh4sXmAdcwg 
提取码:fmkt

2、虽然题目写的是基于FPGA的求解,但实际上采用的是VHLS来实现的,最近根本不想写verilog算法代码。本实验做的是简单谐振子运动方程组的运算,会给出matlab代码以及相应的FPGA仿真截图。

3、Hamiton方程

3.1.谐振子Hamiton方程的一般形式

\left\{\begin{matrix} \dot{p}=-\frac{\partial H(p,q))}{\partial q}=-\omega ^{2}q\\ \dot{q}=\frac{\partial H(p,q))}{\partial p}=p\end{matrix}\right.

初始条件为:

q(0)=q_{0},p(0)=p^2

其精确解为:

\left( {\begin{array}{*{20}{c}} {q\left( t \right)}\\ {p\left( t \right)} \end{array}} \right) = \left( {\begin{array}{*{20}{c}} {\cos \left( {\omega t} \right)}&{\frac{1}{\omega }\sin \left( {\omega t} \right)}\\ { - \omega \sin t}&{\cos \left( {\omega t} \right)} \end{array}} \right)\left( {\begin{array}{*{20}{c}} {​{q_0}}\\ {​{p_0}} \end{array}} \right)

3.2 采用《哈密尔顿系统的辛几何算法》第225页的一阶差分形式展开:

  由论文《Hamilton系统下基于相位误差的精细辛算法》

\left\{ {\begin{array}{*{20}{c}} {p_i^{k + 1} = p_i^k - \tau {V_{qi}}\left( {​{q^{k + 1}}} \right)}\\ {q_i^{k + 1} = q_i^k + \tau {U_{pi}}\left( {​{p^k}} \right)} \end{array}} \right.\

因此,可得:

\left( {\begin{array}{*{20}{c}} {​{q_{k + 1}}}\\ {​{p_{k + 1}}} \end{array}} \right) = \left( {\begin{array}{*{20}{c}} 1&\tau \\ { - {\omega ^2}\tau }&{1 - {\omega ^2}{\tau ^2}} \end{array}} \right)\left( {\begin{array}{*{20}{c}} {​{q_k}}\\ {​{p_k}} \end{array}} \right)\​​​​​​​

采用精细化算法可得:

 4、RK算法、一阶辛精细化算法、辛RK算法、梯形法、解析法的matlab代码

%作者:Yang Zheng
%机构:东北电力大学
%内容:对Hamilton系统的求解。 设K=4,C=R=0,M=1,则为哈密尔顿方程。于是有:dq/dt=-p;dp/dt=-4q
% RK算法
tau=0.5;
time=1000;
q0=1;
q2=0.9801;p0=0;
p2=-0.3973;
q=zeros(ceil(time/tau),1);
p=q;
n=1;
q(n)=q0;
p(n)=p0;
A=[1 -tau/6;2*tau/3 1];
while(n

仿真结果:

 可以看到,RK法已经完全失真。

 可以看到,梯形法没有长时追踪能力。一阶辛精度很高,可以追踪;辛RK没有精细化算法,但仍然可以追踪,较精细化算法误差较大。

5、基于辛RK算法的谐振子方程组求解代码

%作者:Yang Zheng
%机构:东北电力大学
%内容:对Hamilton系统的求解。 设K=[k1,k2,...,kn],C=R=0,M=1,则为哈密尔顿方程组。K=w^2
function [q,p,q_ref,p_ref]=mul_diff_SRK(K)%% 辛RKN=length(K);w=sqrt(K);tau=0.5;time=1000;g=w*tau;J=zeros(2,2*N);for i = 1 :NJ(:,2*i-1:2*i)=1/(g(i)^4+12*g(i)^2+144)*[g(i)^4-60*g(i)^2+144 12*tau*(12-g(i)^2);-12*g(i)*w(i)*(12-g(i)^2) g(i)^4-60*g(i)^2+144];endn=1;q0=ones(1,N);p0=zeros(1,N);q=zeros(ceil(time/tau),N);p=q;q(n,:)=q0;p(n,:)=p0;while(n

6、辛RK的vivado仿真结果,需要代码请联系作者邮箱!

 

 ​​​​​​​

 

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
苏州离哪个飞机场近(苏州离哪个... 本篇文章极速百科小编给大家谈谈苏州离哪个飞机场近,以及苏州离哪个飞机场近点对应的知识点,希望对各位有...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...