【2024 Optimal Control 16-745】【Lecture 2】integrators.ipynb功能分析
代码功能分析
导入库和项目设置
import Pkg; Pkg.activate(@__DIR__); Pkg.instantiate()
-
功能:激活当前文件夹为 Julia 项目环境,并安装当前项目中缺失的依赖包。
-
import Pkg:- 导入 Julia 的包管理模块
Pkg,用于管理项目依赖。
- 导入 Julia 的包管理模块
-
Pkg.activate(@__DIR__):- 激活当前脚本所在目录作为 Julia 项目环境。
@__DIR__是当前文件的目录路径。
- 激活当前脚本所在目录作为 Julia 项目环境。
-
Pkg.instantiate():- 根据项目的
Project.toml和Manifest.toml文件,安装所有依赖包。如果某些包未安装,这个命令会自动安装它们。
- 根据项目的
using LinearAlgebra
using PyPlot
using ForwardDiff
功能:加载必要的库:
-
using LinearAlgebra:- 导入线性代数模块,提供矩阵运算、特征值分解等功能。属于 Julia 标准库的一部分。
-
using PyPlot:- 导入
PyPlot模块,用于绘制图形。PyPlot是 Julia 对 Python Matplotlib 的接口,依赖于 Python 环境。
- 导入
-
using ForwardDiff:- 导入
ForwardDiff模块,提供自动微分功能,常用于数值优化和科学计算。
- 导入
定义摆动动力学函数
function pendulum_dynamics(x)l = 1.0g = 9.81θ = x[1] # 摆动角度 θθ̇ = x[2] # 摆动角速度 θ̇θ̈ = -(g / l) * sin(θ) # 根据摆动力学方程,计算角加速度 θ̈return [θ̇; θ̈] # 返回角速度和角加速度
end
- 功能:模拟单摆的动力学:
- 输入
x是状态向量[θ, θ̇],即当前角度和角速度。 - 计算结果是新的状态向量
[θ̇, θ̈],即角速度和角加速度。
- 输入
没有控制项时,动力学方程中的质量项m会相互抵消

通过拉格朗日方程推导,质量 m m m在动能和势能中对称出现,最终通过偏导数和求导操作被完全抵消。这反映了单摆在无外力(无控制项)情况下的动力学是一个与质量 m m m无关的系统,运动仅由摆长 l l l、重力加速度 g g g 和角度 θ \theta θ 决定。
θ 和 θ̇ 是 Julia 中的 Unicode 变量名,可以通过快捷输入实现。在代码中,这些符号只是普通变量名,它们的含义通过上下文和赋值来表达。
Forward Euler
定义前向欧拉法求解器
function pendulum_forward_euler(fun, x0, Tf, h)t = Array(range(0, Tf, step=h)) # 定义时间步长数组 tx_hist = zeros(length(x0), length(t)) # 创建状态记录数组,初始化为 0x_hist[:,1] .= x0 # 设置初始状态为 x0for k = 1:(length(t)-1)x_hist[:,k+1] .= x_hist[:,k] + h * fun(x_hist[:,k]) # 使用前向欧拉法计算下一步状态endreturn x_hist, t # 返回状态历史和时间步长
end
- 功能:
- 计算单摆运动的数值解,使用前向欧拉法。
fun是状态导数的计算函数(这里是pendulum_dynamics)。x0是初始状态[θ₀, θ̇₀]。Tf是模拟总时间。h是时间步长。- 返回:
x_hist:时间序列中摆的角度和角速度。t:时间序列。
.= 用于广播赋值,使得多个值可以逐元素地赋给目标数组或集合。
前向欧拉法-角度随时间的变化
x0 = [0.1; 0] # 初始角度为 0.1 弧度,初始角速度为 0
x_hist, t = pendulum_forward_euler(pendulum_dynamics, x0, 5, 0.1) # 运行模拟,总时间 5 秒,步长 0.1 秒plot(t, x_hist[1,:]) # 绘制角度随时间变化曲线
- 功能:
- 设置单摆的初始状态
- 使用
pendulum_forward_euler求解 5 秒内的摆动状态,步长为 0.1 秒。 - 绘制角度(
x_hist[1,:])随时间变化的曲线。
可视化图像
生成的图像展示了单摆在模拟时间内的角度随时间的变化,是一个振荡曲线(近似简谐振荡)。
由于采用的是前向欧拉法,随着时间步长的增加,数值解可能会出现一定的误差,尤其是在较长时间的模拟中。
-
数值方法的稳定性:
- 前向欧拉法是一种显式的数值积分方法,虽然实现简单,但在处理刚性方程或需要高精度的情况下可能不够稳定。可以考虑使用更高阶的方法,如四阶龙格-库塔法(RK4)。
-
时间步长的选择:
- 时间步长
h影响数值解的精度和稳定性。较小的步长通常提供更高的精度,但会增加计算量。需要根据具体问题权衡选择合适的步长。
- 时间步长
-
总模拟时间5s,时间步长0.1s
-
-
总模拟时间5s,时间步长0.01s
-

