当前位置: 首页 > article >正文

线性代数之矩阵特征值与特征向量的数值求解方法

文章目录

  • 前言
  • 1. 幂迭代法(Power Iteration)
    • 幂法与反幂法求解矩阵特征值
    • 幂法求最大特征值
    • 编程实现
    • 补充说明
  • 2. 逆幂迭代法(Inverse Iteration)
    • 移位反幂法
  • 3. QR 算法(QR Algorithm)——稠密矩阵
    • 理论推导
    • 编程实现
  • 4. 雅可比方法(Jacobi Method)——对称矩阵
    • 编程实现
  • 5. Lanczos 算法(稀疏矩阵)
  • 6. 分治法
  • 7. 方法选择指南
  • 8. 关键公式与说明
  • 参考文献

前言

定n×n维矩阵A,满足下式的数λ称作矩阵A的一个特征值:
A u = λ u Au = \lambda u Au=λu
推广形式

特征值问题可推广到更一般的形式。假设 u = f ( x ) u = f(x) u=f(x) 是一个连续函数, A = d d x A = \frac{d}{dx} A=dxd 表示微分运算,则二阶微分方程:
d 2 u d x 2 = k 2 u \frac{d^2u}{dx^2} = k^2u dx2d2u=k2u
可表示为:
A 2 u = k 2 u A^2u = k^2u A2u=k2u
这是特征值问题在微分算子中的表现形式。


特征方程与求解方法

根据定义 ( A − λ I ) u = 0 (A - \lambda I)\mathbf{u} = 0 (AλI)u=0
A − λ I A - \lambda I AλI 非奇异,则方程只有零解。因此,特征值需满足:
det ⁡ ( A − λ I ) = 0 \det(A - \lambda I) = 0 det(AλI)=0
此方程称为特征方程,其根即为矩阵 A A A 的特征值。


示例

给定矩阵:
A = [ 1 2 3 2 ] A = \begin{bmatrix} 1 & 2 \\ 3 & 2 \end{bmatrix} A=[1322]
其特征方程为:
det ⁡ [ 1 − λ 2 3 2 − λ ] = ( 1 − λ ) ( 2 − λ ) − 6 = 0 \det\begin{bmatrix} 1 - \lambda & 2 \\ 3 & 2 - \lambda \end{bmatrix} = (1 - \lambda)(2 - \lambda) - 6 = 0 det[1λ322λ]=(1λ)(2λ)6=0
展开并化简:
λ 2 − 3 λ − 4 = 0 ⟹ λ 1 = 4 , λ 2 = − 1 \lambda^2 - 3\lambda - 4 = 0 \implies \lambda_1 = 4,\ \lambda_2 = -1 λ23λ4=0λ1=4, λ2=1

然而,对于高阶矩阵,特征值的解析解通常难以直接计算,需借助数值方法(如QR算法、幂迭代法等)进行求解。


1. 幂迭代法(Power Iteration)

目标:求解矩阵的模最大特征值及其对应特征向量。

幂法与反幂法求解矩阵特征值

本节介绍如何使用幂法和反幂法分别求解矩阵的模最大和模最小特征值。给定矩阵 A A A,假设其有 n n n 个实特征值:
∣ λ 1 ∣ > ∣ λ 2 ∣ > ⋯ > ∣ λ n ∣ |λ_1| > |λ_2| > \cdots > |λ_n| λ1>λ2>>λn
对应的特征向量为 u 1 , u 2 , … , u n u_1, u_2, \ldots, u_n u1,u2,,un


幂法求最大特征值

