2024-12-25
Matlab
00

使用 MATLAB 的 ode45 求解常微分方程

简介

ode45 是 MATLAB 中一个常用的数值解常微分方程 (ODE) 的函数。它基于经典的 Runge-Kutta 方法,适用于求解非刚性方程。本文将介绍 ode45 的基本使用方法和一些简单的实例。

非刚性方程是指那些在数值求解时,不需要特别小的时间步长来保证稳定性的常微分方程。这类方程在数值求解过程中一般没有明显的数值振荡和稳定性问题,可以使用常规的数值方法如 ode45 等进行求解。

“45” 代表的是该方法使用了一个四阶的 Runge-Kutta 方法和一个五阶的 Runge-Kutta 方法。

四阶和五阶 Runge-Kutta 方法

  • 四阶 Runge-Kutta 方法 (RK4) :这个方法以其简单性和广泛的精度而著名。它在每个时间步长 h 中,通过评价四次斜率,来估计当前点的增量。
  • 五阶 Runge-Kutta 方法 (RK5) :它是四阶方法的扩展,通过评价额外次数的斜率,进一步提高了精度。

ode45 的基本原理

  1. ode45 组合使用了四阶和五阶 Runge-Kutta 方法,属于所谓的 Runge-Kutta-Fehlberg 方法。其基本工作原理如下:
  2. 每一步计算时,ode45 同时执行四阶和五阶的方法。
  3. 比较两者的结果,估计误差。
  4. 根据误差估计,动态调整步长:如果误差较大,减小步长;如果误差较小,增大步长。
2024-12-24
Matlab
00

基本模型

电机模型:

Vm=iaRa+Ladiadt+EbV_m=i_aR_a+L_a\frac{di_a}{dt}+E_b

反电动势 (emf) EbE_{b} 与角速度 φ˙\dot{\varphi} 相关。

Eb=Kbφ˙E_{b}=K_{b}\dot{\varphi}

因为:La<<RaL_a<<R_a

所以: ia=VmKbφ˙Rai_a=\frac{V_m-K_b \dot{\varphi}}{R_a}

电机转矩 τ\tau 和反电动势 (emf) 有关:

τ=Ktia=KtVmKbφ˙Ra(公式4)\tau=K_t i_a=K_t \frac{V_m-K_b \dot{\varphi}}{R_a} (公式4)

image.png

2024-12-23
提示词工程
00
2024-12-23
Android/Java
00

JNI 简介

JNI(Java Native Interface)是“Java 本地接口”的缩写,用于指使用 C 和 C++ 语言开发的接口。由于 JNI 是 JVM 规范的一部分,所以我们编写的 JNI 程序可以在任何实现了 JNI 规范的 Java 虚拟机上运行。这一特性允许我们复用大量用 C/C++ 编写的代码。

然而,开发 JNI 程序会受到系统环境的限制,因为用 C/C++ 编写的代码在编译时依赖于操作系统提供的库函数,并需要链接到本地库上。因此,编译后的二进制代码只能在特定操作系统环境下运行。由于不同操作系统有各自的本地库和 CPU 指令集,各平台对标准 C/C++ 规范和库函数的实现方式也有所不同。这使得使用了 JNI 接口的 Java 程序不再具备完全的跨平台能力。如果要实现跨平台,需要在不同操作系统下编译出相应的动态库。

2024-12-23
Android/Java
00

Android 工程项目结构解析

工程关键部分

以 Android Studio(或 Eclipse + ADT)为例,大部分开发工作集中在以下几个目录:

  • java:存放业务功能的 Java 代码。
  • res:存放各种资源文件,如图片、字符串、动画、音频以及各种 XML 文件。