【最优化】牛顿法、高斯-牛顿法

一、牛顿法

1、牛顿法在一维搜索中的应用

在这里插入图片描述
在一维搜索中我们所要解决的问题是如何找函数f(x)的最小值。
牛顿法的核心思想是用二次函数拟合函数f(x)的某一邻域区间,用二次函数的极小值点作为下一次的迭代点。通过多次迭代使得二次函数的极小值逼近函数f(x)的极小值
g ( x ) = f ( x ( k ) ) + f ′ ( x ( k ) ) ( x − x ( k ) ) + 1 2 f ′ ′ ( x ( k ) ) ( x − x ( k ) ) 2 g ( x ) ≈ f ( x ) , 求 f ( x ) 最小值 ≈ 求 g ( x ) 最小值 g ′ ( x ) = f ′ ( x ( k ) ) + f ′ ′ ( x ( k ) ) ( x − x ( k ) ) 令 g ′ ( x ) = 0 , x = x ( k ) − f ′ ( x ( k ) ) f ′ ′ ( x ( k ) ) 只有在 f ′ ′ ( x ) > 0 时成立, f ′ ( x ) = 0 只能保证该点为极值点, f ′ ′ ( x ) > 0 保证该点为极小值点 \begin{aligned} &g(x) = f(x^{(k)})+f'(x^{(k)})(x-x^{(k)})+\frac{1}{2}f''(x^{(k)})(x-x^{(k)})^2 \\ &g(x)\approx f(x),求f(x)最小值 \approx 求g(x)最小值 \\ &g'(x)=f'(x^{(k)})+f''(x^{(k)})(x-x^{(k)})\\ &令g'(x)=0,x = x^{(k)}-\frac{f'(x^{(k)})}{f''(x^{(k)})}\\ &只有在f''(x)>0时成立,f'(x)=0只能保证该点为极值点,f''(x)>0保证该点为极小值点 \end{aligned} g(x)=f(x(k))+f(x(k))(xx(k))+21f′′(x(k))(xx(k))2g(x)f(x),f(x)最小值g(x)最小值g(x)=f(x(k))+f′′(x(k))(xx(k))g(x)=0,x=x(k)f′′(x(k))f(x(k))只有在f′′(x)>0时成立,f(x)=0只能保证该点为极值点,f′′(x)>0保证该点为极小值点

2、牛顿法在多维函数中的应用

多维的情况与一维类似,如果是二维函数,拟合的是一个二次曲面,用二次曲面的最低点作为下一次的迭代点。
g ( X ) = f ( X ( k ) ) + ( X − X ( k ) ) ∇ f ′ ( X ( k ) ) + 1 2 ( X − X ( k ) ) T ∇ 2 f ( X ( k ) ) ( X − X ( k ) ) g ( X ) ≈ f ( X ) , 求 f ( X ) 最小值 ≈ 求 g ( X ) 最小值 令 ∇ g ( X ) = ∇ f ( X ( k ) ) + ∇ f ( X ( k ) ) ( X − X ( k ) ) = 0 如果 ∇ 2 f ( X ) > 0 ( 正定矩阵 ) , X = X ( k ) − [ ∇ f ( x ( k ) ) ] − 1 ∇ f ( x ( k ) ) \begin{aligned} &g(X) = f(X^{(k)})+(X-X^{(k)})\nabla f'(X^{(k)})+\frac{1}{2}(X-X^{(k)})^T \nabla ^2f(X^{(k)})(X-X^{(k)}) \\ &g(X)\approx f(X),求f(X)最小值 \approx 求g(X)最小值 \\ &令\nabla g(X)=\nabla f(X^{(k)})+\nabla f(X^{(k)})(X-X^{(k)}) = 0\\ &如果\nabla^2f(X)>0(正定矩阵),X = X^{(k)}-[\nabla f(x^{(k)})]^{-1}\nabla f(x^{(k)})\\ \end{aligned} g(X)=f(X(k))+(XX(k))f(X(k))+21(XX(k))T2f(X(k))(XX(k))g(X)f(X),f(X)最小值g(X)最小值g(X)=f(X(k))+f(X(k))(XX(k))=0如果2f(X)>0(正定矩阵),X=X(k)[f(x(k))]1f(x(k))

3、Levenberg-Marquardt修正

上述方法只有在 H e s s Hess Hess矩阵正定是成立,如果 H e s s Hess Hess矩阵不是正定的要怎么办?
H s e e Hsee Hsee矩阵是实对称矩阵( ∂ f 2 ( X ) ∂ x j ∂ x i = ∂ f 2 ( X ) ∂ x i ∂ x j \frac{\partial f^2(X)}{\partial x_j \partial x_i} = \frac{\partial f^2(X)}{\partial x_i \partial x_j} xjxif2(X)=xixjf2(X)​​),而实对称矩阵一定可以三角化
∇ 2 f ( X ( k ) ) = U T Λ U = [ λ 1 0 ⋯ 0 0 λ 2 ⋯ 0 ⋮ ⋮ ⋱ ⋮ 0 0 ⋯ λ n ] , U T U = I 如果 ∇ 2 f ( X ( k ) ) 非正定,说明 λ 1 ∼ λ n 中有若干个特征值小于 0 \begin{aligned} \end{aligned}\begin{aligned} &\nabla^2f(X^{(k)})=U^T\Lambda U= \begin{bmatrix} \lambda_1 & 0 & \cdots & 0\\ 0 & \lambda_2 & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0&\cdots&\lambda_n \end{bmatrix} ,U^TU=I \\ &如果\nabla^2f(X^{(k)})非正定,说明\lambda_1 \sim \lambda_n中有若干个特征值小于0 \end{aligned} 2f(X(k))=UTΛU= λ1000λ2000λn ,UTU=I如果2f(X(k))非正定,说明λ1λn中有若干个特征值小于0
用最小的特征值 λ m i n ( λ m i n < 0 ) \lambda {min}(\lambda {min}<0) λmin(λmin<0) H e s s Hess Hess​矩阵进行修正
∇ 2 f ( X ( k ) ) = U T Λ U + ( ε − λ m i n ) I = U T [ λ 1 0 ⋯ 0 0 λ 2 ⋯ 0 ⋮ ⋮ ⋱ ⋮ 0 0 ⋯ λ n ] U + [ ε − λ m i n 0 ⋯ 0 0 ε − λ m i n ⋯ 0 ⋮ ⋮ ⋱ ⋮ 0 0 ⋯ ε − λ m i n ] U T U = U T [ λ 1 + ε − λ m i n 0 ⋯ 0 0 λ 2 + ε − λ m i n ⋯ 0 ⋮ ⋮ ⋱ ⋮ 0 0 ⋯ λ n + ε − λ m i n ] U = U T [ Λ + ( ε − λ m i n ) I ] U \begin{aligned} \end{aligned}\begin{aligned} &\nabla^2f(X^{(k)})=U^T\Lambda U + (\varepsilon - \lambda_{min})I\\ &=U^T \begin{bmatrix} \lambda_1 & 0 & \cdots & 0\\ 0 & \lambda_2 & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0&\cdots&\lambda_n \end{bmatrix}U+ \begin{bmatrix} \varepsilon -\lambda_{min} & 0 & \cdots & 0\\ 0 & \varepsilon -\lambda_{min} & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0&\cdots& \varepsilon - \lambda_{min} \end{bmatrix} U^TU \\ & = U^T \begin{bmatrix} \lambda_1 + \varepsilon -\lambda_{min}& 0 & \cdots & 0\\ 0 & \lambda_2 + \varepsilon -\lambda_{min} & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0&\cdots&\lambda_n+\varepsilon -\lambda_{min} \end{bmatrix}U \\ &=U^T[\Lambda+(\varepsilon-\lambda_{min})I]U \end{aligned} 2f(X(k))=UTΛU+(ελmin)I=UT λ1000λ2000λn U+ ελmin000ελmin000ελmin UTU=UT λ1+ελmin000λ2+ελmin000λn+ελmin U=UT[Λ+(ελmin)I]U
为了不和原始的 H e s s Hess Hess矩阵偏差太大, ε \varepsilon ε越小越好

​ Levenberg-Marquardt修正后,即保证了特征值都是正数,也保留原 H e s s Hess Hess矩阵尽可能多的信息

​ 在工程中,为了减少算法计算的复杂度,不会计算特征值特征向量,而是根据经验值手动设置一个 μ k \mu_k μk,同时还会引入一个步长因子 α \alpha α
X = X ( k ) − α ( k ) [ ∇ 2 f ( X ( k ) ) + μ k I ] − 1 ∇ f ( X ( k ) ) X=X^{(k)}-\alpha^{(k)}[\nabla^2f(X^{(k)})+\mu_kI]^{-1}\nabla f(X^{(k)}) X=X(k)α(k)[2f(X(k))+μkI]1f(X(k))
通过手动调节 μ k \mu_k μk的值,使得 [ ∇ 2 f ( X ( k ) ) + μ k I ] > 0 [\nabla^2f(X^{(k)})+\mu_kI] >0 [2f(X(k))+μkI]>0

​( μ k → 0 \mu_k \rightarrow 0 μk0:趋近原牛顿法;$\mu_k \rightarrow \infty $:趋近步长很小的梯度下降法)

二、高斯-牛顿法

1、应用范围

高斯-牛顿法用于解决什么问题?

有一个函数 y = A s i n ( α t + β ) y=\color{red}A\color{black} sin(\color{red}\alpha\color{black} t+\color{red}\beta\color{black}) y=Asin(αt+β) ,其中 A 、 α 、 β \color{red} A、\alpha、\beta Aαβ未知,已知一些输入输出数据 [ t 1 , y 1 ] , [ t 2 , y 2 ] , ⋯ , [ t n , y n ] [t_1,y_1],[t_2,y_2],\cdots,[t_n,y_n] [t1,y1],[t2,y2],,[tn,yn]

高斯-牛顿法想要解决的问题是如何根据已知数据,估计未知参数

这是一个非线性最小二乘问题, min ⁡ A ^ , α ^ , β ^ ∑ i = 1 n ( A ^ s i n ( α ^ t i + β ^ ) − y i ) 2 \min_{\hat{A},\hat{\alpha},\hat{\beta}} \sum_{i=1}^{n}(\hat{A}sin(\hat{\alpha} t_i+\hat {\beta})-y_i)^2 minA^,α^,β^i=1n(A^sin(α^ti+β^)yi)2

2、高斯-牛顿法原理

考虑更加一般的情况:
min ⁡ ∑ i = 1 m ( r i ( X ) ) 2 令 r = [ r 1 , r 2 , ⋯ , r m ] T , 则目标函数为 f ( X ) = r ( X ) T r ( X ) , 为了使用牛顿法求解,需要计算梯度和 H e s s 矩阵 梯度 ∇ f ( X ) 的第 j 个元素为 : ( ∇ f ( X ) ) j = ∂ f ∂ x j ( X ) = 2 ∑ i = 1 m r i ( X ) ∂ r i ∂ x i ( X ) r 的 J a c o b i 矩阵为: J ( X ) = [ ∂ r 1 ∂ x 1 ( X ) ∂ r 1 ∂ x 2 ( X ) ⋯ ∂ r 1 ∂ x n ( X ) ∂ r 2 ∂ x 1 ( X ) ∂ r 2 ∂ x 2 ( X ) ⋯ ∂ r 2 ∂ x n ( X ) ⋮ ⋮ ⋱ ⋮ ∂ r m ∂ x 1 ( X ) ∂ r m ∂ x 2 ( X ) ⋯ ∂ r m ∂ x n ( X ) ] 因此,函数 f 的梯度可表示为: ∇ f ( X ) = 2 J ( X ) T r ( X ) 函数 f 的 H e s s 矩阵的第 ( k , j ) 个元素为: ∂ 2 f ∂ x k ∂ x j ( X ) = ∂ ∂ x k ( ∂ f ∂ x j ( X ) ) = ∂ ∂ x k ( 2 ∑ i = 1 m r i ( X ) ∂ r i ∂ x i ( X ) ) = 2 ∑ i = 1 m ( ∂ r i ∂ x k ( X ) ∂ r i ∂ x j ( X ) + r i ( X ) ∂ 2 r i ∂ x k ∂ x j ( X ) ) 令 S ( X ) 表示一个矩阵其中 ( k , j ) 的元素为 ∑ i = 1 m r i ( X ) ∂ 2 r i ∂ x k ∂ x j ( X ) f ( x ) 的 H e s s 矩阵可以表示为: ∇ 2 f = 2 ( J ( X ) T J ( X ) + S ( X ) ) 迭代公式为: X = X ( k ) − ( J ( X ) T J ( X ) + S ( X ) ) − 1 J ( X ) T r ( X ) 由于 S ( X ) 包含函数 r 的二阶导,数值较小可以忽略,所以迭代公式可变为: X = X ( k ) − ( J ( X ) T J ( X ) ) − 1 J ( X ) T r ( X ) \begin{aligned} &\min \sum_{i=1}^{m}(r_i(X))^2 \\ &令r=[r_1,r_2,\cdots,r_m]^T,则目标函数为f(X)=r(X)^Tr(X),为了使用牛顿法求解,需要计算梯度和Hess矩阵\\ &梯度\nabla f(X)的第j个元素为:(\nabla f(X))_j = \frac{\partial f}{\partial x_j}(X) = 2\sum_{i=1}^{m}r_i(X)\frac{\partial r_i}{\partial x_i}(X)\\ &r的Jacobi矩阵为:J(X)= \begin{bmatrix} \frac{\partial r_1}{\partial x_1}(X) & \frac{\partial r_1}{\partial x_2}(X) & \cdots &\frac{\partial r_1}{\partial x_n}(X) \\ \frac{\partial r_2}{\partial x_1}(X) & \frac{\partial r_2}{\partial x_2}(X) & \cdots &\frac{\partial r_2}{\partial x_n}(X) \\ \vdots &\vdots &\ddots &\vdots\\ \frac{\partial r_m}{\partial x_1}(X) & \frac{\partial r_m}{\partial x_2}(X) & \cdots &\frac{\partial r_m}{\partial x_n}(X) \\ \end{bmatrix}\\ &因此,函数f的梯度可表示为:\nabla f(X) = 2J(X)^Tr(X) \\ \\ &函数f的Hess矩阵的第(k,j)个元素为:\\ & \frac{\partial^2f}{\partial x_k \partial x_j}(X) =\frac{\partial}{\partial x_k}\left ( \frac{\partial f}{\partial x_j}(X) \right ) = \frac{\partial}{\partial x_k}\left ( 2\sum_{i=1}^{m}r_i(X)\frac{\partial r_i}{\partial x_i}(X)\right ) = 2\sum_{i=1}^{m}\left( \frac{\partial r_i}{\partial x_k}(X)\frac{\partial r_i}{\partial x_j}(X) +\color{blue} r_i(X)\frac{\partial^2r_i}{\partial x_k \partial x_j}(X) \color{black} \right) \\ &令\color{blue}S(X)\color{black}表示一个矩阵其中(k,j)的元素为\color{blue}\sum_{i=1}^{m} r_i(X)\frac{\partial^2r_i}{\partial x_k \partial x_j}(X) \color{black} \\ &f(x)的Hess矩阵可以表示为:\nabla^2f=2\left(J(X)^TJ(X)+\color{blue} S(X)\color{black} \right)\\ &迭代公式为:X = X^{(k)}-\left(J(X)^TJ(X)+\color{blue} S(X)\color{black} \right)^{-1}J(X)^Tr(X)\\ &由于S(X)包含函数r的二阶导,数值较小可以忽略,所以迭代公式可变为:\\ &X = X^{(k)}-\left(J(X)^TJ(X)\right)^{-1}J(X)^Tr(X)\\ \end{aligned} mini=1m(ri(X))2r=[r1,r2,,rm]T,则目标函数为f(X)=r(X)Tr(X),为了使用牛顿法求解,需要计算梯度和Hess矩阵梯度f(X)的第j个元素为:(f(X))j=xjf(X)=2i=1mri(X)xiri(X)rJacobi矩阵为:J(X)= x1r1(X)x1r2(X)x1rm(X)x2r1(X)x2r2(X)x2rm(X)xnr1(X)xnr2(X)xnrm(X) 因此,函数f的梯度可表示为:f(X)=2J(X)Tr(X)函数fHess矩阵的第(k,j)个元素为:xkxj2f(X)=xk(xjf(X))=xk(2i=1mri(X)xiri(X))=2i=1m(xkri(X)xjri(X)+ri(X)xkxj2ri(X))S(X)表示一个矩阵其中(k,j)的元素为i=1mri(X)xkxj2ri(X)f(x)Hess矩阵可以表示为:2f=2(J(X)TJ(X)+S(X))迭代公式为:X=X(k)(J(X)TJ(X)+S(X))1J(X)Tr(X)由于S(X)包含函数r的二阶导,数值较小可以忽略,所以迭代公式可变为:X=X(k)(J(X)TJ(X))1J(X)Tr(X)

3、Levenberg-Marquardt修正

高斯-牛顿法在使用的过程中也会出现 J ( X ) T J ( X ) J(X)^TJ(X) J(X)TJ(X)不是正定矩阵的问题,所以也可以使用Levenberg-Marquardt修正就加以解决:
X = X ( k ) − ( J ( X ) T J ( X ) + μ k I ) − 1 J ( X ) T r ( X ) X = X^{(k)}-\left(J(X)^TJ(X) + \mu_k I\right)^{-1}J(X)^Tr(X) X=X(k)(J(X)TJ(X)+μkI)1J(X)Tr(X)

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

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

相关文章

Trivy离线扫描:容器安全实践指南

一、Trivy简介 1.1 Trivy 概述 Trivy 是一款全面多功能的安全扫描器。Trivy具有寻找安全问题和目标的扫描器。现已经被 Github Action、Harbor 等主流工具集成&#xff0c;Trivy支持大多数流行的编程语言、操作系统和平台的扫描&#xff0c;应该是该领域目前目前采用最广的开…

【React】CSS 局部样式

书写 CSS 的时候&#xff0c;如果 CSS 文件名包含 module&#xff0c;那么说明该 CSS 是一个局部 CSS 样式文件&#xff0c;类似于 vue 中的 scoped。 .avatarContainer {width: 40px;height: 40px;border-radius: 50%;background: rgb(213, 226, 226); }import styles from ..…

android脱壳:一种使用native进行抽取壳脱壳的方法,native版本的frida-fart

前言 写rxposed的时候&#xff0c;搞了很多模块&#xff0c;其中有一个远程调用脱壳的&#xff0c;但是当时使用的是rmi远程调用&#xff0c;因为一些问题无法使用&#xff0c;可能是对抗问题&#xff0c;也有可能是技术问题&#xff0c;所以我又换了一种远程调用方式。 概述…

局部多项式近似与 AMPM 算法

kappa3; %已在您的代码中定义% 定义窗口大小 windowSize (2*kappa1);% 初始化梯度估计值 [rows, cols] size(wrappedPhase); phi_y zeros(rows, cols); phi_x zeros(rows, cols);% 遍历每个窗口 for m 1kappa:rows-kappafor n 1kappa:cols-kappa% 提取局部窗口Z_mn wrap…

逆数对(树状数组的方法)

本题链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 题目&#xff1a; 样例&#xff1a; 输入 5 4 5 1 3 2 输出 7 思路&#xff1a; 根据题意&#xff0c;求逆序对总数。 逆序对含义&#xff1a;如果数组中的两个不同位置&#xff0c;前面的数字比后面的数字严格大&…

新建云仓库

1.GitHub新建云仓库&#xff1a; LICENSE:开源许可证&#xff1b;README.md:仓库说明文件&#xff1b;开源项目&#xff1b;cocoaPodsName.podspec: CocoaPods项目的属性描述文件。 2.Coding新建云仓库&#xff1a; 备注&#xff1a; Coding新建项目&#xff1a;

中文句子在线改写 2024 新版发布

句子改写在线功能上线有 1 年多了&#xff0c;最近上线了新版本&#xff0c;主要包含以下三个功能&#xff1a; 增加主题切换功能&#xff0c;提供亮色、暗黑两种模式 简化句子输入界面 句子改写记录的保存和分享 中文句子改写首页-结果页面 句子改写功能目前支持严谨、普通…

简单的jmeter脚本自动化

1、创建线程组&#xff0c;定义自定义变量&#xff0c;保存请求默认值 2、用csv编写测试用例 备注&#xff1a;如果单元格内本身就有引号&#xff0c;则格式会有点小问题&#xff0c;不能直接修改为csv 用txt打开后 有引号的需要在最外层多包一层引号&#xff0c;每个引号前…

AI 语音机器人系统怎么搭建

搭建AI语音机器人系统通常包括以下几个关键步骤&#xff1a; 确定需求和技术选型&#xff1a;首先要明确AI语音机器人需要实现的功能&#xff0c;选择合适的技术框架和工具&#xff0c;如自然语言处理工具、语音识别工具等。 搜集和准备数据&#xff1a;收集和整理与业务相关…

Linux 底软开发——对CAN的详细操作(周期发送,异常检测,过滤报文)

Linux底软开发—对CAN发送接收详细操作 文章目录 Linux底软开发—对CAN发送接收详细操作1.保证多条CAN数据发送的周期性2.解析CAN报文数据3.CAN总线异常机制应对4.对CAN报文进行过滤操作5.完整的接收报文代码&#xff08;过滤&#xff0c;心跳检测&#xff0c;解析&#xff09;…

Java之复制图片

从文件夹中复制图片 从这个文件夹&#xff1a; 复制到这个空的文件夹&#xff1a; 代码如下&#xff1a; import java.io.*; import java.util.Scanner;/*** 普通文件的复制*/public class TestDome10 {public static void main(String[] args) {// 输入两个路径// 从哪里(源路…

MySQL随便聊-----之认识MySQL

本专栏&#xff0c;用作复习&#xff0c;不建议小白&#xff0c;建议者勿看 一、了解MySQL 二、MySQL的客户端/服务器架构 以我们平时使用的微信为例&#xff0c;它其实是由两部分组成的&#xff0c;一部分是客户端程序&#xff0c;一部分是服务器程序。客户端可 能有很多种形…

适合弱电行业用的项目管理系统,找企智汇项目管理系统!

弱电行业&#xff0c;是指通信、计算机、监控、安防、智能家居等一系列与现代生活息息相关的行业。在这个行业&#xff0c;项目管理的重要性不言而喻。企智汇项目管理系统在弱电行业的应用中&#xff0c;展现出了其独特的优势和价值。该系统能够充分满足弱电工程项目的复杂需求…

基于arcpro3.0.2版的使用深度学习检测对象之椰子树

基于arcpro3.0.2版的使用深度学习检测对象之椰子树 GPU显卡Nivda 1080 训练模型图 (四)检测对象之椰子树 使用深度学习检测对象 打开 detect objects using deep learning,参数 输入栅格为要检测的影像 模型定位为上一步输出的.emd文件 cpu模式Max Overlap Ratio0.4 运行时间…

C语言----单链表的实现

前面向大家介绍了顺序表以及它的实现&#xff0c;今天我们再来向大家介绍链表中的单链表。 1.链表的概念和结构 1.1 链表的概念 链表是一种在物理结构上非连续&#xff0c;非顺序的一种存储结构。链表中的数据的逻辑结构是由链表中的指针链接起来的。 1.2 链表的结构 链表…

ROM修改进阶教程------如何去除安卓机型系统的开机向导 几种操作步骤解析

在和很多工作室定制化系统中。手机在第一次启动的时候系统都会进入设置向导,虽然可以设置手机的基本配置。但有很多客户需要去除手机的开机向导来缩短开机时间。确保手机直接进入工作状态。那么今天的教程针去除对开机向导的几种方法做个解析。机型很多版本不同。操作也有不同…

配置jupyter的启动路径

jupyter的安装参考&#xff1a;python环境安装jupyter-CSDN博客 1&#xff0c;背景 继上一篇python环境安装jupyter&#xff0c;里面有一个问题&#xff0c;就是启动jupyter&#xff08;命令jupyter notebook&#xff09;之后&#xff0c;页面默认显示的是启动时候的路径。 …

AI 边缘计算平台 - 嘉楠堪智 CanMV K230 开箱

CanMV-K230 开发板采用的是嘉楠科技 Kendryte 系列 AIoT 芯片中的最新一代 SoC 芯片 K230。该芯片采用全新的多异构单元加速计算架构&#xff0c;最新高性能 RISC-V CPU 内置双核玄铁 C908 CPU, 主频高达 1.6GHz&#xff1b;是全球首款支持 RISC-V Vector 1.0 标准的商用 SoC&a…

python中如何用matplotlib写饼图

#代码 import matplotlib.pyplot as plt# 设置绘图的主题风格 plt.style.use(ggplot) # 中文乱码和坐标轴负号的处理 plt.rcParams[font.sans-serif][SimHei] plt.rcParams[axes.unicode_minus]False plt.rcParams[figure.figsize][10,8] # 构造数据 x [0.2515,0.3724,0.3336…

靠这套 Pytest 接口自动化测试框架,击败了99%的人

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 Pytest 的下载安装 1、Python3 使用 pip install -U pytest 安装 2、查看 pytest 版本信息 py…