步骤说明:

  1. 初始向量选取:
    随机选取初始向量 x 1 x_1 x1,可表示为特征向量的线性组合:
    x 1 = c 1 u 1 + c 2 u 2 + ⋯ + c n u n x_1 = c_1u_1 + c_2u_2 + \cdots + c_nu_n x1=c1u1+c2u2++cnun

  2. 迭代计算:

    • 第一次迭代:
      A x 1 = c 1 A u 1 + c 2 A u 2 + ⋯ + c n A u n = λ 1 c 1 x 2 Ax_1 = c_1Au_1 + c_2Au_2 + \cdots + c_nAu_n = λ_1c_1x_2 Ax1=c1Au1+c2Au2++cnAun=λ1c1x2
      规范化后得到:
      x 2 = u 1 + c 2 c 1 λ 2 λ 1 u 2 + ⋯ + c n c 1 λ n λ 1 u n x_2 = u_1 + \frac{c_2}{c_1} \frac{λ_2}{λ_1}u_2 + \cdots + \frac{c_n}{c_1} \frac{λ_n}{λ_1}u_n x2=u1+c1c2λ1λ2u2++c1cnλ1λnun

    • 第二次迭代:
      A x 2 = λ 1 u 1 + c 2 c 1 λ 2 2 λ 1 u 2 + ⋯ + c n c 1 λ n 2 λ 1 u n = λ 1 x 3 Ax_2 = λ_1u_1 + \frac{c_2}{c_1} \frac{λ_2^2}{λ_1}u_2 + \cdots + \frac{c_n}{c_1} \frac{λ_n^2}{λ_1}u_n = λ_1x_3 Ax2=λ1u1+c1c2λ1λ22u2++c1cnλ1λn2un=λ1x3
      规范化后得到:
      x 3 = u 1 + c 2 c 1 λ 2 2 λ 1 2 u 2 + ⋯ + c n c 1 λ n 2 λ 1 2 u n x_3 = u_1 + \frac{c_2}{c_1} \frac{λ_2^2}{λ_1^2}u_2 + \cdots + \frac{c_n}{c_1} \frac{λ_n^2}{λ_1^2}u_n x3=u1+c1c2λ12λ22u2++c1cnλ12λn2un

  3. 通用迭代公式:
    k k k 次迭代的通式为:
    x k + 1 = u 1 + c 2 c 1 λ 2 k λ 1 k u 2 + ⋯ + c n c 1 λ n k λ 1 k u n x_{k+1} = u_1 + \frac{c_2}{c_1} \frac{λ_2^k}{λ_1^k}u_2 + \cdots + \frac{c_n}{c_1} \frac{λ_n^k}{λ_1^k}u_n xk+1=u1+c1c2λ1kλ2ku2++c1cnλ1kλnkun

  4. 收敛性分析:
    由于 ∣ λ 1 ∣ > ∣ λ i ∣ ( i ≥ 2 ) |λ_1| > |λ_i| \, (i \geq 2) λ1>λi(i2),当 k k k 充分大时,高阶小项趋于零,可得:
    A x k + 1 ≈ λ 1 u 1 , x k + 1 ≈ u 1 Ax_{k+1} \approx λ_1u_1, \quad x_{k+1} \approx u_1 Axk+1λ1u1,xk+1u1


具体实现步骤

  1. 随机初始化非零向量 v 0 \boldsymbol{v}_0 v0
  2. 迭代计算:
    v k + 1 = A v k ∥ A v k ∥ \boldsymbol{v}_{k+1} = \frac{A\boldsymbol{v}_k}{\|A\boldsymbol{v}_k\|} vk+1=AvkAvk
  3. 估计特征值:
    λ ≈ v k ⊤ A v k \lambda \approx \boldsymbol{v}_k^\top A \boldsymbol{v}_k λvkAvk

编程实现

具体实现时,并没有λ1和u1的值,因此,迭代计算 x k + 1 = A x k x_{k+1}=Ax_k xk+1=Axk后,规范化 x k + 1 x_{k+1} xk+1即可。注意:最大特征值是指模最大的那个特征值

% 幂法求最大特征值
clc;
clear;
close all;
% 第一种写法
A=[4 2 -2; -2 8 1 ; 2 4 -4];
x = ones(size(A));
for i=1:40x=A*x;[mx,id] = max(abs(x));x=x/x(id);
end
e = A*x./x;
[mx,id] = max(abs(e));
e = e(id)eig(A)% 第二种写法
v0 = [1;1;1];
u0 = [1;1;1];
% A = [2,-1,0;-1,2,-1;0,-1,2];
v = A * u0;
u = v / norm(v, inf);
i = 0;
while norm(u - u0, inf) >= 1e-6u0 = u;v = A * u0;u = v / norm(v, inf);i = i+1;
end
norm(v, inf)
i
u

