计算物理精解【2】-Julia计算基础

news2024/9/30 23:34:38

文章目录

  • Julia的命名规则
      • 1. 字符选择
      • 2. 大小写敏感
      • 3. 禁用字符
      • 4. Unicode支持
      • 5. 命名约定
      • 6. 示例
  • 运算
  • 赋值
  • 类型
  • String
  • 转换类型
  • 伴随矩阵
  • Julia 符号计算-SymEngine
  • Julia 符号计算-SymbolicUtils
  • 参考文献

Julia的命名规则

相对宽松但也有一些特定的要求,主要包括以下几个方面:

1. 字符选择

  • 首字符:名称的首字符必须是下划线(_)、英文26个字母的小写或大写、或编码大于0x00A0的Unicode字符。这意味着你可以使用各种Unicode字符(包括中文字符)作为名称的首字符,只要它们的编码符合要求。
  • 后续字符:名称的后续字符可以是字母、数字、下划线或Unicode字符(编码大于0x00A0)。注意,不能以数字开头。

2. 大小写敏感

Julia的名称是大小写敏感的,即myVariableMyVariable会被视为两个不同的名称。

3. 禁用字符

  • 名称中不能包含算术运算符或内部标识符,如@#$%^&等。
  • 也不能使用Julia的保留字(关键字)作为名称,尽管一些关键字可以是名称的一部分,但不能完整地作为名称使用。

4. Unicode支持

Julia广泛支持Unicode,你可以在名称中使用各国文字、希腊字母等Unicode字符,这为命名提供了更多的灵活性。

5. 命名约定

虽然Julia的命名规则相对宽松,但遵循一定的命名约定可以使代码更加清晰和易于理解。例如:

  • 变量名通常使用小写字母和下划线组合,如my_variable
  • 类型与模块的名字通常使用大写字母开头,如MyTypeMyModule
  • 函数和宏的命名通常使用全小写字母,不使用下划线,如果函数会修改其参数,则在其名称末尾添加感叹号(!),如myFunction!

6. 示例

以下是一些符合Julia命名规则的示例:

  • 变量名:my_variableπ(表示圆周率,使用了Unicode字符)、中国(使用了中文字符)。
  • 类型名:MyTypeVector3D
  • 函数名:calculateSumupdateValue!

总之,Julia的命名规则为开发者提供了很大的灵活性,同时也要求开发者在命名时保持一定的规范性和清晰度,以便更好地理解和维护代码。

运算


julia> 58-99
-41

julia> 88*99
8712


julia> 3^5
243

julia> 5/3
1.6666666666666667

julia> 5÷3
1

julia> 5\3
0.6

julia> 5^3
125

julia> 5 % 3
2

image

赋值

julia> x=11
11

julia> y=22
22

julia> x+y
33

julia> x*y
242

julia> s="adfad 大"
"adfad 大"

julia> s
"adfad 大"
julia> x,y,z,_=[1,2,3,4]
4-element Vector{Int64}:
 1
 2
 3
 4

julia> x
1

julia> y
2

julia> z
3
julia> x=(y=3-9)*(z=9*2)
-108

julia> x
-108

julia> y
-6

julia> z
18

注意!数组索引从1开始。

julia> x=[1,2,3]
3-element Vector{Int64}:
 1
 2
 3

julia> x1,x2,x3=x
3-element Vector{Int64}:
 1
 2
 3

julia> x
3-element Vector{Int64}:
 1
 2
 3

julia> x1
1

julia> x2
2

julia> x3
3

julia> x[0]=11
ERROR: BoundsError: attempt to access 3-element Vector{Int64} at index [0]
Stacktrace:
 [1] setindex!(A::Vector{Int64}, x::Int64, i1::Int64)
   @ Base .\array.jl:1021
 [2] top-level scope
   @ REPL[11]:1

julia> x[1]=11
11

julia> x
3-element Vector{Int64}:
 11
  2
  3
julia> x=[1,2,3,4]
4-element Vector{Int64}:
 1
 2
 3
 4

julia> x[1]
1

julia> x[4]
4

类型

image
image

julia> x=11.11
11.11

julia> y=11*33
363

julia> z=11^33
-2735507597456868213

julia> typeof(x)
Float64

julia> typeof(y)
Int64

julia> typeof(z)
Int64
julia> y=0x18A
0x018a

julia> y
0x018a

julia> typeof(x)
Int64
julia> y=0b100111
0x27
julia> typemin(Int64)
-9223372036854775808