-
总模拟时间5s,时间步长0.01s

-
总模拟时间20s,时间步长0.01s

-
总模拟时间20s,时间步长0.001s

-
总模拟时间100s,时间步长0.001s

计算摆动系统离散化后的线性化矩阵 pendulum_euler_Ad
function pendulum_euler_Ad(x0, h)g = 9.81Ad = [1 h; -g*h*cos(x0[1]) 1]
end
功能解释:
-
function pendulum_euler_Ad(x0, h)- 定义了一个名为
pendulum_euler_Ad的函数,输入参数为:x0:当前状态向量(包括角度和角速度)。h:时间步长。
- 这个函数计算摆动系统离散化后的线性化矩阵。
- 定义了一个名为
-
g = 9.81- 定义重力加速度为 9.81 m/s²。
-
Ad = [1 h; -g*h*cos(x0[1]) 1]- 定义欧拉法计算的状态转移矩阵:
- 第一行表示角度更新(线性项)。
- 第二行表示角速度更新,包含重力和角度余弦的线性化影响。
- 定义欧拉法计算的状态转移矩阵:
调用函数并计算特征值
eigvals(pendulum_euler_Ad(0, 0.1))
功能解释:
-
pendulum_euler_Ad(0, 0.1)- 计算当初始角度 x 0 = 0 x_0 = 0 x0=0,时间步长 h = 0.1 h = 0.1 h=0.1 时的离散化矩阵。
-
eigvals()- 计算该矩阵的特征值,返回的结果为:
1.0 - 0.31320919526731655im 1.0 + 0.31320919526731655im - 表示系统状态转移矩阵的两个复数特征值。
- 计算该矩阵的特征值,返回的结果为:
等价于使用使用 ForwardDiff 自动求雅可比矩阵
using ForwardDiffh = 0.1 # 时间步长
Ad = I + h * ForwardDiff.jacobian(pendulum_dynamics, [0.0, 0.0]) # 计算A_d矩阵
eigvals(Ad) # 计算特征值

前向欧拉法-绘制特征值模与时间步长的关系图
eig_norm = zeros(100)
h = LinRange(0, 0.1, 100)
for k = 1:length(eig_norm)eig_norm[k] = max(norm.(eigvals(pendulum_euler_Ad([0;0], h[k]))))
end
plot(h, eig_norm)
功能解释:
-
eig_norm = zeros(100)- 初始化一个大小为 100 的数组,用于存储不同时间步长下特征值模的最大值。
-
h = LinRange(0, 0.1, 100)- 创建一个从 0 到 0.1 的线性空间,分为 100 等分,表示时间步长的变化范围。
-
for k = 1:length(eig_norm)- 开始循环,对每个时间步长计算对应的最大特征值模。
-
pendulum_euler_Ad([0;0], h[k])- 计算当前时间步长下的状态转移矩阵。
-
eigvals()- 计算当前矩阵的特征值。
-
norm.(eigvals(...))- 计算所有特征值的模。
-
max(...)- 获取当前时间步长下特征值模的最大值。
-
plot(h, eig_norm)- 绘制时间步长 h h h 和对应最大特征值模的关系图。
图像分析:
- 图像显示特征值模随时间步长 h h h 的变化:
- 当 h → 0 h \to 0 h→0 时,特征值模接近 1,系统趋于边际稳定。
- 随着 h h h 增大,特征值模逐渐超过 1,系统变得不稳定。