补充说明

  • 最大特征值: 幂法求得的是模最大的特征值 λ 1 λ_1 λ1

2. 逆幂迭代法(Inverse Iteration)

目标:求解靠近 μ \mu μ最小模特征值

给定矩阵 ( A ),假设其有 ( n ) 个实特征值:

∣ λ 1 ∣ > ∣ λ 2 ∣ > ⋯ > ∣ λ n ∣ |\lambda_1| > |\lambda_2| > \cdots > |\lambda_n| λ1>λ2>>λn

其对应的特征向量为( u 1 , u 2 u_1, u_2 u1,u2, … , u n \ldots, u_n ,un)。( λ n \lambda_n λn ) 是最小特征值。首先注意到如果 ( A u = λ u Au= \lambda u Au=λu ),则:

A − 1 A u = A − 1 λ u ⟹ u = A − 1 λ u A^{-1}Au = A^{-1}\lambda u \implies u = A^{-1}\lambda u A1Au=A1λuu=A1λu

因此有:

A − 1 u = 1 λ u A^{-1}u = \frac{1}{\lambda}u A1u=λ1u

可以看到,当 λ n \lambda_n λn为矩阵 A 的最小特征值时,( 1 λ n \frac{1}{\lambda_n} λn1 ) 将是 A − 1 A^{-1} A1的最大特征值。此时运用幂法求解 A − 1 A^{-1} A1 的最大特征值,取倒数,即为 A 的最小特征值。反幂算法中需要注意的是,当最小特征值为 0 时,其倒数是没有定义的,此时反幂法求解的是第二小的特征值,且需要采用移位反幂法。

function e = MinEig(A)invA = inv(A);x = ones(size(A));for i=1:40x=invA*x; [mx,id] = max(abs(x));x=x/x(id);ende = invA*x./x; [mx,id] = max(abs(e));e = 1/e(id);
end

移位反幂法

步骤

  1. ( A − μ I ) (A - \mu I) (AμI) 进行 LU 分解。
  2. 随机初始化向量 v 0 \boldsymbol{v}_0 v0
  3. 迭代求解:
    ( A − μ I ) v k + 1 = v k ⇒ v k + 1 = v k + 1 ∥ v k + 1 ∥ (A - \mu I)\boldsymbol{v}_{k+1} = \boldsymbol{v}_k \quad \Rightarrow \quad \boldsymbol{v}_{k+1} = \frac{\boldsymbol{v}_{k+1}}{\|\boldsymbol{v}_{k+1}\|} (AμI)vk+1=vkvk+1=vk+1vk+1
A = [3,0,-10;-1,3,4;0,1,-2];
I = eye(3,3);
p = 4.3;
u0 = [1;1;1];
v = inv(A - p * I) * u0;
u = v / norm(v, inf);
i = 0;
while norm(u - u0, inf) > 1e-5u0 = u;v = inv(A - p * I) * u0;u = v / norm(v, inf);i ++;
end;
i
u
x = p + 1 / norm(v, inf)

综述所述,可以总结反幂法求解特征向量的特点如下:

位移技术: 对每个已求得的特征值 λ i \lambda_i λi,构造矩阵 A 0 − λ i I A_0-\lambda_iI A0λiI,使其接近奇异;

加速收敛: 反幂法迭代公式为 x k + 1 = ( A − σ I ) − 1 x k x_{k+1}=(A-\sigma I)^{-1}x_k xk+1=(AσI)1xk,其中 σ \sigma σ接近特征值。此时 ( A − σ I ) − 1 (A-\sigma I)^{-1} (AσI)1的模最大特征值对应的特征向量即为A的 σ \sigma σ附近特征值的特征向量。

高精度优势: λ i \lambda_i λi精度较高时,反幂法可以在少量迭代内快速收敛到对应特征向量。


3. QR 算法(QR Algorithm)——稠密矩阵

目标:求解所有特征值(稠密矩阵)。
步骤

  1. A A A 转化为上 Hessenberg 矩阵。
  2. 迭代 QR 分解:
    A k = Q k R k , A k + 1 = R k Q k A_k = Q_k R_k, \quad A_{k+1} = R_k Q_k Ak=QkRk,Ak+1=RkQk
  3. A k A_k Ak 收敛为上三角矩阵时,对角线元素即为特征值。