julia> typemax(Int64)
9223372036854775807

julia> x=big(2)^1024
179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768838150682342462881473913110540827237163350510684586298239947245938479716304835356329624224137216

julia> x-11111
179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768838150682342462881473913110540827237163350510684586298239947245938479716304835356329624224126105

julia> typeof(x)
BigInt
julia> parse(BigFloat,"1024.5")
1024.5

julia> parse(BigInt,"1024")
1024
julia> big"2"^2048
32317006071311007300714876688669951960444102669715484032130345427524655138867890893197201411522913463688717960921898019494119559150490921095088152386448283120630877367300996091750197750389652106796057638384067568276792218642619756161838094338476170470581645852036305042887575891541065808607552399123930385521914333389668342420684974786564569494856176035326322058077805659331026192708460314150258592864177116725943603718461857357598351152301645904403697613233287231227125684710820209725157101726931323469678542580656697935045997268352998638215525166389437335543602135433229604645318478604952148193555853611059596230656

julia> big"2.15"^2048
6.822851315199375383289564945749266176092639253569830080461634961023501543854613e+680

julia> BigFloat(2.0)^1024
1.79769313486231590772930519078902473361797697894230657273430081157732675805501e+308
julia> BigInt(2)^1024
179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768838150682342462881473913110540827237163350510684586298239947245938479716304835356329624224137216
#复数
julia> 1-8im
1 - 8im

julia> (6+9im)*3
18 + 27im

julia> (6+9im)-7im
6 + 2im

julia> Int('a')
97

julia> Int('A')
65

julia> for c in "abcde"
          println(c)
       end
a
b
c
d
e

julia> typeof('a')
Char

julia> typeof("a")
String

String

julia> s[1:2]
"ab"

julia> s[2:1]
""

julia> s[2:2]
"b"

julia> s[2:3]
"bc"

julia> s[2:4]
"bcd"

julia> s
"abcdef"
julia> s="aa","bb"
("aa", "bb")

julia> s=string("aa","bb")
"aabb"

julia> s1="Aa"
"Aa"

julia> s2="Bb"
"Bb"

julia> s=string(s1,s2)
"AaBb"

julia> s="$s1-s2"
"Aa-s2"

转换类型

在Julia中,可以使用内置函数来转换或者调整数据类型。以下是一些常用的数据类型转换方法:

  • 转换类型
Int(): 将浮点数或字符串转换为整数。

Float(): 将整数或字符串转换为浮点数。

String(): 将其他类型转换为字符串。

Char(): 将字符串或字符转换为Char类型。

parse(): 将字符串转换为指定类型,如parse(Int, "123")将字符串"123"转换为整数123。
  • 取整
    取整可以使用几种不同的函数,取决于你想要的取整方式(向下取整、向上取整还是四舍五入)。以下是一些常用的取整函数:


    floor(::Type{T}, x):向下取整,返回小于或等于x的最大整数。

    ceil(::Type{T}, x):向上取整,返回大于或等于x的最小整数。

    round(::Type{T}, x):四舍五入到最接近的整数。

    iround(::Type{T}, x):四舍五入到最接近的整数,对于.5的情况会考虑前一个整数。

    trunc(::Type{T}, x):向0方向取整,丢弃小数部分。

伴随矩阵

julia> x=[11 22;33 44]
2×2 Matrix{Int64}:
 11  22
 33  44

下面这段代码对吗?对于二维方阵是对的,因为直接求的是转置矩阵

A'=adjoint(A)
julia> adjoint(x)
2×2 adjoint(::Matrix{Int64}) with eltype Int64:
 11  33
 22  44

但二维以上就错了!

using LinearAlgebra
k=[10 5 12 ;3 14 21;8 9 11]
adjoint_k=[0 0 0;0 0 0;0 0 0]
for i in range(1,3)
	index_i=[1,2,3]
	deleteat!(index_i,i)
	for j in range(1,3)
		global k
		index_j=[1,2,3]
		deleteat!(index_j,j)		
		print([index_i,index_j],"=")
		println(k[index_i,index_j])
		a_ij=(-1)^(i+j)*round(Int,det(k[index_i,index_j]))
		adjoint_k[j,i]=a_ij
	end
end
println(adjoint_k)