这段代码实现了摆动系统的离散化线性化分析,探索了时间步长对系统稳定性的影响,并通过绘制关系图验证了系统的边界稳定性条件。
四阶龙格-库塔方法(RK4)
实现四阶龙格-库塔方法(RK4)fd_pendulum_rk4
function fd_pendulum_rk4(xk, h)f1 = pendulum_dynamics(xk)f2 = pendulum_dynamics(xk + 0.5*h*f1)f3 = pendulum_dynamics(xk + 0.5*h*f2)f4 = pendulum_dynamics(xk + h*f3)return xk + (h/6.0)*(f1 + 2*f2 + 2*f3 + f4)
end
功能:
实现四阶龙格-库塔方法(RK4)的核心步骤:
f1到f4是四次不同点计算的斜率估计值。- 最终返回加权平均的更新状态,权重为 1 , 2 , 2 , 1 1, 2, 2, 1 1,2,2,1。
函数 pendulum_rk4
function pendulum_rk4(fun, x0, Tf, h)t = Array(range(0, Tf, step=h))x_hist = zeros(length(x0), length(t))x_hist[:,1] .= x0for k = 1:(length(t)-1)x_hist[:,k+1] .= fd_pendulum_rk4(x_hist[:,k], h)endreturn x_hist, t
end
功能:
用 RK4 模拟摆动系统。
x_hist用于存储状态历史,t是时间步数组。- 初始状态为
x0,逐步调用fd_pendulum_rk4更新状态。
RK4法模拟单摆系统角度随时间变化
x0 = [1.0; 0]
x_hist2, t_hist2 = pendulum_rk4(pendulum_dynamics, x0, 10, 0.1)
plot(t_hist2, x_hist2[1,:])
功能:
- 定义初始状态
x0 = [1.0; 0](初始角度为 1 弧度,初始角速度为 0)。 - 运行 RK4 模拟,总时长 10 秒,时间步长 0.1。
- 绘制角度随时间变化的曲线。

使用 ForwardDiff 计算雅可比矩阵
using ForwardDiff
Ad = ForwardDiff.jacobian(x -> fd_pendulum_rk4(x, 0.1), [0; 0])
norm.(eigvals(Ad))
功能:
-
using ForwardDiff:- 引入
ForwardDiff包,用于自动微分计算梯度、雅可比矩阵(Jacobian)和高阶导数。 - 在这里,它被用来计算一个函数的雅可比矩阵。
- 引入
-
ForwardDiff.jacobian(x -> fd_pendulum_rk4(x, 0.1), [0; 0]):-
雅可比矩阵的计算:
x -> fd_pendulum_rk4(x, 0.1)是一个匿名函数,它将输入 x x x 映射到通过四阶龙格-库塔方法(fd_pendulum_rk4)计算的状态更新结果。fd_pendulum_rk4是一个积分器函数,用于模拟系统的动力学行为。它的输入参数:- x x x 是当前状态向量(如 [角度; 角速度])。
0.1是时间步长 h h h。
- 雅可比矩阵是关于状态变量 x x x 的偏导数矩阵,其元素定义为:
J i j = ∂ f i ∂ x j J_{ij} = \frac{\partial f_i}{\partial x_j} Jij=∂xj∂fi
在这里, f i f_i fi 表示第 i i i 个方程的结果, x j x_j xj 表示第 j j j 个输入变量。

-
状态点
[0; 0]:- 指定初始状态为 x = [ 0 ; 0 ] x = [0; 0] x=[0;0],即摆的角度和角速度都为零。
-
输出
Ad:- 计算得到的雅可比矩阵 A d A_d Ad,表示在 x = [ 0 ; 0 ] x = [0; 0] x=[0;0] 处的局部线性化模型。
-
-
eigvals(Ad):- 计算矩阵 A d A_d Ad 的特征值:
- 特征值描述了状态变化的动态特性,决定系统的稳定性。
- 如果特征值的模(绝对值)小于 1,则系统是稳定的。
- 计算矩阵 A d A_d Ad 的特征值:
-
norm.(eigvals(Ad)):- 计算矩阵特征值的模(欧几里得范数)。
norm.是广播操作符(dot syntax),对特征值数组逐个计算模。- 输出是一个数组,其中每个值表示对应特征值的模。
总结
- 该代码通过自动微分计算四阶龙格-库塔方法在特定状态( x = [ 0 ; 0 ] x = [0; 0] x=[0;0])下的雅可比矩阵。
- 通过特征值的模,分析离散时间系统在该状态附近的稳定性。
- 如果所有特征值的模小于 1,系统在该状态下是局部稳定的。
RK4法特征值模随时间步长的变化
eig_norm = zeros(100)
h = LinRange(0, 1, 100)
for k = 1:length(eig_norm)eig_norm[k] = max(norm.(eigvals(ForwardDiff.jacobian(x -> fd_pendulum_rk4(x, h[k]), [0; 0]))))
end
plot(h, eig_norm)
功能:
- 初始化特征值模数组
eig_norm和时间步长范围h。 - 循环计算不同时间步长下特征值模的最大值。
- 绘制时间步长和特征值模的关系图,分析稳定性。