理论推导

幂法与反幂法用于求解矩阵的最大特征值与最小特征值。若想求解矩阵的所有特征值,可以使用QR分解法。假设矩阵 A 是 n × n n \times n n×n 的方阵,且其 n 个特征值均为互不相同的实数。QR分解法的理论保证如下:

若对矩阵 A 进行相似变换 B = C − 1 A C B = C^{-1}AC B=C1AC ,则变换后的矩阵 B 的特征值与 A 一致。这是因为:
A u = λ u Au = \lambda u Au=λu ,令 v = C − 1 u v = C^{-1}u v=C1u,则有
A C v = A u = λ C v ACv = Au = \lambda Cv ACv=Au=λCv
进一步可得
C − 1 A C v = λ v C^{-1}ACv = \lambda v C1ACv=λv
因此, λ \lambda λ 也是 C − 1 A C C^{-1}AC C1AC 的特征值。

据此,可以通过以下步骤实现特征值和特征向量的求解:

  1. 初始化

    • 令 ( A_1 = A ),并对 ( A_1 ) 进行QR分解:
      A 1 = Q 1 R 1 A_1 = Q_1R_1 A1=Q1R1
      其中,( Q_1 ) 是正交矩阵(满足 ( Q_1Q_1^T = I )),( R_1 ) 是上三角矩阵。
  2. 迭代生成新矩阵

    • 计算 ( A_2 = R_1Q_1 ),即:
      A 2 = Q 1 − 1 A 1 Q 1 A_2 = Q_1^{-1}A_1Q_1 A2=Q11A1Q1
      此时 ( A_2 ) 的特征值与 ( A ) 一致。继续对 ( A_2 ) 进行QR分解:
      A 2 = Q 2 R 2 A_2 = Q_2R_2 A2=Q2R2
  3. 重复迭代

    • 计算 ( A_3 = R_2Q_2 ),即:
      A 3 = Q 2 − 1 A 2 Q 2 = Q 2 − 1 Q 1 − 1 A 1 Q 1 Q 2 A_3 = Q_2^{-1}A_2Q_2 = Q_2^{-1}Q_1^{-1}A_1Q_1Q_2 A3=Q21A2Q2=Q21Q11A1Q1Q2
  4. 终止条件

    • 重复上述步骤,直至 ( A_n ) 收敛为一个上三角矩阵。此时,矩阵对角线上的元素即为 ( A ) 的所有特征值。

:QR分解通过不断迭代将原矩阵相似变换为上三角矩阵,从而直接读取对角线元素作为特征值。此方法适用于实对称矩阵或具有实特征值的方阵。

编程实现

A=[ 6 -7 2 ; 4 -5 2; 1 -1 1]
A0=A;
for i=1:40[Q R]=qr(A);A=R*Q;
end
A
ev=diag(A)
eig(A0)

特点

  • 复杂度 O ( n 3 ) O(n^3) O(n3),LAPACK 的核心算法。
  • 结合位移(如 Wilkinson 位移)优化收敛。

‌特征值修正‌
QR方法得到的特征值可能存在微小误差,反幂法可进一步修正

A=[ 6 -7 2 ; 4 -5 2; 1 -1 1]
A0=A;
for i=1:40[Q R]=qr(A);A=R*Q;
end
A
ev=diag(A)
Q
eig(A0)% 使用反幂法求特征向量,并对特征值进行修正
a = ev;
n = size(a,1);
x = zeros(n);
for i = 1:nx0 = ones(n,1);[b,x0] = MinEig(A0-a(i,1)*eye(n));x(:,i) = x0;a(i,:) = a(i,:) + b;
enda
x

4. 雅可比方法(Jacobi Method)——对称矩阵

目标:求解对称矩阵的所有特征值和特征向量。

Jacobi方法的基本思想是通过一次正交变换,将A中的一对非零的非对角元素化成零并且使得非对角元素的平方和减小。反复进行上述过程,使变换后的矩阵的非对角元素的平方和趋于零,从而使该矩阵近似为对角矩阵,得到全部特征值和特征向量。