julia> include("e:/learn/learn1.jl")
[[2, 3], [2, 3]]=[14 21; 9 11]
[[2, 3], [1, 3]]=[3 21; 8 11]
[[2, 3], [1, 2]]=[3 14; 8 9]
[[1, 3], [2, 3]]=[5 12; 9 11]
[[1, 3], [1, 3]]=[10 12; 8 11]
[[1, 3], [1, 2]]=[10 5; 8 9]
[[1, 2], [2, 3]]=[5 12; 14 21]
[[1, 2], [1, 3]]=[10 12; 3 21]
[[1, 2], [1, 2]]=[10 5; 3 14]
[-35 53 -63; 135 14 -174; -85 -50 125]

Julia 符号计算-SymEngine

下面内容由文心一言自动生成
Julia 在符号计算方面表现出色,尽管它本身是一个高性能的科学计算语言,主要面向数值计算,但通过一些扩展包,如
SymEngine、SymPy 等,Julia 可以实现强大的符号计算能力。以下是关于 Julia 符号计算的一些关键点和步骤:

1. 符号计算的概念

符号计算,也称为代数计算或计算机代数,是计算机科学的一个分支,它涉及使用数学符号而不是数字来执行计算。这包括表达式简化、方程求解、积分、微分、极限计算等。

2. Julia 的符号计算包

  • SymEngine:SymEngine 是一个基于 C++ 的符号数学库,提供了高性能的符号计算功能。Julia 通过 SymEngine.jl 包与之集成,使得 Julia 用户能够利用这些功能进行符号计算。
  • SymPy:SymPy 是一个 Python 的符号数学库,虽然 Julia 没有直接与之集成的官方包,但可以通过 PyCall 包在 Julia 中调用 Python 和 SymPy,从而间接实现符号计算。

3. 使用 Julia 进行符号计算的基本步骤

安装必要的包

首先,需要安装支持符号计算的 Julia 包。以 SymEngine.jl 为例,可以使用 Julia 的包管理器来安装:

julia julia> using Pkg julia> Pkg.add("SymEngine")

引入包并使用

安装完成后,在 Julia 脚本或交互式环境中引入包,并开始使用其提供的符号计算功能:


# 创建一个符号变量 julia> x = symbols("x")

# 表达式简化 julia> simplify(x^2 + 2*x + 1) x^2 + 2*x + 1

# 因式分解 julia> factor(x^2 - 1) (x - 1)*(x + 1)

# 微分 julia> diff(x^2 + 2*x + 1, x) 2*x + 2

# 积分 julia> integrate(x^2 + 2*x + 1, x) x^3/3 + x^2 + x ```

注意:上述代码中的 `symbols`、`simplify`、`factor`、`diff` 和 `integrate` 等函数是
SymEngine.jl 包提供的,具体可用函数和用法请参考该包的文档。

**4. 注意事项**

* 符号计算通常比数值计算更消耗计算资源,特别是对于复杂的表达式和大型系统。
* Julia 的符号计算能力依赖于其背后的符号数学库,因此选择适合的库对于获得良好的计算性能和准确性至关重要。
* 在进行符号计算时,建议详细阅读所使用包的文档,以了解其功能、限制和最佳实践。

综上所述,Julia 通过与高性能符号数学库的集成,提供了强大的符号计算能力,使得用户能够在 Julia 环境中进行复杂的数学符号运算。

Julia 符号计算-SymbolicUtils

SymbolicUtils.jl 是 Julia 语言中的一个符号计算库,由 JuliaSymbolics 团队维护。它提供了高效、灵活的符号表达式处理功能,适用于数学建模、自动微分和算法开发等多个领域。

  • 概述

下面内容由文心一言自动生成
一、基本概述

  • 名称SymbolicUtils.jl
  • 类型:Julia 语言的符号计算库
  • 维护团队:JuliaSymbolics
  • 主要特点:高效、灵活、易于扩展

二、核心特性

  1. 元编程与延迟评估

    • 利用 Julia 的元编程能力,动态生成代码处理符号表达式。
    • 采用延迟评估策略,节省内存并提高计算效率。
  2. 丰富的 API

    • 提供了一系列方法用于创建、操作和简化符号表达式,如 parse 函数解析字符串为符号表达式,expand 进行展开操作,simplify 进行化简等。
  3. 高性能

    • 利用 Julia 的特性实现高效的符号计算,接近原生速度。
  4. 简洁的语法

    • 与 Julia 语言本身的语法融合紧密,降低了学习曲线。
  5. 可扩展性

    • 允许用户自定义规则以处理特定的表达式结构。
  6. 活跃的社区支持

    • 有活跃的社区支持,不断更新和优化,提供良好的文档和示例。

