切比雪夫多项式与数值最优化算法收敛率的关系

考虑典型的二次极小化问题

\[\begin{equation}\tag{1} \min_{\mathbf{x}\in\mathbb{R}^{n}} f(\mathbf{x})=\frac{1}{2}\mathbf{x}^{\top}A\mathbf{x}-\mathbf{b}^{\top}\mathbf{x}, \end{equation} \]

其中 \(A\in\mathbb{R}^{n\times n}\) 是对称正定的,其特征值满足 \(0<\lambda_{min}=\lambda_{1}\le\lambda_{2}\le\ldots\le\lambda_{n}=\lambda_{max}\)\(\mathbf{b}\in\mathbb{R}^{n}\)。问题 \((1)\) 等价于求解下面的线性方程组

\[\begin{equation}\tag{2} A\mathbf{x}=\mathbf{b}. \end{equation} \]

\(\mathbf{x}^{*}\) 为问题 \((1)\) 的最优解,则

\[\begin{equation}\tag{3} \mathbf{x}^{*}=A^{-1}\mathbf{b}. \end{equation} \]

通常计算 \(A^{-1}\) 是一件困难的事情,尤其当维数很高,或者其条件数较大时。因此,最常用的方法是迭代求解方法,其中具有代表性的方法是一阶梯度类下降方法,而估计这些下降方法的收敛率是一件重要的事情。本篇详细介绍如何让采用切比雪夫多项式的一些性质来证明一阶迭代算法的最优收敛率。我们知道,切比雪夫多项式是函数逼近论中非常重要的一类正交多项式,尤其把它的零点集作为插值节点可以降低龙格现象。似乎切比雪夫多项式与梯度类下降方法似乎没有显然的关系,但是实质上这两者有着深刻的联系。下面我们就开始探索这两者的关系。


最速下降法

其迭代格式如下所示

\[\begin{equation*}\tag{4} \mathbf{x}_{k+1}=\mathbf{x}_{k}-\alpha_{k}\mathbf{g}_{k}, \end{equation*} \]

其中 \(\mathbf{x}_{k}\) 表示 \(\mathbf{x}^{*}\) 的第 \(k\) 次逼近,\(\mathbf{g}_{k}:=A\mathbf{x}_{k}-\mathbf{b}\) 是目标函数 \(f(x_{k})\) 的梯度,

\[\begin{equation}\tag{*} \alpha_{k}=\frac{\mathbf{g}_{k}^{\top}\mathbf{g}_{k}}{\mathbf{g}_{k}^{\top}A\mathbf{g}_{k}} \end{equation} \]

是步长。定义残差

\[\begin{equation}\tag{5} \mathbf{e}_{k}=\mathbf{x}_{k}-\mathbf{x}^{*}. \end{equation} \]

\((3)(4)(5)\) 可得

\[\begin{equation}\tag{6} \mathbf{g}_{k}=A\mathbf{e}_{k} \end{equation} \]

\[\begin{equation}\tag{7} \mathbf{e}_{k+1}=(I-\alpha_{k}A)\mathbf{e}_{k}. \end{equation} \]

因此,步长又可写为

\[\begin{equation}\tag{8} \alpha_{k}=\frac{\|A\mathbf{e}_{k}\|_{2}^{2}}{\mathbf{e}_{k}^{\top}A^3\mathbf{e}_{k}}. \end{equation} \]

根据 \((7)\) 可知

\[\begin{equation}\tag{9} \|\mathbf{e}_{k+1}\|_{A}^{2} =\|\mathbf{e}_{k}\|_{A}^{2}-2\alpha_{k}\|A\mathbf{e}_{k}\|_{2}^{2}+\alpha_{k}^{2}\mathbf{e}_{k}^{\top}A^3\mathbf{e}_{k}. \end{equation} \]

\((8)\) 式代入 \((9)\) 可得,

\[\begin{align}\tag{10} \|\mathbf{e}_{k+1}\|_{A}^{2}=\|\mathbf{e}_{k}\|_{A}^{2}\big[1-\frac{\|A\mathbf{e}_{k}\|_{2}^{4}}{\mathbf{e}_{k}^{\top}A^3\mathbf{e}_{k}\mathbf{e}_{k}^{\top}A\mathbf{e}_{k}}\big]. \end{align} \]