Backward Euler
反向欧拉法 pendulum_backward_euler
function pendulum_backward_euler(fun, x0, Tf, dt)t = Array(range(0, Tf, step=dt))x_hist = zeros(length(x0), length(t))x_hist[:,1] .= x0for k = 1:(length(t)-1)e = 1x_hist[:,k+1] .= x_hist[:,k]while e > 1e-8xn = x_hist[:,k] + dt.*fun(x_hist[:,k+1])e = norm(xn - x_hist[:,k+1])x_hist[:,k+1] .= xnendendreturn x_hist, t
end
该函数 pendulum_backward_euler 使用反向欧拉法Backward Euler Method模拟摆动系统的动力学行为。
工作原理总结
-
反向欧拉法:
- 隐式方法,在每个时间步需要迭代求解状态更新。
- 更加稳定,适合处理刚性系统。
-
迭代过程:
- 初始猜测下一步状态值。
- 利用当前猜测值计算下一步状态的动力学函数。
- 反复更新,直到误差小于设定的阈值。
函数头
function pendulum_backward_euler(fun, x0, Tf, dt)
fun: 表示系统的动力学函数,输入当前状态返回状态导数。例如,对于摆动系统,这个函数返回角速度和角加速度。x0: 初始状态向量,通常表示 [角度; 角速度]。Tf: 总模拟时间。dt: 时间步长。
时间数组与状态历史初始化
t = Array(range(0, Tf, step=dt))
x_hist = zeros(length(x0), length(t))
x_hist[:,1] .= x0
-
t:- 创建时间数组,从 0 到
Tf,以步长dt增加。 - 每个时间点对应系统的状态更新。
- 创建时间数组,从 0 到
-
x_hist:- 初始化一个矩阵,用于存储状态历史。行数为状态变量的数量(如角度和角速度),列数为时间点数量。
-
x_hist[:,1] .= x0:- 将第一列(即初始时间点)的状态设置为初始状态
x0。
- 将第一列(即初始时间点)的状态设置为初始状态
时间步循环
for k = 1:(length(t)-1)e = 1x_hist[:,k+1] .= x_hist[:,k]
- 遍历所有时间步,
k是当前时间步索引。 - 初始化误差
e = 1(用于收敛判断)。 - 用当前状态
x_hist[:,k]作为下一状态x_hist[:,k+1]的初始猜测值。
反向欧拉迭代
while e > 1e-8xn = x_hist[:,k] + dt.*fun(x_hist[:,k+1])e = norm(xn - x_hist[:,k+1])x_hist[:,k+1] .= xn
end
-
迭代公式:
- 反向欧拉法的核心方程:
x k + 1 = x k + h ⋅ f ( x k + 1 ) x_{k+1} = x_k + h \cdot f(x_{k+1}) xk+1=xk+h⋅f(xk+1) - 方程是隐式的,因为 x k + 1 x_{k+1} xk+1 既在左侧,也在右侧的动力学函数中。
- 反向欧拉法的核心方程:
-
计算新估计值
xn:- 使用当前估计值
x_hist[:,k+1]计算右侧的动力学值 f ( x k + 1 ) f(x_{k+1}) f(xk+1)。 - 更新 x k + 1 x_{k+1} xk+1 的新估计
xn。
- 使用当前估计值
-
误差计算
e:- 计算当前估计值
xn与之前的值x_hist[:,k+1]的欧几里得范数(即误差)。 - 如果误差小于 1 × 1 0 − 8 1 \times 10^{-8} 1×10−8,迭代停止,认为 x k + 1 x_{k+1} xk+1 已经收敛。
- 计算当前估计值
-
更新
x_hist[:,k+1]:- 将新的估计值
xn赋值给下一步状态x_hist[:,k+1]。
- 将新的估计值
返回结果
return x_hist, t
- 返回:
x_hist: 包含整个模拟过程中每个时间点的状态历史。t: 对应的时间点数组。
反向欧拉法-模拟角度随时间变化
x0 = [1.0; 0]
x_hist3, t_hist3 = pendulum_backward_euler(pendulum_dynamics, x0, 10, 0.001)
plot(t_hist3, x_hist3[1,:])
功能:
- 定义初始状态
x0 = [1.0; 0]。 - 用反向欧拉法模拟总时长 10 秒,时间步长为 0.001。
- 绘制角度随时间变化的曲线,展示系统动力学行为。