三、应用场景

  1. 数学建模

    • 在物理、经济等领域构建复杂的数学模型时,SymbolicUtils.jl 可以帮助处理符号方程。
  2. 自动微分

    • 结合自动微分库(如 Zygote),可用于机器学习和优化问题中的梯度计算。
  3. 算法开发

    • 在开发算法时,SymbolicUtils.jl 可以作为中间表示,方便进行变换和验证。
  4. 教育应用

    • 在教学环境中,用于演示和解决代数问题。

四、与其他 Julia 包的集成

SymbolicUtils.jl 与 Julia 中的其他包具有良好的集成性,例如可以配合 Zygote 进行梯度计算,或者与
DynamicPolynomials 一起处理多项式问题。这种集成性使得 SymbolicUtils.jl
在复杂计算和科学研究中更具优势。

五、安装与使用

要使用 SymbolicUtils.jl,您需要先确保已经安装了 Julia。然后,可以通过 Julia 的包管理器 Pkg 来安装
SymbolicUtils.jl

julia using Pkg Pkg.add("SymbolicUtils")

安装完成后,您可以在 Julia 的 REPL 环境中加载并使用 SymbolicUtils.jl 提供的各种功能和方法。

六、总结

SymbolicUtils.jl 是 Julia
语言中一个强大的符号计算库,它通过提供高效、灵活且易于扩展的接口,满足了各种复杂的符号运算需求。无论是在数学建模、自动微分还是算法开发等领域,SymbolicUtils.jl
都展现出了其独特的优势和价值。随着 Julia 语言的不断发展和完善,SymbolicUtils.jl
也将不断更新和优化,为科研和工程计算提供更加高效和便捷的工具。

  • Julia的SymbolicUtils库详细说明

SymbolicUtils.jl 是 Julia 语言中的一个符号计算库,由 JuliaSymbolics 团队维护。它提供了高效、灵活的符号表达式处理功能,特别适用于数学建模、自动微分和算法开发等领域。以下是对 SymbolicUtils.jl 的详细说明及常用函数和例子。

下面内容由文心一言自动生成
一、库概述

  • 类型:Julia 语言的符号计算库。
  • 特点
    • 利用 Julia 的元编程能力,动态生成代码处理符号表达式。
    • 延迟评估策略,节省内存并提高计算效率。
    • 丰富的 API,包括创建、操作和简化符号表达式的方法。
    • 高性能,接近原生速度的计算能力。
    • 简洁的语法,与 Julia 语言本身融合紧密。
    • 可扩展性,允许用户自定义规则处理特定表达式结构。
    • 活跃的社区支持,不断更新和优化,提供良好的文档和示例。

二、常用函数说明

由于 SymbolicUtils.jl
的具体函数可能会随着版本的更新而有所变化,以下列出一些常用的函数类别和一般用途,具体函数名和用法请参考最新的官方文档或源码。

  1. 符号表达式创建

    • parse:将字符串解析为符号表达式。
    • @variablesvariables:定义符号变量。
  2. 表达式操作

    • expand:展开表达式。
    • simplify:化简表达式。
    • substitute:替换表达式中的符号。
  3. 数学运算

    • 支持基本的数学运算(如加、减、乘、除)以及更复杂的数学函数(如指数、对数、三角函数等),这些运算可以直接应用于符号表达式。
  4. 元数据操作(如果库支持):

    • setmetadata:为符号设置元数据。
    • getmetadata:获取符号的元数据。
    • hasmetadata:检查符号是否具有特定类型的元数据。

三、例子

以下是一个使用 SymbolicUtils.jl 的简单例子,展示了如何创建符号变量、进行表达式运算和化简。

# 假设已经安装了 SymbolicUtils.jl 和 ModelingToolkit.jl(用于定义变量) using ModelingToolkit

# 定义符号变量 @variables x y

# 创建符号表达式 expr = x^2 + 2*x*y + y^2

# 展开表达式(在这个例子中,展开和原表达式相同) expanded_expr = expand(expr)

# 化简表达式(对于这个例子,化简结果可能是原表达式或等价的更简洁形式) simplified_expr = simplify(expr)

