当前位置:   article > 正文

基于分步傅立叶数值算法的一维非线性薛定谔方程求解matlab仿真_分步傅里叶法

分步傅里叶法

目录

1.程序功能描述

2.测试软件版本以及运行结果展示

3.核心程序

4.本算法原理

5.完整程序


1.程序功能描述

基于分步傅立叶数值算法的一维非线性薛定谔方程求解matlab仿真.

2.测试软件版本以及运行结果展示

MATLAB2022A版本运行

3.核心程序

  1. ....................................................................
  2. %ssfm步长
  3. d = 0.001;
  4. M = S/d;
  5. %输入脉冲
  6. T0 = 70*tao;
  7. a0 = 0.12;
  8. %高斯脉冲
  9. U = a0*exp(-(t/T0).^2/2);
  10. U0 = U;
  11. P0 = 1.77e7;
  12. for m=1:1:M
  13. U = exp(d*r*P0*i*(abs(U).*abs(U))).*U;
  14. %对考虑了非线性后得到的结果进行fft变换
  15. U = fftshift(fft(U));
  16. %对上面的结果在频域内进行色散计算
  17. U = exp(d*(i*B2*w2/2)).*U;
  18. %再将结果转换到时域内
  19. U = ifft(ifftshift(U));
  20. end
  21. hold on;
  22. plot(1e2*t,abs(U),'k-.');
  23. grid on;
  24. xlabel('\xi');
  25. ylabel('a');
  26. legend('n_0=0.1*n_c','n_0=0.3*n_c','n_0=0.4*n_c');
  27. 16_025m

4.本算法原理

      分步傅立叶法是一种有效且广泛应用于求解 NLSE 的数值方法,它将非线性和扩散部分分开处理,利用傅立叶变换高效地求解线性部分。其基本思想是将时间演化分成小的时间步长Δt,并在每个时间步内,先线性地处理波动项(即施加傅立叶变换处理扩散),然后处理非线性项。具体步骤如下:

本课题的方程为:

        从对比可知,这两个式子形式上是相同的,区别在于本课题的式子在标准式子基础上增加了系数。

       一般情况下,常规的有有限差分法和分步傅立叶法,本文我们所使用的是分布傅立叶法,下面讲一下主要的步骤:

       首先,上面的公式做如下的逐步转化:

       另外,从上面的式子可以看到,整个方程中U只和Z和T相关,其余均为常系数,或者是变常系数,但这U无关,那么我们简化上面的公式,把我们的公式变为标准非线性薛定谔的表现形式。

5.完整程序

VVV

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/1001583
推荐阅读
相关标签
  

闽ICP备14008679号