步骤

  1. 通过 Givens 旋转矩阵 G k G_k Gk 逐步对角化:
    A k + 1 = G k ⊤ A k G k A_{k+1} = G_k^\top A_k G_k Ak+1=GkAkGk
  2. 重复直到非对角元素接近零。

特点

  • 稳定但收敛慢,特征向量通过旋转矩阵累积。

编程实现

function [D,V,iter]=Jacobi_classical(A,maxIter,tol)
n = size(A, 1); % 矩阵的大小
V = eye(n); % 初始化特征向量矩阵为单位矩阵
iter = 0; % 初始化迭代次数
% 设置最大迭代次数和误差精度
if nargin < 3 || isempty(tol)tol = 1e-9; % 默认误差精度
end
if nargin < 2 || isempty(maxIter)maxIter = 1000; % 默认最大迭代次数
end
while(iter < maxIter)iter=iter+1;D=A;n=size(D,1);p=1;q=2;for i=1:nfor j=i+1:nif(abs(D(i,j))>abs(D(p,q)))%找到对称矩阵的上三角矩阵中最大的元素的下标p=i;q=j;endendendif(abs(D(p,q))<tol)break;endif(A(p,q)~=0)d=(A(q,q)-A(p,p))/(2*A(p,q));if(d>0)t=1/(d+sqrt(d^2+1));elset=-1/(-d+sqrt(d^2+1));endc=1/sqrt(t^2+1);s=c*t;elsec=1;s=0;endR=[c s;-s c];A([p,q],:)=R'*A([p,q],:);A(:,[p,q])=A(:,[p,q])*R;V(:, [p, q]) = V(:,[p,q])*R;
end
D = diag(diag(D));  % 提取特征值
end

结果测试:

clc;
clear;
close all;A=[ 6 -7 2 ; 4 -5 2; 1 -1 1]
[D, V, iter] = Jacobi_classical(A, 2000)
eig(A)

在这里插入图片描述


5. Lanczos 算法(稀疏矩阵)

目标:求解稀疏矩阵的部分极端特征值
步骤

  1. 生成 Krylov 子空间的正交基底。
  2. 投影到三对角矩阵 T k T_k Tk
    T k = V k ⊤ A V k T_k = V_k^\top A V_k Tk=VkAVk
  3. T k T_k Tk 应用 QR 算法求特征值。
    特点
  • 仅需矩阵-向量乘法,适合大规模稀疏矩阵。

6. 分治法

目标:高效求解对称三对角矩阵的所有特征值。
步骤

  1. 将矩阵分解为子矩阵。
  2. 递归求解子矩阵特征值。
  3. 合并子问题解并修正。

特点

  • 复杂度 O ( n 2 ) O(n^2) O(n2),适合大规模三对角矩阵。

7. 方法选择指南

场景推荐方法
中小规模稠密矩阵QR 算法
对称矩阵Jacobi 或 QR 算法
稀疏矩阵的极端特征值Lanczos/Arnoldi 迭代
最小/靠近 μ \mu μ 的特征值逆幂迭代法 + 位移
工程问题中的部分特征值子空间迭代法

8. 关键公式与说明

特征方程
矩阵 A A A 的特征值满足:
det ⁡ ( A − λ I ) = 0 \det(A - \lambda I) = 0 det(AλI)=0

  • 2x2 矩阵
    λ 2 − tr ( A ) λ + det ⁡ ( A ) = 0 \lambda^2 - \text{tr}(A)\lambda + \det(A) = 0 λ2tr(A)λ+det(A)=0
  • n 阶矩阵
    P ( λ ) = ( − 1 ) n λ n + ⋯ + det ⁡ ( A ) P(\lambda) = (-1)^n \lambda^n + \dots + \det(A) P(λ)=(1)nλn++det(A)

提示

  • 高阶矩阵避免解析法,优先使用数值库(如 LAPACK、ARPACK)。
  • 对称矩阵的特征向量可正交化,提升计算稳定性。

参考文献