# 输出结果 println("Original expression: ", expr) println("Expanded expression: ", expanded_expr) println("Simplified expression: ",
simplified_expr) ```

请注意,由于 `SymbolicUtils.jl` 的具体实现和 API
可能会随版本变化,上述代码仅为示例,实际使用时请参考最新的官方文档或源码。

此外,由于 `SymbolicUtils.jl` 主要关注于符号表达式的底层处理和转换,因此在实际应用中,您可能还需要结合其他符号计算库(如
`Symbolics.jl`)来执行更高级的符号计算任务。`Symbolics.jl` 建立在 `SymbolicUtils.jl`
之上,提供了更丰富的符号计算功能和用户友好的接口。

参考文献

1.文心一言
2.julia官网

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2166642.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PMP和CSPM哪个含金量高?

CSPM 和 PMP 都是非常有价值的证书,都是适用于项目经理岗位的证书,究竟哪个含金量够高,必须结合你的实际情况来进行判断。先说结论:如果你的目标就业单位是外企,或者有海外业务的企业,就考 PMP 证书,反之就…

近万字深入讲解iOS常见锁及线程安全

什么是锁? 在程序中,当多个任务(或线程)同时访问同一个资源时,比如多个操作同时修改一份数据,可能会导致数据不一致。这时候,我们需要“锁”来确保同一时间只有一个任务能够操作这个数据&#…

2024年CSP-J认证 CCF信息学奥赛C++ 中小学初级组 第一轮真题-完善程序题解析

2024CCF认证第一轮&#xff08;CSP-J&#xff09;真题 三、完善程序题 第一题 判断平方数 问题&#xff1a;给定一个正整数 n&#xff0c;判断这个数 是不是完全平方数&#xff0c;即存在一个正整数 x 使得 x 的平方等于 n 试补全程序 #include<iostream> #include<…

LabVIEW提高开发效率技巧----错误处理机制

在LabVIEW开发中&#xff0c;错误处理机制至关重要&#xff0c;它不仅有助于提升程序的稳定性&#xff0c;还可以简化调试过程。错误线&#xff08;Error Wire&#xff09;是这一机制的核心工具&#xff0c;能够在各个子VI和模块之间传递错误信息。 1. 统一错误处理 在程序的各…

文心智能体AI大师工坊体验记

文心智能体AI大师工坊体验记 首先来说说什么是智能体&#xff0c;智能体&#xff08;Agent&#xff09;就是指能够感知环境并采取行动以实现特定目标的代理体。它可以是软件、硬件或一个系统&#xff0c;具备自主性、适应性和交互能力。智能体通过感知环境中的变化&#xff08;…

Linux之实战命令13:fuser应用实例(四十七)

简介&#xff1a; CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布&#xff1a;《Android系统多媒体进阶实战》&#x1f680; 优质专栏&#xff1a; Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a; 多媒体系统工程师系列【…

微信小程序导出word和Excel文件

在微信小程序中&#xff0c;实现Excel或Word文件的生成与下载功能通常涉及后端与前端的紧密协作。后端服务负责根据业务需求处理数据&#xff0c;将其转换为Excel或Word格式&#xff0c;并以文件流的形式返回。前端微信小程序则通过发送请求到后端获取这个文件流&#xff0c;接…

17121 求二叉树各种节点数

### 思路 1. 使用先序遍历的方式构造二叉树。 2. 使用递归函数 CreateBiTree 来构造二叉树。 3. 使用递归函数 CountNodes 来统计度为2、度为1和度为0的节点数。 ### 伪代码 1. 定义二叉树节点结构 BiTNode 和二叉树指针 BiTree。 2. 定义 CreateBiTree 函数&#xff1a; -…

java并发之并发关键字

并发关键字 关键字一&#xff1a;volatile 可以这样说&#xff0c;volatile 关键字是 Java 虚拟机提供的轻量级的同步机制。 功能 volatile 有 2 个主要功能&#xff1a; 可见性。一个线程对共享变量的修改&#xff0c;其他线程能够立即得知这个修改。普通变量不能做到这一点&a…

【病毒分析】phobos家族Elbie变种加密器分析报告

1.样本信息 ⽂件名Fast【phobos家族Elbie变种加密器】.exeSHA256e18d3d15a27ffa48cef12de79ac566bfbd96f6f4a1477e5986bc4a100227d8a3MD5f1ecac228e48c7b9758dacfca9356b1fSHA1d9f32b053310a9400fef4d68ae8a8ce70594eaad 2.感染迹象 文件被加密并重命名如下格式1.png.id[8E1…

深入理解 JSX:构建 React 用户界面的利器

目录 一、JSX介绍 1.JSX概念 2.为什么使用JSX,JSX有什么好处? 二、JSX基本语法 1.基本元素: 2.嵌套元素: 3.组件: 4.属性: 5.表达式 6.条件渲染: 7.样式: 三、JSX语法规则 四、JSX编译过程 五、JSX小案例 1.待办事项列表 2.计时器应用 六、总结 一、JSX介…

LLMs之RAG:MemoRAG(利用其记忆模型来实现对整个数据库的全局理解)的简介、安装和使用方法、案例应用之详细攻略

LLMs之RAG&#xff1a;MemoRAG(利用其记忆模型来实现对整个数据库的全局理解)的简介、安装和使用方法、案例应用之详细攻略 目录 MemoRAG的简介 0、更新日志 1、特性 2、路线图 MemoRAG的安装和使用方法 1、安装 安装依赖项 T1、从源码安装 T2、通过pip安装 2、使用方…

可调节基准电压电路设计

1 简介 该电路组合使用了一个放大器&#xff0c;可使基准电压电路在输入电压负值至正的输入电压之间的范围内进行调节&#xff0c;且可增加增益以提高最大负基准电压电平。 2 设计目标 2.1 输入 2.2 输出 ​​​ 2.3 电源 3 电路设计 根据设计目标&#xff0c;最终设计的电…

综合实验1 利用OpenCV统计物体数量

一、实验简介 传统的计数方法常依赖于人眼目视计数&#xff0c;不仅计数效率低&#xff0c;且容易计数错误。通常现实中的对象不会完美地分开&#xff0c;需要通过进一步的图像处理将对象分开并计数。本实验巩固对OpenCV的基础操作的使用&#xff0c;适当的增加OpenCV在图像处…

抽奖拼团卷轴模式系统开发小程序源代码解析

在当今的互联网商业环境中&#xff0c;抽奖、拼团与卷轴模式等创新玩法被广泛应用于小程序开发中&#xff0c;旨在通过多样化的互动方式吸引用户参与&#xff0c;提升用户粘性和平台活跃度。本文将围绕“抽奖拼团卷轴模式系统开发小程序源代码”这一主题&#xff0c;探讨其技术…

【HTTP协议详解-Fiddler抓包工具安装详解-HTTP报文格式-URL详解】

&#x1f308;个人主页&#xff1a;努力学编程’ ⛅个人推荐&#xff1a; c语言从初阶到进阶 JavaEE详解 数据结构 ⚡学好数据结构&#xff0c;刷题刻不容缓&#xff1a;点击一起刷题 &#x1f319;心灵鸡汤&#xff1a;总有人要赢&#xff0c;为什么不能是我呢 &#x1f52d…

安卓13删除下拉栏中的关机按钮版本2 android13删除下拉栏关机按钮

总纲 android13 rom 开发总纲说明 文章目录 1.前言2.问题分析3.代码分析4.代码修改5.编译6.彩蛋1.前言 顶部导航栏下拉可以看到,底部这里有个设置按钮,点击可以进入设备的设置页面,这里我们将更改为删除,不同用户通过这个地方进入设置。我们之前写过一个文章也是一样的删除…

基于RealSense D435相机实现手部姿态重定向

基于Intel RealSense D435 相机和 MediaPipe的手部姿态检测&#xff0c;进一步简单实现手部姿态与机器人末端的重定向。 假设已经按照【基于 RealSenseD435i相机实现手部姿态检测】配置好所需的库和环境&#xff0c;并且有一个可以控制的机器人接口。 一、手部姿态重定向介绍 …

18924 二叉树的宽度

### 思路 1. 使用广度优先搜索&#xff08;BFS&#xff09;遍历二叉树&#xff0c;记录每一层的节点数。 2. 使用队列来实现BFS&#xff0c;队列中存储节点和其对应的层数。 3. 在遍历过程中&#xff0c;更新每一层的节点数&#xff0c;并记录最大节点数。 ### 伪代码 1. 定义…

uni-app - - - - -vue3使用i18n配置国际化语言

uni-app - - - - -使用i18n配置国际化语言 1. 安装vue-i18n2. 配置文件2.1 创建如下文件2.2 文件配置2.3 main文件导入i18n 3. 页面内使用3.1 template内直接使用3.2 变量接收使用 1. 安装vue-i18n npm install vue-i18n --save2. 配置文件 2.1 创建如下文件 locales文件夹里…