\(\mathbf{y}=\sqrt{A}\mathbf{e}_{k}\)。根据 \((10)\) 式可得

\[\begin{equation*} \frac{\|\mathbf{e}_{k+1}\|_{A}^{2}}{\|\mathbf{e}_{k}\|_{A}^{2}}=1-\frac{(\mathbf{y}^{\top}A\mathbf{y})^2}{(\mathbf{y}^{\top}\mathbf{y})(\mathbf{y}^{\top}A^2\mathbf{y})}. \end{equation*} \]

由 Kantorovich 不等式可得

\[\begin{equation*} \frac{(\mathbf{y}^{\top}A\mathbf{y})^2}{(\mathbf{y}^{\top}\mathbf{y})(\mathbf{y}^{\top}A^2\mathbf{y})}\ge\frac{4\lambda_{min}\lambda_{max}}{(\lambda_{min}+\lambda_{max})^2}. \end{equation*} \]

因此,

\[\begin{equation*} \frac{\|\mathbf{e}_{k+1}\|_{A}^{2}}{\|\mathbf{e}_{k}\|_{A}^{2}}\le 1-\frac{4\lambda_{min}\lambda_{max}}{(\lambda_{min}+\lambda_{max})^2}=\Big(\frac{\kappa-1}{\kappa+1}\Big)^2, \end{equation*}\]

其中 \(\kappa=\frac{\lambda_{max}}{\lambda_{min}}\) 为矩阵 \(A\) 的条件数。
从而有

\[\begin{equation}\tag{11} \|\mathbf{e}_{k+1}\|_{A}\le\Big(\frac{\kappa-1}{\kappa+1}\Big)^{k}\|\mathbf{e}_{0}\|_{A}. \end{equation} \]

式子 \((11)\) 即表达了最速下降法在最坏情况下的收敛率上界。由此可知,该方法的收敛性能严格地被问题的条件数所支配。

即在梯度下降法中,其残差的迭代格式为 \((7)\),并且步长取 \((*)\) 式时,得到收敛率为 \(\frac{\kappa-1}{\kappa+1}\)。再次观察 \((7)\) 式中的迭代格式,其为一个关于 \(A\) 的一次表达。一个很自然的问题是,由 \((7)\) 式所决定的迭代算法中,其收敛率的最优上界是多少?最速下降法中的收敛率是最优收敛率吗?下面要介绍的切比雪夫多项式就要回答这个问题。


最优收敛率的多项式表达

\((7)\) 式,设 \(p_{k}(\lambda)=\prod_{j=0}^{k}(1-\alpha_{j}\lambda)\),其中 \(\lambda\in[\lambda_{min, \ \lambda_{max}}]\)。可以看到 \(p_{k}(\lambda)\) 是一个次数为 \(k\) 的多项式,且满足 \(p_{k}(0)=1\)。 因此有,

\[\begin{equation*} \mathbf{e}_{k+1}=p_{k}(A)\mathbf{e}_{0}. \end{equation*} \]

注意,这里关于多项式 \(p_{k}\) 有些乱用符号,它原本是一个标量函数。但是在不引起歧义的情况下,由 Cayley 定理,它也可以作为一个矩阵函数。由此,

\[\begin{equation*} \frac{\|\mathbf{e}_{k+1}\|_{A}}{\|\mathbf{e}_{0}\|_{A}}\le\max_{\lambda\in[\lambda_{min},\lambda_{max}]}\big|p_{k}(\lambda)\big|. \end{equation*} \]

从而,最优收敛率问题转化为如下的最小最大问题

\[\begin{equation}\tag{12} \min_{p\in\mathbb{P}_{k}\\ p(0)=1}\max_{\lambda\in[\lambda_{min},\lambda_{max}]}\big|p_{k}(\lambda)\big|, \end{equation} \]

其中 \(\mathbb{P}_{k}\) 表示次数不超过 \(k\) 的多项式集合。本质上,\((12)\) 是一个多项式逼近问题:希望找到一个多项式 \(p\),满足 \(p(0)=1\),且在 \([\lambda_{min}, \ \lambda_{max}]\) 上最大绝对值尽可能小。也就是说,这个多项式要尽可能逼近 \(0\)。因此,我们要求 \(p_{k}(0)=1\),这意味着常数项要等于 \(1\),否则,我们直接取 \(p_{k}\equiv 0\) 来实现零误差,但是这没有意义。乍看起来,这个问题好像很无厘头。然而,通过对切比雪夫多项式的缩放与平移就可以解决。