[1] *数值计算day5-特征值与特征向量
[2] 数值计算方法 Chapter7. 计算矩阵的特征值和特征向量
[3] 数值线性代数:Arnoldi求解特征值/特征向量
[4] 使用Matlab实现:幂法、反幂法(原点位移)
[5] MATLAB求解矩阵特征值的六种方法

相关文章:

线性代数之矩阵特征值与特征向量的数值求解方法

文章目录 前言1. 幂迭代法&#xff08;Power Iteration&#xff09;幂法与反幂法求解矩阵特征值幂法求最大特征值编程实现补充说明 2. 逆幂迭代法&#xff08;Inverse Iteration&#xff09;移位反幂法 3. QR 算法&#xff08;QR Algorithm&#xff09;——稠密矩阵理论推导编程…...

SparkAi系统体验

DeepSeek-R1-671B大模型满血版私有化部署高可用教程-SparkAi系统集成图文教程 一、SparkAI是什么二、功能模块介绍系统快速体验 三、系统功能模块3.1 AI全模型支持/插件系统3.2 AI智能体应用3.3 AI专业绘画3.4 AI视频生成3.5 Dall-E2/E3/E4绘画3.6 智能思维导图生成3.7 AI绘画广…...

软件工程---构件

在软件工程中&#xff0c;构件是一个独立的、可复用的软件单元&#xff0c;它具有明确的功能、接口和行为&#xff0c;并且可以在不同的环境中加以集成和复用。构件的概念是软件架构和组件化开发的核心思想之一&#xff0c;其目的是促进软件系统的模块化、可维护性和可扩展性。…...

视频录像机视频通道是指什么

视频录像机的视频通道是指摄像机在监控矩阵或硬盘录像机设备上的视频输入的物理位置。 与摄像头数量关系&#xff1a;在视频监控系统中&#xff0c;有多少个摄像头就需要多少路视频通道&#xff0c;通道数量决定了视频录像机可接入摄像头的数量&#xff0c;一般硬盘录像机有4路…...

【Unity】 HTFramework框架(六十一)Project窗口文件夹锁定器

更新日期&#xff1a;2025年3月7日。 Github源码&#xff1a;[点我获取源码] Gitee源码&#xff1a;[点我获取源码] 索引 Project窗口文件夹锁定器框架文件夹锁定自定义文件夹锁定限制条件 Project窗口文件夹锁定器 在Project窗口中&#xff0c;文件夹锁定器能够为任何文件夹加…...

INFINI Labs 产品更新 | Easysearch 增加异步搜索等新特性

INFINI Labs 产品更新发布&#xff01;此次更新&#xff0c;Easysearch 增加了新的功能和数据类型&#xff0c;包括 wildcard 数据类型、Point in time 搜索 API、异步搜索 API、数值和日期字段的 doc-values 搜索支持&#xff0c;Console 新增了日志查询功能。 INFINI Easyse…...

3.6c语言

#define _CRT_SECURE_NO_WARNINGS #include <math.h> #include <stdio.h> int main() {int sum 0,i,j;for (j 1; j < 1000; j){sum 0;for (i 1; i < j; i){if (j % i 0){sum i;} }if (sum j){printf("%d是完数\n", j);}}return 0; }#de…...

基于Kubernetes部署MySQL主从集群

以下是一个基于Kubernetes部署MySQL主从集群的详细YAML示例&#xff0c;包含StatefulSet、Service、ConfigMap和Secret等关键配置。MySQL主从集群需要至少1个主节点和多个从节点&#xff0c;这里使用 StatefulSet 初始化脚本 实现主从自动配置。 1. 创建 Namespace (可选) ap…...

Docker基础篇——Ubuntu下Docker安装

大家好我是木木&#xff0c;在当今快速发展的云计算与云原生时代&#xff0c;容器化技术蓬勃兴起&#xff0c;Docker 作为实现容器化的主流工具之一&#xff0c;为开发者和运维人员带来了极大的便捷 。下面我们一起进行Docker安装。 Docker的官方Ubuntu安装文档&#xff0c;如…...

postman接口请求中的 Raw是什么

前言 在现代的网络开发中&#xff0c;API 的使用已经成为数据交换的核心方式之一。然而&#xff0c;在与 API 打交道时&#xff0c;关于如何发送请求体&#xff08;body&#xff09;内容类型的问题常常困扰着开发者们&#xff0c;尤其是“raw”和“json”这两个术语之间的区别…...