相关文章:
【2024 Optimal Control 16-745】【Lecture 2】integrators.ipynb功能分析
代码功能分析 导入库和项目设置 import Pkg; Pkg.activate(__DIR__); Pkg.instantiate()功能:激活当前文件夹为 Julia 项目环境,并安装当前项目中缺失的依赖包。 import Pkg: 导入 Julia 的包管理模块 Pkg,用于管理项目依赖。 …...
【linux】ubuntu下常用快捷键【笔记】
环境 硬件:通用PC 系统:Ubuntu 20.04 软件 : 打开终端窗口:Ctrl Alt T 关闭当前窗口:Alt F4 改变窗口大小:Alt F8 移动窗口: Alt F7 配合 “←”、“→”、“↑”、“↓”来移动窗口 …...
【Linux】常用命令练习
一、常用命令 1、在/hadoop目录下创建src和WebRoot两个文件夹 分别创建:mkdir -p /hadoop/src mkdir -p /hadoop/WebRoot 同时创建:mkdir -p /hadoop/{src,WebRoot}2、进入到/hadoop目录,在该目录下创建.classpath和README文件 分别创建&am…...
力扣-Hot100-数组【算法学习day.37】
前言 ###我做这类文档一个重要的目的还是给正在学习的大家提供方向(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴&am…...
表格不同类型的数据如何向量化?
在进行机器学习项目时,首先需要获取数据,这些数据可以来自数据库、API、网络抓取,或从CSV、Excel等文件中读取。数据可能包含数值、文本和类别等多种特征,但原始数据通常无法直接用于训练模型。 数据预处理包括清洗、填补缺失值和…...
成都栩熙酷,电商服务新选择
在当今数字经济蓬勃发展的时代,电商平台已成为推动商业创新、促进消费升级的重要力量。抖音小店,作为短视频与电商深度融合的产物,凭借其独特的社交属性和内容营销优势,迅速吸引了大量用户和商家的关注。在这场变革中,…...
【java基础】微服务篇
参考黑马八股视频。 目录 Spring Cloud 5大组件 注册中心 负载均衡 限流 CAP和BASE 分布式事务解决方案 分布式服务的接口幂等性 分布式任务调度 Spring Cloud 5大组件 注册中心 Eureka的作用 健康监控 负载均衡 限流 漏桶固定速率,令牌桶不限速 CAP和BA…...
【LLM训练系列02】如何找到一个大模型Lora的target_modules
方法1:观察attention中的线性层 import numpy as np import pandas as pd from peft import PeftModel import torch import torch.nn.functional as F from torch import Tensor from transformers import AutoTokenizer, AutoModel, BitsAndBytesConfig from typ…...
uni-app快速入门(八)--常用内置组件(上)
uni-app提供了一套基础组件,类似HTML里的标签元素,不推荐在uni-app中使用使用div等HTML标签。在uni-app中,对应<div>的标签是view,对应<span>的是text,对应<a>的是navigator,常用uni-app…...
基于Amazon Bedrock:一站式多模态数据处理新体验
目录 引言 关于Amazon Bedrock 基础模型体验 1、进入环境 2、发现模型及快速体验 3、打开 Amazon Bedrock 控制台 4、通过 Playgrounds 体验模型 (1)文本生成 (2)图片生成 关于资源清理 结束语 引言 在云计算和人工智能…...
FAX动作文件优化脚本(MAX清理多余关键帧插件)
大较好,为大家介绍一个节省FBX容量的插件!只保留有用的动画轴向,其他不参与动画运动的清除! 一.插件目的:: 1.我们使用的U3D引擎产生的游戏资源包容量太大,故全方位优化动画资源; 2.在max曲线编辑器内,点取轴向太过麻烦,费事,直观清除帧大大提高效率。 如: 二:…...
Chapter 2 - 16. Understanding Congestion in Fibre Channel Fabrics
Transforming an I/O Operation to FC frames A read or write I/O operation (Figure 2-28) between an initiator and a target undergoes a series of transformations before being transmitted on a Fibre Channel link. 启动程序和目标程序之间的读取或写入 I/O 操作(图…...
mysql数据库(六)pymysql、视图、触发器、存储过程、函数、流程控制、数据库连接池
pymysql、视图、触发器、存储过程、函数、流程控制、数据库连接池 文章目录 pymysql、视图、触发器、存储过程、函数、流程控制、数据库连接池一、pymysql二、视图三、触发器四、存储过程五、函数六、流程控制七、数据库连接池 一、pymysql 可以使用pip install pymysql安装py…...
RFdiffusion EuclideanDiffuser类解读
EuclideanDiffuser 是 RFdiffusion 中的一个关键类,专门设计用于对**三维空间中的点(如蛋白质的原子坐标)**进行扩散处理。它通过逐步向这些点添加噪音来实现扩散过程,从而为扩散模型提供输入数据,并通过逆扩散还原这些数据。 get_beta_schedule函数源代码 def get_beta…...
Flutter实现气泡提示框学习
前置知识点学习 GlobalKey GlobalKey 是 Flutter 中一个非常重要的概念,它用于唯一标识 widget 树中的特定 widget,并提供对该 widget 的访问。这在需要跨越 widget 树边界进行交互或在 widget 树重建时保持状态时尤其有用。 GlobalKey 的作用 唯一标…...
vue3 路由守卫
在Vue 3中,路由守卫是一种控制和管理路由跳转的机制。它允许你在执行导航前后进行一些逻辑处理,比如权限验证、数据预取等,从而增强应用的安全性和效率。路由守卫分为几种不同的类型,每种类型的守卫都有其特定的应用场景。 其实路…...
【MATLAB源码-第218期】基于matlab的北方苍鹰优化算法(NGO)无人机三维路径规划,输出做短路径图和适应度曲线.
操作环境: MATLAB 2022a 1、算法描述 北方苍鹰优化算法(Northern Goshawk Optimization,简称NGO)是一种新兴的智能优化算法,灵感来源于北方苍鹰的捕猎行为。北方苍鹰是一种敏捷且高效的猛禽,广泛分布于北…...
如何控制自己玩手机的时间?两台苹果手机帮助自律
对一些人来说,被智能手机“绑架”是一件心甘情愿的事,和它相处的一天中,不必面对现实的压力,它就像个“舒适区”。这是因为在使用手机的过程中,应用程序(尤其是游戏和社交媒体应用)会不断刺激大…...
【java-Neo4j 5开发入门篇】-最新Java开发Neo4j
系列文章目录 前言 上一篇文章讲解了Neo4j的基本使用,本篇文章对Java操作Neo4j进行入门级别的阐述,方便读者快速上手对Neo4j的开发。 一、开发环境与代码 1.docker 部署Neo4j #这里使用docker部署Neo4j,需要镜像加速的需要自行配置 docker run --name…...
Python的3D可视化库 - vedo (1)简介和模块功能概览
文章目录 1. vedo和它支持的功能简介1.1 安装vedo1.2 命令行接口1.3 导出3D文件1.4 文件格式转换 2. vedo模块功能概览2.1 绘制和渲染visual 管理可视化、对象及其属性的显示的基类plotter 3D渲染colors 定义和显示颜色dolfin FEniCS/Dolfin库的支持 2.2 图形数据管理mesh 多边…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...
Appium+python自动化(十六)- ADB命令
简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...
微信小程序云开发平台MySQL的连接方式
注:微信小程序云开发平台指的是腾讯云开发 先给结论:微信小程序云开发平台的MySQL,无法通过获取数据库连接信息的方式进行连接,连接只能通过云开发的SDK连接,具体要参考官方文档: 为什么? 因为…...
ios苹果系统,js 滑动屏幕、锚定无效
现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...
RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...