我们首先将定义域 \([\lambda_{min}, \ \lambda_{max}]\) 映射到 \([-1, \ 1]\)。令

\[t=\frac{2\lambda-(\lambda_{max}+\lambda_{min})}{\lambda_{max}-\lambda_{min}}. \]

那么

\[\lambda=\frac{t(\lambda_{max}-\lambda_{min})+(\lambda_{max}+\lambda_{min})}{2}. \]

从而,当 \(\lambda\in[\lambda_{min},\lambda_{max}]\) 时,我们有 \(t\in[-1,1]\)。如果你要问,为什么要变换到区间 \([-1,1]\),那说明你思考了。这个问题的答案稍后就可以看到。不急,接着往下走。

现在定义多项式

\[q(t)=p(\lambda), \]

\[q(t)=p\Big(\frac{t(\lambda_{max}-\lambda_{min})+(\lambda_{max}+\lambda_{min})}{2}\Big). \]

那么 \(q(t)\) 也是一个 \(k\) 次多项式。而条件 \(p(0)=1\) 对应于

\[q(t_{0'})=1, \]

其中 \(t_{0'}=-\frac{\lambda_{max}+\lambda_{min}}{\lambda_{max}-\lambda_{min}}<-1\)

于是最优收敛率问题又进一步转化为求解下面的最小最大问题

\[\begin{equation}\tag{13} \min_{q\in\mathbb{P}_{k}\\ q(t_{0'})=1}\max_{t\in[-1, \ 1]}\big|q(t)\big|. \end{equation} \]

好了,到此,我们的主角切比雪夫多项式终于该亮相了。


切比雪夫多项式

切比雪夫多项式的一些基本内容

若函数族 \(\phi_{0}(t),\phi_{1}(t),\ldots,\phi_{n}(t),\ldots\) 满足关系

\[\begin{equation*} (\phi_{j},\phi_{k})=\int_{a}^{b}\rho(t)\phi_{j}(t)\phi_{k}(t)dt=\begin{cases} 0,\quad &j\neq k,\\ A_{k}>0, \quad &j=k. \end{cases} \end{equation*} \]

则称 \(\{\phi_{k}(t)\}\)\([a, b]\) 上带权 \(\rho(t)\) 的正交函数族;若 \(A_{k}\equiv 1\),则称为标准正交函数族。

当权函数 \(\rho(t)=\frac{1}{\sqrt{1-t^2}}\), 区间为 \([-1, 1]\) 时,由序列 \(\{1, t, \ldots,t^{n},\ldots\}\) 正交化得到的正交多项式就是切比雪夫多项式 (Chebyshev) 多项式,它可表示为

\[\begin{equation}\tag{14} T_{n}(t)=\cos(n\arccos(t)),\quad |t|\le 1. \end{equation} \]

\((14)\) 也常被称为第一类切比雪夫多项式。若令 \(t=\cos(\theta)\),则

\[T_{n}(t)=\cos(n\theta),\quad 0\le\theta\le\pi. \]

根据三角恒等式

\[\cos((n+1)\theta)=2\cos(\theta)\cos(n\theta)-\cos((n-1)\theta),\quad n=1,2,\ldots. \]

性质1(递推关系)

\(\qquad\)\(t=\cos(\theta)\),则可得

\[T_{n+1}(t)=2tT_{n}(t)-T_{n-1}(t),\quad n=1,2,\ldots,\tag{15} \]

\[T_{0}(t)=1,\quad T_{1}(t)=t. \]

性质2

\(T_{2k}(t)\) 只含 \(t\) 的偶次幂,\(T_{2k+1}(t)\) 只含 \(t\) 的奇次幂。

性质3

\(T_{n}(t)\) 在区间 \([-1, 1]\) 上有 \(n\) 个零点

\[t_{k}=\cos(\frac{2k-1}{2n}\pi),\quad k=1,2,\ldots,n\]

\(n+1\) 个极值点 (包括端点)

\[t_{k}=\cos(\frac{k\pi}{n}),\quad k=0,1,2,\ldots,n. \]

这两组点称为切比雪夫点,它们在插值中有重要作用。结合切比雪夫多项式的定义 \((14)\),这些极值点的几何意义非常明显,即分别表示旋转 \(j\)\(\pi\)。所以取到了 \(\pm 1\)

性质4

\(T_{n}(t)\) 的首项 \(t^n\) 的系数为 \(2^{n-1}\)

\(\qquad\)\((15)\) 可知, \(T_{n}(t)\) 放入最高次项系数是 \(2^{n-1},\quad n=1,2,\ldots\)。下图展示了次数分别为 \(n=0,1,2,3,4,5\)\(t\in[-1, 1]\) 时,切比雪夫多项式的函数图像。

\[T_{2}(x)=2x^2-1, \]

\[T_{3}(x)=4x^3-3x, \]

\[T_{4}(x)=8x^4-4x^2+1, \]

\[T_{5}(x)=16x^5-20x^3+5x. \]

Chebyshev

对于 \(|t|>1\),切比雪夫多项式可用双曲函数表示

\[T_{n}(t)=\cosh(n\text{arccosh}(t)). \]

性质5

\[T_{n}(-t)=(-1)^{n}T_{n}(t). \]

性质6

在所有 \(k\) 次多项式中,\(T_{k}(t)\)\([-1, 1]\) 上具有最小的最大绝对值。

这个性质正是我们需要的,也就是说 \(k\) 次多项式恰好是问题 \((13)\) 的最优解。下面我们详细地证明性质 \(6\) 成立。

为此,我们考虑多项式

\[q^{*}(t)=\frac{T_{k}(t)}{T_{k}(t_{0'})}. \]

显然 \(q^{*}(t_{0'})=1\),且

\[\max_{t\in[-1,1]}\big|q^{*}(t)\big|=\frac{1}{\big|T_{k}(t_{0'})\big|},\quad(\big|T_{k}(t)\big|\le 1). \]

下面我们采用反证法证明 \(q^{*}(t)\) 的最优性。
假设存在另一个 \(k\) 次多项式 \(\tilde{q}(t)\) 满足 \(\tilde{q}(t_{0'})=1\), 且

\[\max_{t\in[-1,1]}\big|\tilde{q}(t)\big|<\frac{1}{\big|T_{k}(t_{0'})\big|}. \]

定义差值多项式:

\[r(t)=\tilde{q}(t)-q^{*}(t). \]

设 $$t_{j}=\cos(\frac{j\pi}{k}),\quad j=0,1,2,\ldots,k,\quad (极值点)$$

\[T_{k}(t_{j})=(-1)^{j},\quad q^{*}(t_{j})=\frac{(-1)^{j}}{T_{k}(t_{0'})}. \]

由于 \(\tilde{q}(t)\)\([-1,1]\) 上的最大值严格小于 \(\frac{1}{T_{k}(t_{0'})}\),则有

\[\big|\tilde{q}(t_{j})\big|<\frac{1}{T_{k}(t_{0'})}=\big|q^{*}(t_{j})\big|. \]

考虑符号

\[sign[r(t_{j})]=sign[\tilde{q}(t_{j})-q^{*}(t_{j})]. \]

因为 \(\big|\tilde{q}(t_{j})\big|<\big|q^{*}(t_{j})\big|\)\(q^{*}(t_{j})\) 交错变号, \(r(t_{j})\) 在相邻的 \(t_{j}\) 处符号相反,具体地:

\[(1): 当 \ j \ 为偶数时,\quad q^{*}(t_{j})>0 \ 且 \ \tilde{q}(t_{j})<q^{*}(t_{j}),\ 所以 \ r(t_{j})<0. \]

\[(2): 当 \ j \ 为奇数时,\quad q^{*}(t_{j})<0 \ 且 \ \tilde{q}(t_{j})<q^{*}(t_{j}),\ 所以 \ r(t_{j})>0. \]

因此,\(r(t)\)\(k+1\) 个点 \(t_0, t_1,t_2,\ldots,t_k\) 上交错变号,由连续函数的介值定理,\(r(t)\) 在每对相邻点之间至少由一个零点,共有至少 \(k\) 个零点。

而由于 \(\tilde{q}(t_{0'})=q^{*}(t_{0'})=1\), 有 \(r(t_{0'})=0\),但 \(t_{0'}<-1\)。所以多项式 \(r(t)\) 至少有 \(k+1\) 个零点。但是 \(r\) 的次数不超过 \(k\)。所以 \(r(t)\equiv 0\)。矛盾。因此,\(q^{*}(t)\) 是最优的。证毕。

此外,如果要求逼近的多项式是首一的,那么 \(\frac{1}{2^{k-1}}T_{k}(t)\) 就是最优解。


计算最小最大值

根据性质 \(6\) 的结论,现在将最优解 \(q^{*}(t)\) 变换回 \(p^{*}(\lambda)\):

\[p^{*}(\lambda)=q^{*}(t)=\frac{T_{k}\Big(\frac{2\lambda-(\lambda_{max}+\lambda_{min})}{\lambda_{max}-\lambda_{min}}\Big)}{T_{k}\Big(-\frac{\lambda_{max}+\lambda_{min}}{\lambda_{max}-\lambda_{min}}\Big)}, \]

而根据性质 \(5\) 可得,

\[T_{k}\Big(\frac{2\lambda-(\lambda_{max}+\lambda_{min})}{\lambda_{max}-\lambda_{min}}\Big)=(-1)^{k}T_{k}\Big(\frac{\lambda_{max}+\lambda_{min}-2\lambda}{\lambda_{max}-\lambda_{min}}\Big). \]

类似地:

\[T_{k}\Big(-\frac{\lambda_{max}+\lambda_{min}}{\lambda_{max}-\lambda_{min}}\Big)=(-1)^{k}T_{k}\Big(\frac{\lambda_{max}+\lambda_{min}}{\lambda_{max}-\lambda_{min}}\Big). \]

因此,我们有

\[\begin{equation} p^{*}(\lambda)=\frac{T_{k}\Big(\frac{(\lambda_{max}+\lambda_{min})-2\lambda}{\lambda_{max}-\lambda_{min}}\Big)}{T_{k}\Big(\frac{\lambda_{max}+\lambda_{min}}{\lambda_{max}-\lambda_{min}}\Big)}. \end{equation} \]

这正是我们想要的表达式。
因此,迭代格式 \((7)\) 的最优收敛率的上界为

\[\max_{\lambda\in[\lambda_{min},\lambda_{max}]}\big|p^{*}(\lambda)\big|=\frac{1}{T_{k}\Big(\frac{\lambda_{max}+\lambda_{min}}{\lambda_{max}-\lambda_{min}}\Big)}. \]

\(\gamma=\frac{\lambda_{max}+\lambda_{min}}{\lambda_{max}-\lambda_{min}}=\frac{\kappa+1}{\kappa-1}>1\). 我们需要计算 \(T_{k}(\gamma)\)。利用切比雪夫多项式的表达式:当 \(|t|>1\) 时,\(T_{k}(t)=\cosh(k\text{cosh(t)})\),或用显示公式:

\[T_{k}(t)=\frac{1}{2}\big[(t+\sqrt{t^2-1})^k+(t-\sqrt{t^2-1})^k\big]. \]

对于 \(t=\gamma=\frac{\kappa+1}{\kappa-1}\),计算

\[\gamma^2-1=(\frac{\kappa+1}{\kappa-1})^2-1=\frac{4\kappa}{(\kappa-1)^2}, \]

所以

\[\sqrt{\gamma^2-1}=\frac{2\sqrt{\kappa}}{\kappa-1}. \]

于是

\[\gamma+\sqrt{\gamma^2-1}=\frac{\kappa+1}{\kappa-1}+\frac{2\sqrt{\kappa}}{\kappa-1}=\frac{\sqrt{\kappa}+1}{\sqrt{\kappa}-1}. \]

类似地:

\[\gamma-\sqrt{\gamma^2-1}=\frac{\kappa+1}{\kappa-1}-\frac{2\sqrt{\kappa}}{\kappa-1}=\frac{\sqrt{\kappa}-1}{\sqrt{\kappa}+1}. \]

因此,

\[T_{k}(t)=\frac{1}{2}\big[(\frac{\sqrt{\kappa}+1}{\sqrt{\kappa}-1})^k+(\frac{\sqrt{\kappa}-1}{\sqrt{\kappa}+1})^k\big]\ge\frac{1}{2}(\frac{\sqrt{\kappa}+1}{\sqrt{\kappa}-1})^k. \]

于是

\[\frac{1}{T_{k}(t)}\le 2(\frac{\sqrt{\kappa}-1}{\sqrt{\kappa}+1})^k. \]

实际上,当条件数 \(\kappa\) 较大时,第二项 \((\frac{\sqrt{\kappa}+1}{\sqrt{\kappa}-1})^k\) 远小于第一项。故近似地有

\[\frac{1}{T_{k}(t)}\approx 2(\frac{\sqrt{\kappa}-1}{\sqrt{\kappa}+1})^k. \]

这就是最优收敛的估计,即

\[\max_{\lambda\in[\lambda_{min},\lambda_{max}]}\big|p^{*}_{k}(\lambda)\big|\le 2(\frac{\sqrt{\kappa}-1}{\sqrt{\kappa}+1})^k. \]

这意味着存在迭代法,(如共轭梯度法或切比雪夫半迭代法)能够达到该收敛率:

\[\|\mathbf{e}_{k}\|_{A}\le 2(\frac{\sqrt{\kappa}-1}{\sqrt{\kappa}+1})^k \|\mathbf{e}_{0}\|_{A}. \]


总结

最速下降法的收敛率上界:\((\frac{\kappa-1}{\kappa+1})^k\).

最优多项式迭代的收敛率上界:\(2(\frac{\sqrt{\kappa}-1}{\sqrt{\kappa}+1})^k\).

对于大的条件数 \(\kappa\),显然,最优多项式迭代的收敛率远优于最速下降法的上界。

为达到最优收敛率,可使用切比雪夫多项式的三项递推关系式构造如下的迭代格式

\[\mathbf{x}_{k+1}=\mathbf{x}_{k}+\mu_{k+1}(\mathbf{x}_{k}-\mathbf{x}_{k-1})-v_{k+1}\mathbf{g}_{k}, \]

其中参数可由切比雪夫多项式的零点确定。而共轭梯度法可实现上述的最优收敛率,得益于其探索 Krylov 子空间的性质。

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

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

相关文章

恰好被k个区间覆盖的点的数量

8 - 11 - 模型描述 在数轴上,有 \(n\) 个区间,对于第 \(i\) 个区间覆盖的区间为 \([l_i, r_i]\) ,现在你要求出所有 \(k \in [1, n]\),恰好被 \(k\) 个区间覆盖的点的个数。 2 - 做法 对于模型的描述,很容易想到用…

Day59(29)-F:\vs_ai_work\vue-tlias-management

ElementPlus员工管理查询清空<div class="container"><el-button type="primary" @click="addEmp">+新增员工</el-button><el-button type="danger" @c…

windriver 第5章:USB 概述

本章将探讨通用串行总线(USB)的基本特性,并介绍 WinDriver USB 的功能与架构。ℹ️ 说明 本章中提及的 WinDriver USB 工具包,均指用于开发 USB 主机驱动程序的标准 WinDriver USB 工具包。5.1 USB 简介 USB(通用…

Airflow - from airflow import DAG and from airflow.sdk import DAG, which one is better?

Airflow - from airflow import DAG and from airflow.sdk import DAG, which one is better?Short answer: ✔ from airflow.sdk import DAG is better for Airflow 3 (and later). ✔ from airflow import DAG is t…

langchain工具上下文

在langchain Tools工具的基础使用中,工具方法的参数是由大模型生成schema来调用的。除了schema定义的参数外,tools还有一类特定的内置参数:runtime。 runtime是一个内部定义好的ToolRuntime类型结构,里面有state、…

货代邮件自动化处理系统设计文档

货代邮件自动化处理系统设计文档1. 项目概述 1.1 背景 作为一家货代公司,业务核心在于接收客户的“托书”(Booking Note),录入订单系统,并进行后续操作。目前该过程依赖人工查阅邮件、解析文档和录入数据,效率低…

吐血整理!新房全包装修,性价比之王大盘点 - 品牌测评鉴赏家

吐血整理!新房全包装修,性价比之王大盘点一、2025 家装市场现状:投诉激增,选对公司就是省钱 (一)行业痛点直击 2024 年,上海市消保委数据如同一记警钟,在平静的家装湖面掀起惊涛骇浪。当年,上海家装投诉量飙升…

DSU on array

8 - 3DSU on array 是一种把并查集用于一维数组上的技巧,用来维护数组中下一处未处理的位置。简单的说,如果某个位置 \(i\) 已被处理,我们希望下一次访问它时自动跳转到下一个没有被处理的位置 \(j\)。 1 - 适用场景…

Resources资源同步加载、异步加载、卸载

1. Unity Resources 同步加载资源(Resources.Load)Unity 提供了 Resources 文件夹和 API 来动态加载资源,可以在运行时通过代码获取所需资源,避免繁琐的拖拽操作。1.1 作用动态加载 Resources 文件夹下指定路径的资…

新房全包装修怎么选?这 3 类高性价比公司帮你省心省钱(附 2025 口碑红榜) - 品牌测评鉴赏家

新房全包装修怎么选?这 3 类高性价比公司帮你省心省钱(附 2025 口碑红榜)装修避坑必看:42%纠纷因合同漏项,60㎡两房9.8万全包还省15㎡空间。选装修公司认准自有工人、零增项合同和10年水电质保,盛世和家等品牌用…

无参和有参URL的定义

1.无参URL 就是正常的@app.route("/profile") @app.route(/profile) def profile():return 这是profile页面2.有参URL 2.1.path传参,怕死传参 @app.route("/blog/<int:blog_id>") @app.rout…

线段的最少分组

8 - 21 - 模型描述 在数轴上,有 \(n\) 条线段,对于第 \(i\) 条线段覆盖的区间为 \([l_i, r_i]\) ,现在你需要对这 \(n\) 条线段按如下的规则进行分组:同一组的线段之间互不重叠,即对于同一组的线段 \(i, j\) 存在…

【Ubuntu】系统下VScode配置ESP-IDF插件esp-clang和Python 3报错问题

引言 使用 Ubuntu 系统配置 ESP32 的 VScode 环境的时候遇到了两个问题: 一、 Command failed: /usr/bin/python3 /home/shf/esp32/ esp-idf/tools/idf_tools.py install esp-clang二、 non zero exit code 1 ESP-IDF…

新房装修不迷路!十大公司深度评测,盛世和家登顶榜首 - 品牌测评鉴赏家

新房装修不迷路!十大公司深度评测,盛世和家登顶榜首还记得拿到新房钥匙的那一刻吗?指尖触碰到冰凉金属的瞬间,脑海里早已勾勒出沙发摆放的位置、阳台养花的角落,连孩子房间的卡通壁纸都有了清晰模样。可这份喜悦没…

windriver 第6章:使用DriverWizard

本章介绍WinDriver的DriverWizard工具及其硬件诊断和驱动程序代码生成功能。 6.1 概述 DriverWizard(包含在WinDriver工具包中)是一款图形用户界面(GUI)工具,主要面向硬件和驱动程序开发的两个核心阶段: 硬件诊断…

vue 中支持不定高的虚拟滚动的表格 vxe-table 的使用,动态高度虚拟列表高性能表格

vue 中支持不定高的虚拟滚动的表格 vxe-table 的使用,动态高度虚拟列表高性能表格,项目的中有些场景不仅需要加载大数据量的表格,同时也要支持不固定高度,同时需要自适应行高的表格,这时候 vxe-table 就排上用场了…

windriver 第4章:PCI Express 概述

4.1 概述 PCI Express(PCIe)总线架构(前身为3GIO,即第三代输入/输出技术)由英特尔联合IBM、戴尔、康柏、惠普和微软等领先企业共同推出,旨在未来成为个人计算机输入/输出(PC I/O)的主流标准。 相较于标准PCI 2…

GROMACS 2025.4安装(非root用户)

一、准备条件 centos7只能安装24年miniconda,再升级 1. 安装最新版本的C和C++编译器。 conda activate conda install -c conda-forge cxx-compiler c-compiler 2. CMake 3.28或更高版本。 conda install cmake 3. 安…

MATLAB R2025a免费下载安装教程与激活教程超详细图文步骤(附安装包)

目录一、MATLAB R2025a介绍二、MATLAB R2025a下载安装包三、MATLAB R2025a安装教程(10步,每步带重点)1. 解压安装包——路径别带中文!2. 进Setup文件夹找安装程序3. 右键“管理员运行”——权限必须够4. 选“我有文…

解码string类——字符串处理

String类的实现与功能 核心特性设计目标:解决C风格字符串的内存管理问题,提供面向对象的字符串操作。 底层实现:基于basic_string<char>模板类。实现详解 #include <cstring> #include <stdexcept&g…