物联网设备接入系统后如何查看硬件实时数据?

要在软件中实时查看硬件设备的信息&#xff0c;通常需要结合前后端技术来实现。以下是设计思路和实现步骤&#xff1a; 1. 系统架构设计 实时查看硬件设备信息的系统通常采用以下架构&#xff1a; 数据采集层: 硬件设备通过传感器采集数据&#xff0c;发送到InfluxDB。数据存…...

最新版本TOMCAT+IntelliJ IDEA+MAVEN项目创建(JAVAWEB)

前期所需&#xff1a; 1.apache-tomcat-10.1.18-windows-x64&#xff08;tomcat 10.1.8版本或者差不多新的版本都可以&#xff09; 2.IntelliJ idea 24年版本 或更高版本 3.已经配置好MAVEN了&#xff08;一定先配置MAVEN再搞TOMCAT会事半功倍很多&#xff09; 如果有没配置…...

《生成对抗网络:当AI学会自我博弈的艺术》

2023年DALLE 2生成的《太空歌剧院》斩获艺术比赛大奖时&#xff0c;我在画作前驻足了整整十分钟——那些光影的渐变、笔触的韵律&#xff0c;竟来自两个神经网络的博弈游戏。这让我想起AlphaGo自我对弈突破人类棋谱局限的往事&#xff0c;生成对抗网络&#xff08;GAN&#xff…...

【Linux学习笔记】Linux基本指令分析和权限的概念

【Linux学习笔记】Linux基本指令分析和权限的概念 &#x1f525;个人主页&#xff1a;大白的编程日记 &#x1f525;专栏&#xff1a;Linux学习笔记 文章目录 【Linux学习笔记】Linux基本指令分析和权限的概念前言一. 指令的分析1.1 alias 指令1.2 grep 指令1.3 zip/unzip 指…...

PHP之常用函数

在你有别的编程语言的基础下&#xff0c;你想学习PHP&#xff0c;可能要了解的一些关于常用函数的信息。 获取时间 //获取时间 后面跟自定义时间格式 echo date("Y-m-d H:i:s");删除变量 unset($a);判断变量是否存在 var_dump(isset($a));判断变量是否为null va…...

Leetcode 刷题记录 05 —— 普通数组

本系列为笔者的 Leetcode 刷题记录&#xff0c;顺序为 Hot 100 题官方顺序&#xff0c;根据标签命名&#xff0c;记录笔者总结的做题思路&#xff0c;附部分代码解释和疑问解答。 目录 01 最大子数组和 方法一&#xff1a;动态规划&#xff08;卡达尼算法&#xff09; 方法…...

【LLM】kimi 1.5模型架构和训练流程

note 推出两个多模态模型&#xff0c;深度思考模型 long-CoT 对标 o1&#xff0c;通用模型 short-CoT 模型对标 gpt-4o。 文章目录 note一、kimi 1.5模型训练流程预训练SFT训练long-CoT SFTRL训练long2short 小结Reference 一、kimi 1.5模型训练流程 推出两个多模态模型&…...

deepseek在pycharm中的配置和简单应用

对于最常用的调试python脚本开发环境pycharm&#xff0c;如何接入deepseek是我们窥探ai代码编写的第一步&#xff0c;熟悉起来总没坏处。 1、官网安装pycharm社区版&#xff08;免费&#xff09;&#xff0c;如果需要安装专业版&#xff0c;需要另外找破解码。 2、安装Ollama…...

第二十四天 学习分布式数据管理,了解如何在多个设备间共享数据

HarmonyOS分布式数据管理实战&#xff1a;轻松实现多设备数据共享 一、为什么需要分布式数据管理&#xff1f; 在万物互联的时代&#xff0c;我们的智能设备数量正在快速增长。根据IDC最新报告&#xff0c;2023年平均每个用户拥有6.2台智能设备。HarmonyOS的分布式能力正是为…...

Android15 Camera框架中的StatusTracker

