偏微分方程算法之九点紧差分法

目录

一、研究目标

二、理论推导

三、算例实现

四、结论


一、研究目标

        我们已经在专栏中介绍了椭圆型偏微分方程的五点菱形差分格式,这里我们继续以该方法为背景,探讨如何提高五点法的精度,即从二阶精度提升到四阶精度。

        研究目标现继续以矩形区域\Omega=[(x,y)|a\leqslant x\leqslant b,c\leqslant y\leqslant d]内的Poisson方程的边值问题:

\left\{\begin{matrix} -(\frac{\partial^{2}u(x,y)}{\partial x^{2}}+\frac{\partial^{2}u(x,y)}{\partial y^{2}})=f(x,y),(x,y)\in\Omega,\space\space(1)\\ u(x,y)=\varphi(x,y),(x,y)\in\partial \Omega=\Gamma \end{matrix}\right.

二、理论推导

        提高差分格式精度的一种有效方法是紧差分,即引入中间函数,对二阶偏导数进行更精细的逼近。

        与五点菱形差分法类似,首先进行矩形区域的剖分,然后将原方程弱化,使其仅在离散节点处成立。在利用差商代替微商之前,引入中间函数,令

\frac{\partial ^{2}u}{\partial x^{2}}=v(x,y),\frac{\partial^{2}u}{\partial y^{2}}=w(x,y)

原方程在离散节点处满足

-(v+w)|_{(x_{i},y_{j})}=f(x_{i},y_{j})\; (2)

又有,当 max_{(x,y)\in\Omega}[|\frac{\partial^{6}u(x,y)}{\partial x^{6}}|,|\frac{\partial^{6}u(x,y)}{\partial y^{6}}|]有界时,

\frac{\partial^{2}u}{\partial x^{2}}|_{(x_{i},y_{j})}=\frac{u(x_{i-1},y_{j})-2u(x_{i},y_{j})+u(x_{i+1},y_{j})}{\Delta x^{2}}-\frac{\Delta x^{2}}{12}\frac{\partial^{4}u}{\partial x^{4}}|_{(x_{i},y_{j})}+C_{1}(\Delta x)^{4}

从而有

v(x_{i},y_{j})=\frac{\partial^{2}u}{\partial x^{2}}|_{(x_{i},y_{j})}=\frac{\delta ^{2}_{x}u(x_{i},y_{j})}{\Delta x^{2}}-\frac{\Delta x^{2}}{12}\frac{\partial^{2}v}{\partial x^{2}}|_{(x_{i},y_{j})}+C_{1}(\Delta x)^{4}

=\frac{\delta^{2}_{x}u(x_{i},y_{j})}{\Delta x^{2}}-\frac{\Delta x^{2}}{12}(\frac{v(x_{i-1},y_{j})-2v(x_{i},y_{j})+v(x_{i+1},y_{j})}{\Delta x^{2}})+C_{2}(\Delta x)^{4}

也就是

v(x_{i},y_{j})=\frac{\delta^{2}_{x}u(x_{i},y_{j})}{\Delta x^{2}}-\frac{1}{12}(v(x_{i-1},y_{j})+10v(x_{i},y_{j})+v(x_{i+1},y_{j}))+C_{2}(\Delta x)^{4}\; (3)

由二维抛物型偏微分方程紧交替方向隐格式方法介绍中算子公式

\varepsilon ^{2}_{x}v(x_{i},y,t)=\frac{1}{12}(v(x_{i-1},y,t)+10v(x_{i},y,t)+v(x_{i+1},y,t))

可知公式(3)为

\epsilon^{2}_{x}v(x_{i},y_{j})=\frac{\delta^{2}_{x}u(x_{i},y_{j})}{\Delta x^{2}}+C_{2}(\Delta x)^{4}\; (4)

同理可得

\epsilon^{2}_{y}w(x_{i},y_{j})=\frac{\delta^{2}_{y}u(x_{i},y_{j})}{\Delta y^{2}}+C_{3}(\Delta y)^{4}\; (5)

        将算子\epsilon^{2}_{x}\epsilon^{2}_{y}作用到公式(2)上,有

-\epsilon^{2}_{x}\epsilon^{2}_{y}(v+w)|_{(x_{i},y_{j})}=\epsilon^{2}_{x}\epsilon^{2}_{y}f(x_{i},y_{j})\; (6)

        然后将公式(4)、(5)一起代入公式(6),可得

-\frac{\epsilon^{2}_{y}\delta^{2}_{x}u(x_{i},y_{j})}{\Delta x^{2}}-\frac{\epsilon^{2}_{x}\delta^{2}_{y}u(x_{i},y_{j})}{\Delta y^{2}}=\epsilon^{2}_{x}\epsilon^{2}_{y}f(x_{i},y_{j})+C_{2}(\Delta x)^{4}+C_{3}(\Delta y)^{4}

        用数值解代替精确解并忽略高阶项,可得紧差分格式:

\left\{\begin{matrix} -\frac{\epsilon^{2}_{y}\delta^{2}_{x}u_{i,j}}{\Delta x^{2}}-\frac{\epsilon^{2}_{x}\delta^{2}_{y}u_{i,j}}{\Delta y^{2}}=\epsilon^{2}_{x}\epsilon^{2}_{y}f(x_{i},y_{j}),1\leqslant i\leqslant m-1,1\leqslant j\leqslant n-1,\; (7)\\ u_{s,t}=\varphi(x_{s},y_{t}),s=0,m,0\leqslant t\leqslant n;t=0,n,0\leqslant s\leqslant m \end{matrix}\right.

该格式的局部截断误差为O(\Delta x^{4}+\Delta y^{4}),将公式(7)中第1式整理化简,利用记号

\frac{1}{\Delta x^{2}}=\beta,\frac{1}{\Delta y^{2}}=\gamma

可得

(\beta+\gamma)u_{i-1,j-1}+(10\gamma-2\beta)u_{i,j-1}+(\beta+\gamma)u_{i+1,j-1}+(10\beta-2\gamma)u_{i-1,j}-20(\beta+\gamma)u_{i,j}+(10\beta-2\gamma)u_{i+1,j}+(\beta+\gamma )u_{i-1,j+1}+(10\gamma-2\beta)u_{i,j+1}+(\beta+\gamma)u_{i+1,j+1}=-12\epsilon^{2}_{x}\epsilon^{2}_{y}f(x_{i},y_{j})

        该紧格式每一步计算都涉及9个点,所以公式(7)称为九点紧差分格式。

        该格式无法写成线性方程组\mathbf{A}x=\mathbf{b}的形式,只能写成

\begin{pmatrix} \eta_{2} & \xi & & & \\ \xi & \eta_{2} & \xi & 0 & \\ & & \ddots & & \\ & 0 & \xi & \eta_{2} & \xi \\ & & & \xi & \eta_{2} \end{pmatrix}\begin{pmatrix} u_{1,j-1}\\ u_{2,j-1}\\ \vdots\\ u_{m-2,j-1}\\ u_{m-1,j-1} \end{pmatrix}+\begin{pmatrix} -20\xi & \eta_{1} & & 0 & \\ \eta_{1} & -20\xi & \eta_{1} & & \\ & \ddots & \ddots & \ddots & \\ & & \eta_{1} & -20\xi & \eta_{1} \\ & 0 & & \eta_{1} & -20\xi \end{pmatrix}\begin{pmatrix} u_{1,j}\\ u_{2,j}\\ \vdots\\ u_{m-2,j}\\ u_{m-1,j} \end{pmatrix}+\begin{pmatrix} \eta_{2} & \xi & & & \\ \xi & \eta_{2} & \xi & 0 & \\ & & \ddots & & \\ & 0 & \xi & \eta_{2} & \xi \\ & & & \xi & \eta_{2} \end{pmatrix}\begin{pmatrix} u_{1,j+1}\\ u_{2,j+1}\\ \vdots\\ u_{m-2,j+1}\\ u_{m-1,j+1} \end{pmatrix}=\begin{pmatrix} -12\epsilon^{2}_{x}\epsilon^{2}_{y}f(x_{1},y_{j})-\xi (u_{0,j-1}+u_{0,j+1})-\eta_{1}u_{0,j}\\ -12\epsilon^{2}_{x}\epsilon^{2}_{y}f(x_{2},y_{j})\\ \vdots\\ -12\epsilon^{2}_{x}\epsilon^{2}_{y}f(x_{m-2},y_{j})\\ -12\epsilon^{2}_{x}\epsilon^{2}_{y}f(x_{m-1},y_{j})-\xi(u_{m,j-1}+u_{m,j+1})-\eta_{1}u_{m,j} \end{pmatrix}

其中,                          \xi=\beta+\gamma,\eta_{1}=10\beta-2\gamma,\eta_{2}=10\gamma-2\beta

记                                  \mathbf{u}_{j}=(u_{1,j},u_{2,j},\cdot\cdot\cdot,u_{m-1,j})^{T},0\leqslant j\leqslant n

则原数值格式可以简写为

 C(\mathbf{u}_{j-1}+\mathbf{u}_{j+1})+D\mathbf{u}_{j}=\mathbf{f}_{j},j=1,2,\cdot\cdot\cdot,n-1

其中,

C=\begin{pmatrix} \eta_{2} & \xi & & & \\ \xi & \eta_{2} & \xi & 0 & \\ & & \ddots & & \\ & 0 & \xi & \eta_{2} & \xi \\ & & & \xi & \eta_{2} \end{pmatrix}D=\begin{pmatrix} -20\xi & \eta_{1} & & 0 & \\ \eta_{1} & -20\xi & \eta_{1} & & \\ & \ddots & \ddots & \ddots & \\ & & \eta_{1} & -20\xi & \eta_{1} \\ & 0 & & \eta_{1} & -20\xi \end{pmatrix}

\mathbf{f}_{j}=\begin{pmatrix} -12\epsilon^{2}_{x}\epsilon^{2}_{y}f(x_{1},y_{j})-\xi (u_{0,j-1}+u_{0,j+1})-\eta_{1}u_{0,j}\\ -12\epsilon^{2}_{x}\epsilon^{2}_{y}f(x_{2},y_{j})\\ \vdots\\ -12\epsilon^{2}_{x}\epsilon^{2}_{y}f(x_{m-2},y_{j})\\ -12\epsilon^{2}_{x}\epsilon^{2}_{y}f(x_{m-1},y_{j})-\xi(u_{m,j-1}+u_{m,j+1})-\eta_{1}u_{m,j} \end{pmatrix}

        为解该方程组,将未知量\mathbf{u}_{j}按照下标拉长成一个列向量,并写出块矩阵形式,为

\begin{pmatrix} D & C & & & \\ C & D & C & & \\ & \ddots & \ddots & \ddots & \\ & & C & D & C\\ & & & C & D \end{pmatrix}\begin{pmatrix} \mathbf{u}_{1}\\ \mathbf{u}_{2}\\ \vdots\\ \mathbf{u}_{n-2}\\ \mathbf{u}_{n-1} \end{pmatrix}=\begin{pmatrix} \mathbf{f}_{1}-C\mathbf{u}_{0}\\ \mathbf{f}_{2}\\ \vdots\\ \mathbf{f}_{n-2}\\ \mathbf{f}_{n-1}-C\mathbf{u}_{n} \end{pmatrix}

上述方程组的高斯-赛德尔迭代公式为:

u^{(k+1)}_{i,j}=-\frac{1}{20\xi}[-12\epsilon^{2}_{x}\epsilon^{2}_{y}f(x_{i},y_{j})-\xi(u^{(k+1)}_{i-1,j-1}+u^{(k)}_{i-1,j+1}+u^{(k+1)}_{i+1,j-1}+u^{(k)}_{i+1,j+1})-\eta_{1}(u^{(k+1)}_{i-1,j}+u^{(k)}_{i+1,j})-\eta_{2}(u^{(k+1)}_{i,j-1}+u^{(k)}_{i,j+1})]\; (8)

其中,1\leqslant i \leqslant m-1, 1\leqslant j \leqslant n-1,加括号的上标k表示迭代次数。

三、算例实现

        采用九点紧差分格式求解椭圆型方程边值问题:

\left\{\begin{matrix} -(\frac{\partial^{2}u}{\partial x^{2}}+\frac{\partial^{2}u}{\partial y^{2}})=(\pi^{2}-1)e^{x}sin(\pi y),0<x<2,0<y<1,\\ u(0,y)=sin(\pi y),u(2,y)=e^{2}sin(\pi y),0\leqslant y\leqslant 1,\\ u(x,0)=u(x,1)=0,0<x<2 \end{matrix}\right.

已知该问题精确解为u(x,y)=e^{x}sin(\pi y)。分别取步长\Delta x=\Delta y=1/16\Delta x=\Delta y=1/32,输出6个节点(0.5i,0.25)(0.5i,0.5),i=1,2,3处的数值解和误差。要求在各节点处最大误差的迭代误差限为0.5\times10^{-10}

代码如下:(采用Gauss-Seidel迭代)


include <cmath>
#include <stdlib.h>
#include <stdio.h>
#define pi 3.14159265359int main(int argc, char* argv[])
{int m,n,i,j,k;double xa,xb,ya,yb,dx,dy,alpha,beta,gamma,err,maxerr;double *x,*y,**u,**g,**temp,kexi,eta1,eta2;double leftboundary(double y);double rightboundary(double y);double bottomboundary(double x);double topboundary(double x);double f(double x, double y);double **Gij(double *x, double *y, int m, int n);double exact(double x, double y);xa=0.0;xb=2.0;ya=0.0;yb=1.0;m=64;n=32;printf("m=%d, n=%d.\n",m,m);dx=(xb-xa)/m;dy=(yb-ya)/n;beta=1.0/(dx*dx);gamma=1.0/(dy*dy);kexi=beta+gamma;eta1=10*beta-2*gamma;eta2=10*gamma-2*beta;x=(double*)malloc(sizeof(double)*(m+1));for(i=0;i<=m;i++)x[i]=xa+i*dx;y=(double*)malloc(sizeof(double)*(n+1));for(j=0;j<=n;j++)y[j]=ya+j*dy;u=(double**)malloc(sizeof(double*)*(m+1));temp=(double**)malloc(sizeof(double*)*(m+1));for(i=0;i<=m;i++){u[i]=(double*)malloc(sizeof(double)*(n+1));temp[i]=(double*)malloc(sizeof(double)*(n+1));}for(j=0;j<=n;j++){u[0][j]=leftboundary(y[j]);u[m][j]=rightboundary(y[j]);}for(i=1;i<m;i++){u[i][0]=bottomboundary(x[i]);u[i][n]=topboundary(x[i]);}for(i=1;i<m;i++){for(j=1;j<n;j++)u[i][j]=0.0;}g=Gij(x,y,m,n);for(i=0;i<=m;i++){for(j=0;j<=n;j++)temp[i][j]=u[i][j];}k=0;do{maxerr=0.0;for(i=1;i<m;i++){for(j=1;j<n;j++){temp[i][j]=(g[i][j]-kexi*(u[i-1][j-1]+temp[i-1][j+1]+u[i+1][j-1]+temp[i+1][j+1])-eta1*(u[i-1][j]+temp[i+1][j])-eta2*(u[i][j-1]+temp[i][j+1]))/(-20*kexi);err=temp[i][j]-u[i][j];if(err>maxerr)maxerr=err;u[i][j]=temp[i][j];}}k=k+1;}while(maxerr>0.5*1e-10);printf("k=%d.\n",k);k=m/4;for(i=k;i<m;i=i+k){printf("(%.2f,0.25), y=%f, err=%.4e.\n",x[i],u[i][n/4],fabs(exact(x[i],y[n/4])-u[i][n/4]));}k=m/4;for(i=k;i<m;i=i+k){printf("(%.2f,0.50), y=%f, err=%.4e.\n",x[i],u[i][n/2],fabs(exact(x[i],y[n/2])-u[i][n/2]));}for(i=0;i<=m;i++){free(u[i]);free(temp[i]);}free(u);free(temp);free(x);free(y);return 0;
}double leftboundary(double y)
{return sin(pi*y);
}
double rightboundary(double y)
{return exp(1.0)*exp(1.0)*sin(pi*y);
}
double bottomboundary(double x)
{return 0.0;
}
double topboundary(double x)
{return 0.0;
}
double exact(double x, double y)
{return exp(x)*sin(pi*y);
}
double f(double x, double y)
{return (pi*pi-1)*exp(x)*sin(pi*y);
}
double **Gij(double *x, double *y, int m, int n)
{int i,j;double temp1,temp2,temp3,**ans;ans=(double**)malloc(sizeof(double*)*(m+1));for(i=0;i<=m;i++)ans[i]=(double*)malloc(sizeof(double)*(n+1));for(i=1;i<m;i++){for(j=1;j<n;j++){temp1=f(x[i-1],y[j-1])+10*f(x[i],y[j-1])+f(x[i+1],y[j-1]);temp2=f(x[i-1],y[j])+10*f(x[i],y[j])+f(x[i+1],y[j]);temp3=f(x[i-1],y[j+1])+10*f(x[i],y[j+1])+f(x[i+1],y[j+1]);ans[i][j]=-(temp1+temp3+10*temp2)/12.0;}}return ans;
}

 相同的问题,与五点菱形差分法计算结果进行了对比,结果如下:

\Delta x=\Delta y=1/16时,计算结果如下:

+++++++++++++九点紧差分格式++++++++++++++
m=32, n=16.
k=747.
(0.50,0.25), y=1.165829, err=6.7140e-06.
(1.00,0.25), y=1.922127, err=1.1487e-05.
(1.50,0.25), y=3.169047, err=1.4319e-05.
(0.50,0.50), y=1.648731, err=9.4951e-06.
(1.00,0.50), y=2.718298, err=1.6245e-05.
(1.50,0.50), y=4.481709, err=2.0250e-05.

+++++++++++++五点菱形差分格式++++++++++++
m=32,n=16.
k=887
(0.50,0.25), y=1.169343, err=3.5207e-03.
(1.00,0.25), y=1.928138, err=6.0228e-03.
(1.50,0.25), y=3.176531, err=7.4986e-03.
(0.50,0.50), y=1.653700, err=4.9790e-03.
(1.00,0.50), y=2.726799, err=8.5175e-03.
(1.50,0.50), y=4.492294, err=1.0605e-02.

\Delta x=\Delta y=1/32时,计算结果如下:

+++++++++++++九点紧差分格式++++++++++++++
m=64, n=32.
k=2790.
(0.50,0.25), y=1.165822, err=4.1552e-07.
(1.00,0.25), y=1.922116, err=7.1227e-07.
(1.50,0.25), y=3.169034, err=8.9066e-07.
(0.50,0.50), y=1.648722, err=5.8773e-07.
(1.00,0.50), y=2.718283, err=1.0074e-06.
(1.50,0.50), y=4.481690, err=1.2597e-06.

 

+++++++++++++五点菱形差分格式++++++++++++
m=64,n=32.
k=3315
(0.50,0.25), y=1.166702, err=8.7958e-04.
(1.00,0.25), y=1.923620, err=1.5048e-03.
(1.50,0.25), y=3.170908, err=1.8751e-03.
(0.50,0.50), y=1.649965, err=1.2439e-03.
(1.00,0.50), y=2.720410, err=2.1281e-03.
(1.50,0.50), y=4.484341, err=2.6518e-03.

四、结论

        从计算结果可知,对于九点紧差分格式来说,当步长减半时,误差减小为约1/16,可见其数值格式是四阶收敛的。同时,与五点菱形差分格式相比,九点紧差分法迭代步数更少,同时计算精度更高!

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

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

相关文章

qt5-入门-2D绘图-基础

参考&#xff1a; QPainter_w3cschool https://www.w3cschool.cn/learnroadqt/k7zd1j4l.html C GUI Programming with Qt 4, Second Edition 本地环境&#xff1a; win10专业版&#xff0c;64位&#xff0c;Qt 5.12 代码已经测试通过。其他例子日后更新。 目录 基础知识penb…

高德地图API入门使用vue

文章目录 最终效果一、在高德的开放平台申请key二、下载依赖&#xff1a;三、完整代码 最终效果 页面显示高德地图 一、在高德的开放平台申请key 在高德的开放平台申请key&#xff1a; https://console.amap.com/dev/key/app 申请的类型为web端&#xff08;js api&#xff…

LeetCode45:跳跃游戏Ⅱ

题目描述 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说&#xff0c;如果你在 nums[i] 处&#xff0c;你可以跳转到任意 nums[i j] 处: 0 < j < nums[i] i j < n 返回到达 nums[n …

如何防止源代码泄露?6种企业防泄密解决方案

在数字化转型浪潮中&#xff0c;源代码成为企业宝贵的核心资产&#xff0c;其安全性直接关系到企业的生存和发展。源代码泄露不仅会导致商业秘密外泄&#xff0c;还可能造成严重的经济损失和品牌信誉下降。为此&#xff0c;采用高效的防泄密措施&#xff0c;如华企盾DSC数据防泄…

php7.4在foreach中对使用数据使用无法??[]判读,无法使用引用传递

代码如下图&#xff1a;这样子在foreach中是无法修改class_history的。正确的应该是去掉??[]判断。 public function actionY(){$array [name>aaa,class_history>[[class_name>一班,class_num>1],[class_name>二班,class_num>2]]];foreach ($array[class_…

Linux环境下的编译和调试

本文目录 一、编译1. gcc/g编译器2. gcc/g安装3. 代码编译过程4. gcc编译 二、调试1. 下载gdb调试器2. gdb 调试器使用步骤 一、编译 1. gcc/g编译器 对于.c 格式的 C 文件&#xff0c;可以采用 gcc 或 g编译。 对于.cc、.cpp 格式的 C文件&#xff0c;应该采用 g进行编译。 …

密文域可逆信息隐藏技术综述(上)

加密图像可逆信息隐藏是一种加密原始图像后&#xff0c;在密文图像中可逆地隐藏附加数据&#xff0c;并且在数据提取后&#xff0c;原始图像可以被无损重建的技术。RDH-EI的分类如图1所示。 按对图像的加密方法&#xff0c;现有RDH-EI算法可分为对称加密域和非对称(公钥)加密域…

form1弹出子窗体form2,拖动子窗体判断是否离开父窗体区域,含源码(学习笔记)

一、效果&#xff08;进入和离开&#xff09; 子窗体到达父窗体边缘时变色。 二、代码分析 判断父窗体的目的&#xff0c;可以控制子窗体要随父窗体走。上面代码需要加以处理。 如&#xff1a;this.Location new Point(parentPoint.X distanceFromEdge, this.Location.Ydis…

抖音上线“星绘”APP,它有着什么样的特殊之处?

抖音上线“星绘”APP 前言 就在4月25日&#xff0c;抖音在App Store上线了一款名为“星绘”的App。该App以妙鸭相机为对标产品&#xff0c;拥有着强大的AI生图能力&#xff0c;而产品中的“AI分身”也十分有特色&#xff0c;那么这款“星绘”App究竟如何呢&#xff1f;我们接着…

2024最新UI发卡盗U/支持多语言/更新UI界面/支持多个主流钱包

本文来自&#xff1a;2024最新UI发卡盗U/支持多语言/更新UI界面/支持多个主流钱包 - 源码1688 应用介绍 简介&#xff1a; 2024最新UI发卡盗U/支持多语言/更新UI界面/支持多个主流钱包 自行检查后门&#xff0c;最好是部署智能合约后用合约地址来授权 包含转账支付页面盗U授…

Dokcer容器分布式搭建LNMP+wordpress论坛

目录 引言 一、架构环境 二、搭建容器 &#xff08;一&#xff09;自定义网络 &#xff08;二&#xff09;搭建nginx容器 1.文件准备 2.查看与编辑文件 3.生成镜像 4.创建容器 &#xff08;三&#xff09;搭建MySQL容器 1.文件准备 2.查看与编辑文件 3.生成镜像 …

python自动化操作docx

使用Python自动化处理Word文档 在日常工作中&#xff0c;我们经常需要处理大量的Word文档&#xff0c;这时自动化脚本就显得尤为重要。本文将介绍如何使用Python中的python-docx库来创建和修改Word文档。 安装python-docx库 在开始之前&#xff0c;确保你已经安装了python-d…

LabVIEW自动剪板机控制系统

LabVIEW自动剪板机控制系统 随着工业自动化的快速发展&#xff0c;钣金加工行业面临着生产效率和加工精度的双重挑战。传统的手动或脚踏式剪板机已无法满足现代生产的高效率和高精度要求&#xff0c;因此&#xff0c;自动剪板机控制系统的研究与开发成为了行业发展的必然趋势。…

解决Uncaught TypeError: Cannot read properties of null (reading ‘getAttribute‘)

问题&#xff1a; 用了element ui 的echart ,初始化时候找不到指定id的元素&#xff0c;导致的问题&#xff0c;如下 浏览器控制台输出的错误信息如下 Echars echarts.min.js:22 Uncaught TypeError: Cannot read properties of null (reading getAttribute)at echarts.min.…

动手学深度学习——从零实现softmax分类模型

1. 数据集 fashion mnist是一个由10个类别图像组成的服装分类数据集&#xff0c;共包含60000张训练集图像和10000张测试集图像&#xff0c; 前者用于训练模型参数&#xff0c;后者用于评估模型性能。 2.1 数据集下载 先进行依赖库导入&#xff1a; %matplotlib inline …

图像识别应用技术

⚠申明&#xff1a; 未经许可&#xff0c;禁止以任何形式转载&#xff0c;若要引用&#xff0c;请标注链接地址。 全文共计3077字&#xff0c;阅读大概需要3分钟 &#x1f308;更多学习内容&#xff0c; 欢迎&#x1f44f;关注&#x1f440;【文末】我的个人微信公众号&#xf…

Akamai 分布式“云+边缘”,打造下一代数字化基座

当下&#xff0c;数字化基础设施正逐步向分布式部署演化&#xff0c;云计算与边缘计算正在成为两大技术支柱。Gartner 数据显示&#xff0c;云服务占 IT 整体支出比例连年上涨&#xff0c;在过去一年已增长至12.1%&#xff1b;IDC 报告显示&#xff0c;截至2021年已有超过500亿…

Grafana页面嵌入自建Web应用页面

目录 一、应用场景 二、实现方式 1、修改Grafana配置文件 2、获取监控页面url 3、隐藏左侧和顶部菜单 一、应用场景 需要将Grafana监控页面嵌入自建Web应用页面&#xff0c;使Grafana监控页面成为自建Web应用的一部分。 二、实现方式 总体思路&#xff1a;修改Grafana配…

C++之STL-list+模拟实现

目录 一、list的介绍和基本使用的方法 1.1 list的介绍 1.2 list的基本使用方法 1.2.1 构造方法 1.2.2 迭代器 1.2.3 容量相关的接口 1.2.4 增删查改的相关接口 1.3 关于list迭代器失效的问题 二、模拟实现list 2.1 节点类 2.2 迭代器类 2.3 主类list类 2.3.1 成员变…

多线程同步

1.多线程并发 1).多线程并发引例 #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <assert.h> #include <pthread.h>int wg0; void *fun(void *arg) {for(int i0;i<1000;i){wg;printf("wg%d\n",wg);} } in…