简谐振动的方程为

x¨+ωx=0\ddot x+\omega x=0 x¨+ωx=0

解得

x(t)=Acos⁡(ωt−ϕ)v(t)=x˙(t)=−Aωsin⁡(ωt−ϕ)\begin{aligned} x(t)&=A\cos(\omega t-\phi)\\ v(t)&=\dot x(t) = -A\omega\sin(\omega t-\phi) \end{aligned} x(t)v(t)​=Acos(ωt−ϕ)=x˙(t)=−Aωsin(ωt−ϕ)​

通过SciML的求解方式为

using OrdinaryDiffEq, Plotsω = 1           #输入\omega然后按tab可打出ω
x₀ = [0.0]      #输入\_0 然后按tab可打出下标₀
dx₀ = [π/2]     #\pi tab
tspan = (0.0, 2π)ϕ = atan((dx₀[1]/ω)/x₀[1])
A = √(x₀[1]^2 + dx₀[1]^2)#
function f(ddu,du,u,ω,t)ddu .= -ω^2 * u
end# 创建二阶ODE问题
prob = SecondOrderODEProblem(f, dx₀, x₀, tspan, ω)
sol = solve(prob, DPRKN6())#Plot
plot(sol, vars=[2,1], linewidth=2, title ="简谐振动", label = ["x" "dx"])
plot!(t->A*cos(ω*t-ϕ), lw=3, ls=:dash, label="解析解 x")
plot!(t->-A*ω*sin(ω*t-ϕ), lw=3, ls=:dash, label="解析解 dx")
savefig("ode_7.png")

结果如图所示

其中,DPRKN6是一个高效但不精确的求解器,采用的是龙格库塔法,并且具有6阶插值。如果感觉精度不够的话,可以改用DPRKN12,顾名思义有12阶插值,但相对来说会慢一些。

关于Runge-kutta法

SciML求解简谐振动的微分方程相关推荐

  1. 几类常微分方程的matlab求解方法 | 刚性微分方程、隐式微分方程、微分代数方程

    目录 微分方程的转换 一.单个高阶常微分方程 二.高阶常微分方程组 刚性微分方程求解 隐式微分方程求解 微分代数方程求解 微分方程的转换 根据微分方程求解的标准型,要得到微分方程的数值解,应该先将该方 ...

  2. matlab求解f非线性微分方程数值解,非线性﹑微分方程数值求解.PPT

    非线性﹑微分方程数值求解 数 学 系 University of Science and Technology of China DEPARTMENT OF MATHEMATICS 计算方法(B) 主 ...

  3. 欧拉法求解微分方程c语言_用C程序求解多项式和微分方程

    欧拉法求解微分方程c语言 1)多项式评估 (1) Polynomial Evaluation) We all know what polynomial equations are and it is ...

  4. SciML求解单摆问题

    单摆问题可表示为 θ ¨ + g L sin ⁡ θ = 0 \ddot{\theta} + \frac{g}{L}{\sin\theta} = 0 θ¨+Lg​sinθ=0 其中, g g g是重力 ...

  5. Petsc求解一维非线性微分方程,SNES对象-2

    微分方程引入 − u ′ ′ + ρ ( u ) = f , x ∈ ( 0 , 1 ) -u^{''}+\rho\sqrt(u)=f,x \in(0,1) −

  6. 记录一下MATLAB中ode45函数求解非刚性微分方程

    首先看一下MATLAB的官方例子 vdp1.m: function dydt = vdp1(t,y) %VDP1 Evaluate the van der Pol ODEs for mu = 1 % ...

  7. 用ode求解二阶非线性微分方程

    输入参数数目不足求大神帮助 clear all; close all; clc; f0=2*10^4; R0=6*10^(-6); P0=1.013*10^5; time=1/f0; Pa=1.2*1 ...

  8. 机器学习(MACHINE LEARNING)MATLAB中微分方程的求解

    文章目录 1 MATLAB之极限.积分.微分 2 matlab中微分方程的求解 2.1 一阶微分方程 2.2 求解二阶线性微分方程 是指含有未知函数及其导数的关系式.解微分方程就是找出未知函数.微分方 ...

  9. 延迟微分方程(matlab求解)

    延迟微分方程数值解(matlab求解) 科学研究中,我们有时会碰到求延迟微分方程数值解的问题,本文探讨了如何用matlab软件求解延迟微分方程. 所谓延迟微分方程,指微分方程中信号不是同时发生的,除了 ...

最新文章

  1. pandas基本数据操作
  2. 作业二:了解流行的软件
  3. 6种常见的无线组网架构
  4. 交大网院计算机第五次作业答案,交大网院计算机第三次作业分析.docx
  5. 一个农场有头母牛,现在母牛才一岁,要到四岁才能生小牛,四岁之后,每年生一头小牛,n年后有多少头小牛
  6. .NET架构小技巧(8)——优待异常
  7. java创建一个成员方法吗,java构造方法和成员方法的区别
  8. 程序员能自己独立进行程序开发,为何要去公司上班呢?真相出来了!
  9. centos下配置java环境变量
  10. 国际电话号码的区号mysql数据表
  11. 【笔记】(python)写入文件:写入空文件、写入多行、附加到文件
  12. 小程序获取openid时报40125
  13. 系统垃圾清理bat文件
  14. 解释外显子,内含子,CDS、cDNA、EST、mRNA、ORF间的区别
  15. [Vulfocus解题系列] 所复现漏洞总结
  16. python实现人工智能识别水果
  17. 淘宝618列车喵币自动做任务app 懒人一键安装包
  18. h5 苹果IOS端 播放mp3 没声音
  19. 基于Visual C++2010 与office2010开发办公自动化 2 -自动生成excel与word并打开
  20. (6)关于整型short、int、long和long long

热门文章

  1. 运行tensorflow-datasets遇到import tensorflow.compat.v2 as tf报错ImportError: No module named tensorflow.V2
  2. 线特征作为视觉描述:用于视觉定位的上下文感知线特征描述符
  3. 小米设备token获取HomeAssistant安装部署
  4. 中创|又临双11淘宝崩了,中心化存储难以支撑
  5. (uniapp-快速入门)运行到小程序模拟器微信开发工具
  6. 人工智能生成 logo 神器
  7. 【理解】ORB特征提取与ORBSLAM特征匹配简要剖析
  8. CSS画等腰三角形与直角三角形
  9. 苹果天气无线网连接到服务器,苹果手机天气怎么设置?教你玩转天气应用
  10. 关于恶意说说自动在QQ空间转发的机制