StatusTracker介绍 StatusTracker是Android15 Camera框架中用来协调Camera3各组件之间状态转换的类。 StatusTracker线程名&#xff1a;std::string("C3Dev-") mId "-Status" Camera3 StatusTracker工作原理 StatusTracker实现批处理&#xff08;状态…...

MyBatis-Plus 注解大全

精心整理了最新的面试资料和简历模板&#xff0c;有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 MyBatis-Plus 注解大全 MyBatis-Plus 是基于 MyBatis 的增强工具&#xff0c;通过注解简化了单表 CRUD 操作和复杂查询的配置。以下是常用注解的分类及详细说…...

【MySQL_03】数据库基本--核心概念

文章目录 一、数据库基础1.1 数据库基础定义1.2 数据库分类与典型产品1.3 数据库模型1.4 数据库层次结构1.5 数据库核心机制1.6 数据表和视图1.61 数据表&#xff08;Table&#xff09;1.62 视图&#xff08;View&#xff09; 1.7 键类型1.8 MySQL数据类型1.9 数据库范式化 二、…...

Ubuntu 下 nginx-1.24.0 源码分析 (1)

main 函数在 src\core\nginx.c int ngx_cdecl main(int argc, char *const *argv) {ngx_buf_t *b;ngx_log_t *log;ngx_uint_t i;ngx_cycle_t *cycle, init_cycle;ngx_conf_dump_t *cd;ngx_core_conf_t *ccf;ngx_debug_init(); 进入 main 函数 最…...

边缘计算盒子:解决交通拥堵的智能方案

在当今的智能交通系统中&#xff0c;边缘计算盒子&#xff08;Edge Computing Box&#xff09;正逐渐成为不可或缺的核心组件。这种设备通过将计算能力下沉到网络边缘&#xff0c;极大地提升了数据处理的速度和效率&#xff0c;特别适用于实时性要求极高的交通监控场景。本文将…...

工程化与框架系列(22)--前端性能优化(中)

前端性能优化&#xff08;运行&#xff09; &#x1f3c3; 引言 运行时性能直接影响用户交互体验和应用流畅度。本文将深入探讨前端运行时性能优化的各种策略和技术&#xff0c;包括渲染优化、内存管理、计算优化等关键主题&#xff0c;帮助开发者构建高性能的Web应用。 运行…...

API调试工具的无解困境:白名单、动态IP与平台设计问题

引言 你是否曾经在开发中遇到过这样的尴尬情形&#xff1a;你打开了平台的API调试工具&#xff0c;准备一番操作&#xff0c;结果却发现根本无法连接到平台&#xff1f;别急&#xff0c;问题出在调试工具本身。今天我们要吐槽的就是那些神奇的开放平台API调试工具&#xff0c;…...

C#模拟鼠标点击,模拟鼠标双击,模拟鼠标恒定速度移动,可以看到轨迹

C#模拟鼠标点击&#xff0c;模拟鼠标双击&#xff0c;模拟鼠标恒定速度移动&#xff0c;可以看到轨迹 using System; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks;namespa…...

php虚拟站点提示No input file specified时的问题及权限处理方法

访问站点&#xff0c;提示如下 No input file specified. 可能是文件权限有问题&#xff0c;也可能是“.user.ini”文件路径没有配置对&#xff0c;最简单的办法就是直接将它删除掉&#xff0c;还有就是将它设置正确 #配置成自己服务器上正确的路径 open_basedir/mnt/qiy/te…...

RISC-V汇编学习(三)—— RV指令集

有了前两节对于RISC-V汇编、寄存器、汇编语法等的认识&#xff0c;本节开始介绍RISC-V指令集和伪指令。 前面说了RISC-V的模块化特点&#xff0c;是以RV32I为作为ISA的核心模块&#xff0c;其他都是要基于此为基础&#xff0c;可以这样认为&#xff1a;RISC-V ISA 基本整数指…...

java 重点知识 — JVM存储模块与类加载器

1 jvm主要模块 方法区 存储了由类加载器从.class文件中解析的类的元数据&#xff08;类型信息、域信息、方法信息&#xff09;及运行时常量池&#xff08;引用符号及字面量&#xff09;。 所有线程共享&#xff1b;内存不要求连续&#xff0c;可扩展&#xff0c;可能发生垃圾回…...