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

偏微分方程算法之混合边界条件下的差分法

目录

一、研究目标

二、理论推导

三、算例实现

四、结论


一、研究目标

        我们在前几节中介绍了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)\\ \frac{\partial u(x,y)}{\partial \mathbf{n}}+\lambda(x,y)u=\mu(x,y),(x,y)\in\partial \Omega=\Gamma \end{matrix}\right.

其中,\Omega为矩形区域\Omega=[(x,y)|a\leqslant x\leqslant b,c\leqslant y\leqslant d]f(x,y)\Omega上的连续函数,\mathit{\mathbf{n}}\Gamma上的单位法向量,从而\frac{\partial u(x,y)}{\partial\mathbf{n}}表示方向导数,\lambda(x,y),\mu(x,y)\Gamma的连续函数且\lambda(x,y)非负。对于矩形区域\Omega而言,其边界上的法向量没有统一的表达式,需要对四条边界线段分别讨论。可见:

        在左边界\mathbf{n}_{1}=(-1,0),边界条件为(-\frac{\partial u}{\partial x}+\lambda(x,y)u)|_{(a,y)}=\mu_{1}(a,y)

        在右边界\mathbf{n}_{2}=(1,0),边界条件为(\frac{\partial u}{\partial x}+\lambda(x,y)u)|_{(b,y)}=\mu_{2}(b,y)

        在下边界\mathbf{n}_{3}=(0,-1),边界条件为(-\frac{\partial u}{\partial y}+\lambda(x,y)u)|_{(x,c)}=\mu_{3}(x,c)

        在上边界\mathbf{n}_{4}=(0,1),边界条件为(\frac{\partial u}{\partial y}+\lambda(x,y)u)|_{(x,d)}=\mu_{4}(x,d)

        于是,公式(1)可以具体写为:

\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(a,b)\times (c,d),\\ (\frac{\partial u(x,y)}{\partial x}-\lambda(x,y)u)|_{(a,y)}=\varphi_{1}(y),c\leqslant y\leqslant d,\\ (\frac{\partial u(x,y)}{\partial x}+\lambda(x,y)u)|_{(b,y)}=\varphi_{2}(y),c\leqslant y\leqslant d,\\ (\frac{\partial u(x,y)}{\partial y}-\lambda(x,y)u)|_{(x,c)}=\Psi_{1}(x),a\leqslant x\leqslant b,\\ (\frac{\partial u(x,y)}{\partial y})+\lambda(x,y)u)|_{(x,d)},\Psi_{2}(x),a\leqslant x\leqslant b \end{matrix}\right.

二、理论推导

        首先进行矩形区域\Omega的等距剖分,得到各网格节点(x_{i},y_{j}),且x_{i}=a+i\cdot\Delta x,i=0,1,\cdot\cdot\cdot,m\Delta x=(b-a)/my_{j}=c+j\cdot\Delta y,j=0,1,\cdot\cdot\cdot,n\Delta y=(c-d)/n。然后弱化原方程,使其仅在离散节点上成立,从而有

\left\{\begin{matrix} -(\frac{\partial^{2}u(x,y)}{\partial x^{2}}+\frac{\partial^{2}u(x,y)}{\partial y^{2}})|_{(x_{i},y_{j})}=f(x_{i},y_{j}),1\leqslant i\leqslant m-1,1\leqslant j\leqslant n-1,\\ \frac{\partial u(x,y)}{\partial x}|_{(x_{0},y_{j})}-\lambda(x_{0},y_{j})u(x_{0},y_{j})=\varphi_{1}(y_{j}),0\leqslant j\leqslant n, \\ \frac{\partial u(x,y)}{\partial x}|_{(x_{m},y_{j})}+\lambda(x_{m},y_{j})u(x_{m},y_{j})=\varphi_{2}(y_{j}),0\leqslant j\leqslant n, \\ \frac{\partial u(x,y)}{\partial y}|_{(x_{i},y_{0})}-\lambda(x_{i},y_{0})u(x_{i},y_{0})=\Psi_{1}(x_{i}),0\leqslant i\leqslant m, \\ \frac{\partial u(x,y)}{\partial y}|_{(x_{i},y_{n})}+\lambda(x_{i},y_{n})u(x_{i},y_{n})=\Psi_{2}(x_{i}),0\leqslant i\leqslant m. \end{matrix}\right.

        将上式中的一阶、二阶偏导数分别用关于一阶导数的中心差商和关于二阶导数的中心差商来近似,得

\left\{\begin{matrix} -(\frac{u(x_{i-1},y_{j})-2u(x_{i},y_{j})+u(x_{i+1},y_{j})}{\Delta x^{2}}+\frac{u(x_{i},y_{j-1})-2u(x_{i},y_{j})+u(x_{i},y_{j+1})}{\Delta y^{2}})\\ =f(x_{i},y_{j})+O(\Delta x^{2}+\Delta y^{2}),1\leqslant i\leqslant m-1,1\leqslant j\leqslant n-1,\\ \frac{u(x_{1},y_{j})-u(x_{-1},y_{j})}{2\Delta x}-\lambda(x_{0},y_{j})u(x_{0},y_{j})=\varphi_{1}(y_{j})+O(\Delta x^{2}),0\leqslant j\leqslant n,\\ \frac{u(x_{m+1},y_{j})-u(x_{m-1},y_{j})}{2\Delta x}+\lambda(x_{m},y_{j})u(x_{m},y_{j})=\varphi(y_{j})+O(\Delta x^{2}),0\leqslant j\leqslant n,\\ \frac{u(x_{i},y_{1})-u(x_{i},y_{-1})}{2\Delta y}-\lambda(x_{i},y_{0})u(x_{i},y_{0})=\Psi_{1}(x_{i})+O(\Delta y^{2}),0\leqslant i\leqslant m,\\ \frac{u(x_{i},y_{n+1})-u(x_{i},y_{n-1})}{2\Delta y}+\lambda(x_{i},y_{n})u(x_{i},y_{n})=\Psi_{2}(x_{i})+O(\Delta y^{2}),0\leqslant i\leqslant m. \end{matrix}\right.

        用数值解代替精确解并忽略高阶项,得到以下数值格式:

\left\{\begin{matrix} -(\frac{u_{i-1,j}-2u_{i,j}+u_{i+1,j}}{\Delta x^{2}}+\frac{u_{i,j-1}-2u_{i,j}+u_{i,j+1}}{\Delta y^{2}})=f_{i,j},1\leqslant i\leqslant m-1,1\leqslant j\geqslant n-1,\\ u_{1,j}-u_{-1,j}=2\Delta x(\varphi_{1}(y_{j})+\lambda_{0,j}u_{0,j}),0\leqslant j\leqslant n,\\ u_{m+1,j}-u_{m-1,j}=2\Delta x(\varphi_{2}(y_{j})-\lambda_{m,j}u_{m,j}),0\leqslant j\leqslant n,\\ u_{i,1}-u_{i,-1}=2\Delta y(\Psi_{1}(x_{i})+\lambda_{i,0}u_{i,0}),0\leqslant i\leqslant m,\\ u_{i,n+1}-u_{i,n-1}=2\Delta y(\Psi_{2}(x_{i})-\lambda_{i,n}u_{i,n}),0\leqslant i\leqslant m. \end{matrix}\right.(2)

其中,\lambda_{i,j}=\lambda(x_{i},y_{j}),f_{i,j}=f(x_{i},y_{j})。该格式的局部截断误差为O(\Delta x^{2}+\Delta y^{2}),同时需要处理其中的下标越界问题。由于函数的连续性,我们认为公式(2)中的第1式对i=0也成立,即有

-(\frac{u_{-1,j}-2u_{0,j}+u_{1,j}}{\Delta x^{2}}+\frac{u_{0,j-1}-2u_{0,j}+u_{0,j+1}}{\Delta y^{2}})=f_{i,j},1\leqslant j\leqslant n-1

        再成公式(2)的第2式中解出u_{-1,j}=u_{1,j}-2\Delta x(\varphi_{1}(y_{j})+\lambda_{0,j}u_{0,j})代入上式,得

-\frac{2u_{1,j}-2(1+\Delta x\lambda_{0,j})u_{0,j}}{\Delta x^{2}}-\frac{u_{0,j-1}-2u_{0,j}+u_{0,j+1}}{\Delta y^{2}}=f_{i,j}-\frac{2}{\Delta x}\varphi_{1}(y_{j}),1\leqslant j\leqslant n-1

同样,设公式(2)中的第1式分别对i=m,j=0,j=n成立,再分别从公式(2)的第3、4、5式中解出u_{m+1,j},u_{i,-1},u_{i,n+1}代入前面刚得到的方程,就可以处理掉越界下标,得到以下格式:

\left\{\begin{matrix} -\frac{u_{i-1,j}-2u_{i,j}+u_{i+1,j}}{\Delta x^{2}}-\frac{u_{i,j-1}-2u_{i,j}+u_{i,j+1}}{\Delta y^{2}}=f_{i,j},1\leqslant i\leqslant m-1,1\leqslant j\leqslant n-1,\\ -\frac{2u_{1,j}-2(1+\Delta x\lambda_{0,j})u_{0,j}}{\Delta x^{2}}-\frac{u_{0,j-1}-2u_{0,j}+u_{0,j+1}}{\Delta y^{2}}=f_{0,j}-\frac{2}{\Delta x}\varphi_{1}(y_{j}),1\leqslant j\leqslant n-1,\\ -\frac{2u_{m-1,j}-2(1+\Delta x\lambda_{m,j})u_{m,j}}{\Delta x^{2}}-\frac{u_{m,j-1}-2u_{m,j}+u_{m,j+1}}{\Delta y^{2}}=f_{m,j}+\frac{2}{\Delta x}\varphi_{2}(y_{j}),1\leqslant j\leqslant n-1,\\ -\frac{u_{i-1,0}-2u_{i,0}+u_{i+1,0}}{\Delta x^{2}}-\frac{2u_{i,1}-2(1+\Delta y\lambda_{i,0})u_{i,0}}{\Delta y^{2}}=f_{i,0}-\frac{2}{\Delta y}\Psi_{1}(x_{i}),1\leqslant i\leqslant m-1,\\ -\frac{u_{i-1,n}-2u_{i,n}+u_{i+1,n}}{\Delta x^{2}}-\frac{2u_{i,n-1}-2(1+\Delta y\lambda_{i,n})u_{i,n}}{\Delta y^{2}}=f_{i,n}+\frac{2}{\Delta y}\Psi_{2}(x_{i}),1\leqslant i\leqslant m-1 \end{matrix}\right.

        至此我们共有(m+1)x(n+1)个待求量u_{i,j},0\leqslant i\leqslant m,0\leqslant j\leqslant n,而现有(m-1)x(n-1)个关于内节点的方程,2(n-1)个关于左、右边界上的节点(不含端点)的方程及2(m-1)个关于上、下边界上的节点(也不含端点)的方程,还需要补充

(m+1)(n+1)-(m-1)(n-1)-2(n-1)-2(m-1)=4

个方程,也就是关于矩形区域的4个顶点的方程。为此,设公式(2)中第1式对i=0,j=0成立,即

-\frac{u_{-1,0}-2u_{0,0}+u_{1,0}}{\Delta x^{2}}-\frac{u_{0,-1}-2u_{0,0}+u_{0,1}}{\Delta y^{2}}=f_{0,0} \; (3)

        然后再从公式(2)的第2式和第4式中分别解出u_{-1,0}=u_{1,0}-2\Delta x(\varphi_{1}(y_{0})+\lambda_{0,0}u_{0,0})u_{0,-1}=u_{0,1}-2\Delta y(\Psi_{1}(x_{0})+\lambda_{0,0}u_{0,0}),代入公式(3)中,得到\Omega左下顶点处的方程:

-\frac{2u_{1,0}-2(1+\Delta x\lambda_{0,0})u_{0,0}}{\Delta x^{2}}-\frac{2u_{0,1}-2(1+\Delta y\lambda_{0,0})u_{0,0}}{\Delta y^{2}}=f_{0,0}-\frac{2}{\Delta x}\varphi_{1}(y_{0})-\frac{2}{\Delta y}\Psi_{1}(x_{0})

上式可以简化为

-\frac{2u_{1,0}}{\Delta x^{2}}+[\frac{2(1+\Delta x\lambda_{0,0})}{\Delta x^{2}}+\frac{2(1+\Delta y\lambda_{0,0})}{\Delta y^{2}}]u_{0,0}-\frac{2u_{0,1}}{\Delta y^{2}}=f_{0,0}-\frac{2}{\Delta x}\varphi_{1}(y_{0})-\frac{2}{\Delta y}\Psi_{1}(x_{0})

        同样,设公式(2)中第1式分别对i=m,j=0i=0,j=ni=m,j=n成立,然后再从公式(2)中第3式和第4式解出u_{m+1,0},u_{m,-1},u_{-1,n},u_{0,n+1},u_{m+1,n},u_{m,n+1}分别代入刚才得到的3个方程,就得到\Omega的右下顶点、左上顶点、和右上顶点处的方程,这样,我们就有了完整的处理带导数边界条件的椭圆型方程的数值格式:

\left\{\begin{matrix} -\frac{u_{i,j-1}}{\Delta y^{2}}-\frac{u_{i-1,j}}{\Delta x^{2}}+2[\frac{1}{\Delta x^{2}}+\frac{1}{\Delta y^{2}}]u_{i,j}-\frac{u_{i+1,j}}{\Delta x^{2}}-\frac{u_{i,j+1}}{\Delta y^{2}}=f_{i,j},1\leqslant i\leqslant m-1,1\leqslant j\leqslant n-1,\\ -\frac{u_{0,j-1}}{\Delta y^{2}}+[\frac{2(1+\Delta x\lambda_{0,j})}{\Delta x^{2}}+\frac{2}{\Delta y^{2}}]u_{0,j}-\frac{2u_{1,j}}{\Delta x^{2}}-\frac{u_{0,j+1}}{\Delta y^{2}}=f_{0,j}-\frac{2}{\Delta x}\varphi_{1}(y_{j}),1\leqslant j\leqslant n-1,\\ -\frac{u_{m,j-1}}{\Delta y^{2}}-\frac{2u_{m-1,j}}{\Delta x^{2}}+[\frac{2(1+\Delta x\lambda_{m,j})}{\Delta x^{2}}+\frac{2}{\Delta y^{2}}]u_{m,j}-\frac{u_{m,j+1}}{\Delta y^{2}}=f_{m,j}+\frac{2}{\Delta x}\varphi_{2}(y_{j}),1\leqslant j\leqslant n-1,\\ -\frac{u_{i-1,0}}{\Delta x^{2}}+[\frac{2}{\Delta x^{2}}+\frac{2(1+\Delta y\lambda_{i,0})}{\Delta y^{2}}]u_{i,0}-\frac{u_{i+1,0}}{\Delta x^{2}}-\frac{2u_{i,1}}{\Delta y^{2}}=f_{i,0}-\frac{2}{\Delta y}\Psi_{1}(x_{i}),1\leqslant i\leqslant m-1,\\ -\frac{u_{i-1,n}}{\Delta x^{2}}-\frac{2u_{i,n-1}}{\Delta y^{2}}+[\frac{2}{\Delta x^{2}}+\frac{2(1+\Delta y\lambda_{i,n})}{\Delta y^{2}}]u_{i,n-\frac{u_{i+1,n}}{\Delta x^{2}}}=f_{i,n}+\frac{2}{\Delta y}\Psi_{2}(x_{i}),1\leqslant i\leqslant m-1,\\ [\frac{2(1+\Delta x\lambda_{0,0})}{\Delta x^{2}}+\frac{2(1+\Delta y \lambda_{0,0})}{\Delta y^{2}}]u_{0,0}-\frac{2u_{1,0}}{\Delta x^{2}}-\frac{2u_{0,1}}{\Delta y^{2}}=f_{0,0}-\frac{2}{\Delta x}\varphi_{1}(y_{0})-\frac{2}{\Delta y}\Psi_{1}(x_{0}),\\ -\frac{2u_{m-1,0}}{\Delta x^{2}}+[\frac{2(1+\Delta x\lambda_{m,0})}{\Delta x^{2}}+\frac{2(1+\Delta y \lambda_{m,0})}{\Delta y^{2}}]u_{m,0}-\frac{2u_{m,1}}{\Delta y^{2}}=f_{m,0}+\frac{2}{\Delta x}\varphi_{2}(y_{0})-\frac{2}{\Delta y}\Psi_{1}(x_{m}),\\ -\frac{2u_{0,n-1}}{\Delta y^{2}}+[\frac{2(1+\Delta x\lambda_{0,n})}{\Delta x^{2}}+\frac{2(1+\Delta y\lambda_{0,n})}{\Delta y^{2}}]u_{0,n}-\frac{2u_{1,n}}{\Delta x^{2}}=f_{0,n}-\frac{2}{\Delta x}\varphi_{1}(y_{n})+\frac{2}{\Delta y}\Psi_{2}(x_{0}),\\ -\frac{2u_{m,n-1}}{\Delta y^{2}}-\frac{2u_{m-1,n}}{\Delta x^{2}}+[\frac{2(1+\Delta x\lambda_{m,n})}{\Delta x^{2}}+\frac{2(1+\Delta y\lambda_{m,n})}{\Delta y^{2}}]u_{m,n}=f_{m,n}+\frac{2}{\Delta x}\varphi_{2}(y_{n})+\frac{2}{\Delta y}\Psi_{2}(x_{m}). \end{matrix}\right.

        记\beta =\frac{1}{\Delta x^{2}},\gamma=\frac{1}{\Delta y^{2}},\alpha=2(\frac{1}{\Delta x^{2}}+\frac{1}{\Delta y^{2}}),\xi=\frac{2}{\Delta x},\eta=\frac{2}{\Delta y},有

\begin{Bmatrix} -\gamma u_{i,j-1}-\beta u_{i-1,j}+\alpha u_{i,j}-\beta u_{i+1,j}-\gamma u_{i,j+1}=f_{i,j},1\leqslant i\leqslant m-1,1\leqslant j\leqslant n-1,\\ -\gamma u_{0,j-1}+[\alpha+\xi \lambda_{0,j}]u_{0,j}-2\beta u_{1,j}-\gamma u_{0,j+1}=f_{0,j}-\xi\varphi_{1}(y_{j}),1\leqslant j\leqslant n-1,\\ -\gamma u_{m,j-1}-2\beta u_{m-1,j}+[\alpha+\xi\lambda_{m,j}]u_{m,j}-\gamma u_{m,j+1}=f_{m,j}+\xi \varphi_{2}(y_{j}),1\leqslant j\leqslant n-1,\\ -\beta u_{i-1,0}+[\alpha+\eta\lambda_{i,0}]u_{i,0}-\beta u_{i+1,0}-2\gamma u_{i,1}=f_{i,0}-\eta\Psi_{1}(x_{i}),1\leqslant i\leqslant m-1,\\ -2\gamma u_{i,n-1}-\beta u_{i-1,n}+[\alpha+\eta\lambda_{i,n}]u_{i,n}-\beta u_{i+1,n}=f_{i,n}+\eta\Psi_{2}(x_{i}),1\leqslant i\leqslant m-1,\\ [\alpha+(\xi+\eta)\lambda_{0,0}]u_{0,0}-2\beta u_{1,0}-2\gamma u_{0,1}=f_{0,0}-\xi\varphi_{1}(y_{0})-\eta\Psi_{1}(x_{0}),\\ -2\beta u_{m-1,0}+[\alpha+(\xi+\eta)\lambda_{m,0}]u_{m,0}-2\gamma u_{m,1}=f_{m,0}+\xi\varphi_{2}(y_{0})-\eta\Psi_{1}(x_{m}),\\ -2\gamma u_{0,n-1}+[\alpha+(\xi+\eta)\lambda_{0,n}]u_{0,n}-2\beta u_{1,n}=f_{0,n}-\xi \varphi_{1}(y_{n})+\eta\Psi_{2}(x_{0}),\\ -2\gamma u_{m,n-1}-2\beta u_{m-1,n}+[\alpha+(\xi+\eta)\lambda_{m,n}]u_{m,n}=f_{m,n}+\xi\varphi_{2}(y_{n})+\eta\Psi_{2}(x_{m}). \end{Bmatrix}\;(4)

        为计算分别,可将上述方程组写成矩阵形式。

        首先,将公式(4)中第4、6、7式写成:

\begin{pmatrix} \alpha+(\xi+\eta)\lambda_{0,0} & -2\beta & & & & & \\ -\beta & \alpha+\eta\lambda_{1,0} & -\beta & & & & \\ & -\beta & \alpha+\eta\lambda_{2,0} & -\beta & & & \\ & & \ddots & \ddots & \ddots & & \\ & & & -\beta & \alpha+\eta\lambda_{m-2,0} & -\beta & \\ & & & & -\beta & \alpha+\eta\lambda_{m-1,0} & -\beta\\ & & & & & -2\beta & \alpha+(\xi+\eta)\lambda_{m,0} \end{pmatrix}+\begin{pmatrix} u_{0,0}\\ u_{1,0}\\ u_{2,0}\\ \vdots\\ u_{m-2,0}\\ u_{m-1,0}\\ u_{m,0} \end{pmatrix}+\begin{pmatrix} -2\gamma & & & & & & \\ & -2\gamma & & & & & \\ & & -2\gamma & & & & \\ & & & -2\gamma & & & \\ & & & & -2\gamma & & \\ & & & & & -2\gamma & \\ & & & & & & -2\gamma \end{pmatrix}\begin{pmatrix} u_{0,1}\\ u_{1,1}\\ u_{2,1}\\ \vdots\\ u_{m-2,1}\\ u_{m-1,1}\\ u_{m,1} \end{pmatrix}=\begin{pmatrix} f_{0,0}-\eta\Psi_{1}(x_{0})-\xi\varphi_{1}(y_{0})\\ f_{1,0}-\eta\Psi_{1}(x_{1})\\ f_{2,0}-\eta\Psi_{1}(x_{2})\\ \vdots\\ f_{m-2,0}-\eta\Psi_{1}(x_{m-2})\\ f_{m-1,0}-\eta\Psi_{1}(x_{m-1})\\ f_{m,0}-\eta\Psi_{1}(x_{m})-\xi\varphi_{2}(y_{0}) \end{pmatrix} \; (5)

         上面的式子可以简记为

C\mathbf{u_{0}}+2A\mathbf{u}_{1}=\mathbf{f}_{0}

其中,A=-\gamma II为m+1阶单位矩阵,且C为公式(5)最左端的三对角矩阵,\mathbf{f}_{0}为公式(5)右端的向量,\mathbf{u}_{j}=(u_{0,j},u_{1,j},\cdot\cdot\cdot ,u_{m-1,j},u_{m,j})^{T},0\leqslant j\leqslant n。接着,公式(4)中的第1,2,3式可以写成

\begin{pmatrix} -\gamma & & & & & & \\ & -\gamma & & & & & \\ & & -\gamma & & & & \\ & &\ddots &\ddots &\ddots & & \\ & & & & -\gamma & & \\ & & & & & -\gamma & \\ & & & & & & -\gamma \end{pmatrix}\begin{pmatrix} u_{0,j-1}\\ u_{1,j-1}\\ u_{2,j-1}\\ \vdots\\ u_{m-2,j-1}\\ u_{m-1,j-1}\\ u_{m,j-1} \end{pmatrix}+\begin{pmatrix} \alpha+\xi\lambda_{0,j} & -2\beta & & & & & \\ -\beta & \alpha & -\beta & & & & \\ & -\beta & \alpha & -\beta & & & \\ & & \ddots & \ddots & \ddots & & \\ & & & -\beta & \alpha & -\beta & \\ & & & & -\beta & \alpha & -\beta\\ & & & & & -2\beta & \alpha+\xi\lambda_{m,j} \end{pmatrix}\begin{pmatrix} u_{0,j}\\ u_{1,j}\\ u_{2,j}\\ \vdots\\ u_{m-2,j}\\ u_{m-1,j}\\ u_{m,j} \end{pmatrix}+\begin{pmatrix} -\gamma & & & & & & \\ & -\gamma & & & & & \\ & & -\gamma & & & & \\ & &\ddots &\ddots &\ddots & & \\ & & & & -\gamma & & \\ & & & & & -\gamma & \\ & & & & & & -\gamma \end{pmatrix}\begin{pmatrix} u_{0,j+1}\\ u_{1,j+1}\\ u_{2,j+1}\\ \vdots\\ u_{m-2,j+1}\\ u_{m-1,j+1}\\ u_{m,j+1} \end{pmatrix}=\begin{pmatrix} f_{0,j}-\xi \varphi_{1}(y_{j})\\ f_{1,j}\\ f_{2,j}\\ \vdots\\ f_{m-2,j}\\ f_{m-1,j}\\ f_{m,j}+\xi \varphi_{2}(y_{j}) \end{pmatrix}\;(6),1\leqslant j\leqslant n-1

         该式可以简记为

A\mathbf{u}_{j-1}+B_{j}\mathbf{u}_{j}+A\mathbf{u}_{j+1}=\mathbf{f}_{j},1\leqslant j\leqslant n-1

其中,B_{j}为公式(6)中的三对角矩阵,\mathbf{f}_{j}为公式(6)右端的向量。最后,公式(4)的第5、8、9式可以写成

\begin{pmatrix} -2\gamma & & & & & & \\ & -2\gamma & & & & & \\ & & -2\gamma & & & & \\ & & \ddots& \ddots& \ddots& & \\ & & & & -2\gamma & & \\ & & & & & -2\gamma & \\ & & & & & & -2\gamma \end{pmatrix}\begin{pmatrix} u_{0,n-1}\\ u_{1,n-1}\\ u_{2,n-1}\\ \vdots\\ u_{m-2,n-1}\\ u_{m-1,n-1}\\ u_{m,n-1} \end{pmatrix}+\begin{pmatrix} \alpha+(\xi+\eta)\lambda_{0,n} & -2\beta & & & & & \\ -\beta & \alpha+\eta\lambda_{1,n} & -\beta & & & & \\ & -\beta & \alpha+\eta\lambda_{2,n} & -\beta & & & \\ & & \ddots & \ddots & \ddots & & \\ & & & -\beta & \alpha+\eta\lambda_{m-2,n} & -\beta & \\ & & & & -\beta & \alpha+\eta\lambda_{m-1,n} & -\beta\\ & & & & & -2\beta & \alpha+(\xi+\eta)\lambda_{m,n} \end{pmatrix}\begin{pmatrix} u_{0,n}\\ u_{1,n}\\ u_{2,n}\\ \vdots\\ u_{m-2,n}\\ u_{m-1,n}\\ u_{m,n} \end{pmatrix}==\begin{pmatrix} f_{0,n}+\eta\Psi_{1}(x_{0})-\xi\varphi_{1}(y_{n})\\ f_{1,n}+\eta\Psi_{2}(x_{1})\\ f_{2,n}-\eta\Psi_{2}(x_{2})\\ \vdots\\ f_{m-2,n}+\eta\Psi_{2}(x_{m-2})\\ f_{m-1,n}+\eta\Psi_{2}(x_{m-1})\\ f_{m,n}+\eta\Psi_{2}(x_{m})+\xi\varphi_{2}(y_{n}) \end{pmatrix} \; (7)

        该式可以简记为

2A\mathbf{u}_{n-1}+D\mathbf{u}_{n}=\mathbf{f}_{n}

其中,D为公式(7)中的三对角矩阵,\mathbf{f}_{n}为公式(7)右端的向量。于是,由公式(5)、(6)、(7)可得到公式(4)写成块三对角矩阵为

\begin{pmatrix} C & 2A & & & & & \\ A & B_{1} & A & & & & \\ & A & B_{2} & A & & & \\ & & \ddots & \ddots & \ddots & & \\ & & & A & B_{m-2} & A & \\ & & & & A & B_{m-1} & A\\ & & & & & 2A & D \end{pmatrix}\begin{pmatrix} \mathbf{u}_{0}\\ \mathbf{u}_{1}\\ \mathbf{u}_{2}\\ \vdots\\ \mathbf{u}_{m-2}\\ \mathbf{u}_{m-1}\\ \mathbf{u}_{m} \end{pmatrix}=\begin{pmatrix} \mathbf{f}_{0}\\ \mathbf{f}_{1}\\ \mathbf{f}_{2}\\ \vdots\\ \mathbf{f}_{m-2}\\ \mathbf{f}_{m-1}\\ \mathbf{f}_{m} \end{pmatrix}\;(8)

        采用Gauss-Seidel迭代法求解公式(8)。

三、算例实现

        用差分格式-公式(8)求解椭圆型方程混合边值问题:

\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,\\ (\frac{\partial u(x,y)}{\partial x}-(x^{2}+y^{2})u)|_{(0,y)}=(1-y^{2})sin(\pi y),0\leqslant y\leqslant 1,\\ (\frac{\partial u(x,y)}{\partial x}+(x^{2}+y^{2})u)|_{(2,y)}=(5+y^{2})e^{2}sin(\pi y),0\leqslant y\leqslant 1,\\ (\frac{\partial u(x,y)}{\partial y}-(x^{2}+y^{2})u)|_{(x,c)}=\pi e^{x},0\leqslant x\leqslant 1,\\ (\frac{\partial u(x,y)}{\partial y}+(x^{2}+y^{2})u)|_{(x,d)}=-\pi e^{x},0\leqslant x\leqslant 1 \end{matrix}\right.

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

代码如下:


#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,maxerr;double *x,*y,**u,**v,**lambda,*d,kexi,eta,temp;double f(double x, double y);double lambda_function(double x, double y);double phi1(double y);double phi2(double y);double psi1(double x);double psi2(double x);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,n);dx=(xb-xa)/m;dy=(yb-ya)/n;beta=1.0/(dx*dx);gamma=1.0/(dy*dy);alpha=2*(beta+gamma);kexi=2.0/dx;eta=2.0/dy;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));v=(double**)malloc(sizeof(double*)*(m+1));lambda=(double**)malloc(sizeof(double*)*(m+1));for(i=0;i<=m;i++){u[i]=(double*)malloc(sizeof(double)*(n+1));v[i]=(double*)malloc(sizeof(double)*(n+1));lambda[i]=(double*)malloc(sizeof(double)*(n+1));}for(i=0;i<=m;i++){for(j=0;j<=n;j++){u[i][j]=0.0;v[i][j]=0.0;lambda[i][j]=lambda_function(x[i],y[j]);}}d=(double*)malloc(sizeof(double)*(m+1));k=0;do{maxerr=0.0;for(i=0;i<=m;i++)d[i]=f(x[i],y[0])-eta*psi1(x[i]);d[0]=d[0]-kexi*phi1(y[0]);d[m]=d[m]+kexi*phi2(y[0]);v[0][0]=(d[0]+2*gamma*u[0][1]+2*beta*u[1][0])/(alpha+(kexi+eta)*lambda[0][0]);for(i=1;i<m;i++)v[i][0]=(d[i]+2*gamma*u[i][1]+beta*(v[i-1][0]+u[i+1][0]))/(alpha+eta*lambda[i][0]);v[m][0]=(d[m]+2*gamma*u[m][1]+2*beta*v[m-1][0])/(alpha+(kexi+eta)*lambda[m][0]);for(j=1;j<n;j++){for(i=0;i<=m;i++){d[i]=f(x[i],y[j]);}d[0]=d[0]-kexi*phi1(y[j]);d[m]=d[m]+kexi*phi2(y[j]);v[0][j]=(d[0]+gamma*(u[0][j+1]+v[0][j-1])+2*beta*u[1][j])/(alpha+kexi*lambda[0][j]);for(i=1;i<m;i++){v[i][j]=(d[i]+gamma*(v[i][j-1]+u[i][j+1])+beta*(v[i-1][j]+u[i+1][j]))/alpha;}v[m][j]=(d[m]+gamma*(v[m][j-1]+u[m][j+1])+2*beta*v[m-1][j])/(alpha+kexi*lambda[m][j]);}for(i=0;i<=m;i++)d[i]=f(x[i],y[n])+eta*psi2(x[i]);d[0]=d[0]-kexi*phi1(y[n]);d[m]=d[m]+kexi*phi2(y[n]);v[0][n]=(d[0]+2*gamma*v[0][n-1]+2*beta*u[1][n])/(alpha+(kexi+eta)*lambda[0][n]);for(i=1;i<m;i++)v[i][n]=(d[i]+2*gamma*v[i][n-1]+beta*(v[i-1][n]+u[i+1][n]))/(alpha+eta*lambda[i][n]);v[m][n]=(d[m]+2*gamma*v[m][n-1]+2*beta*v[m-1][n])/(alpha+(kexi+eta)*lambda[m][n]);for(i=0;i<=m;i++){for(j=0;j<=n;j++){temp=fabs(u[i][j]-v[i][j]);if(temp>maxerr)maxerr=temp;u[i][j]=v[i][j];}}k=k+1;}while((maxerr>0.5*1e-10)&&(k<=1e+8));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(v[i]);free(lambda[i]);}free(u);free(v);free(lambda);free(x);free(y);free(d);return 0;
}double f(double x, double y)
{return (pi*pi-1)*exp(x)*sin(pi*y);
}
double lambda_function(double x, double y)
{return x*x+y*y;
}
double phi1(double y)
{return (1-y*y)*sin(pi*y);
}
double phi2(double y)
{return (5.0+y*y)*exp(2.0)*sin(pi*y);
}
double psi1(double x)
{return pi*exp(x);
}
double psi2(double x)
{return -pi*exp(x);
}
double exact(double x, double y)
{return exp(x)*sin(pi*y);
}

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

m=32,n=16.
k=4323
(0.50,0.25), y=1.152179, err=1.3643e-02.
(1.00,0.25), y=1.911016, err=1.1100e-02.
(1.50,0.25), y=3.162159, err=6.8738e-03.
(0.50,0.50), y=1.638607, err=1.0115e-02.
(1.00,0.50), y=2.711255, err=7.0265e-03.
(1.50,0.50), y=4.479936, err=1.7526e-03.

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

m=64,n=32.
k=16007
(0.50,0.25), y=1.162412, err=3.4097e-03.
(1.00,0.25), y=1.919341, err=2.7745e-03.
(1.50,0.25), y=3.167313, err=1.7193e-03.
(0.50,0.50), y=1.646193, err=2.5286e-03.
(1.00,0.50), y=2.716524, err=1.7575e-03.
(1.50,0.50), y=4.481249, err=4.3972e-04.

四、结论

        从计算结果可知,当步长减小为1/2时,误差减小为原来的1/4,可见该数值格式是二阶收敛的。

相关文章:

偏微分方程算法之混合边界条件下的差分法

目录 一、研究目标 二、理论推导 三、算例实现 四、结论 一、研究目标 我们在前几节中介绍了Poisson方程的边值问题&#xff0c;接下来对椭圆型偏微分方程的混合边值问题进行探讨&#xff0c;研究对象为&#xff1a; 其中&#xff0c;为矩形区域&#xff0c;为上的连续函数…...

apollo资料整理

Application X: Application X Apollo: Apollo 自动驾驶开放平台 Cyber RT API tutorial — Cyber RT Documents documentation Cyber RT API tutorial — Cyber RT Documents documentation GitHub - daohu527/dig-into-apollo: Apollo notes (Apollo学习笔记) - Apollo l…...

森林消防新利器:高扬程水泵的革新与应用/恒峰智慧科技

随着全球气候变化的加剧&#xff0c;森林火灾的频发已成为威胁生态安全的重要问题。在森林消防工作中&#xff0c;高效、快速的水源供给设备显得尤为重要。近年来&#xff0c;高扬程水泵的广泛应用&#xff0c;为森林消防工作带来了新的希望与突破。 一、高扬程水泵的技术优势 …...

Microsoft Universal Print 与 SAP 集成教程

引言 从 SAP 环境打印是许多客户的要求。例如数据列表打印、批量打印或标签打印。此类生产和批量打印方案通常使用专用硬件、驱动程序和打印解决方案来解决。 Microsoft Universal Print 是一种基于云的打印解决方案&#xff0c;它允许组织以集中化的方式管理打印机和打印机驱…...

VBA在Excel中字母、数字的相互转化

VBA在Excel中字母、数字的相互转化 字母转数字的方法 数字转字母的方法 众所周知,Excel表中的行以数字展示,列用字母展示,如下图: 编程时,很多时候需要将列的字母转变为数字使用,如cells(num1,num2).value等,不知大家是怎么将字母转化为数字的,Excel是否有其他方式…...

【C语言】——联合体与枚举

【C语言】——联合体与枚举 一、联合体1.1、联合体类型的声明1.2、联合体的特点1.3、相同成员的结构体和联合体对比1.4、联合体的大小计算1.5、联合体的应用举例 二、枚举2.1、枚举类型的声明2.2、枚举类型的优点 一、联合体 1.1、联合体类型的声明 联合体也叫做共用体   与…...

java线上问题排查之内存分析(三)

java线上问题排查之内存分析 使用top命令 top命令显示的结果列表中&#xff0c;会看到%MEM这一列&#xff0c;这里可以看到你的进程可能对内存的使用率特别高。以查看正在运行的进程和系统负载信息&#xff0c;包括cpu负载、内存使用、各个进程所占系统资源等。 2.用jstat命令…...

中电金信:金Gien乐道 | 4月要闻速览,精彩再回顾

中国电子党组副书记、总经理李立功一行调研中电金信 4月10日&#xff0c;中国电子党组副书记、总经理李立功一行赴中电金信进行调研&#xff0c;深入听取了中电金信经营发展情况、研发工作及“源启”行业数字底座平台的汇报&#xff0c;并参观了公司展厅和科技研发场所&#xf…...

Java将文件目录转成树结构

在实际开发中经常会遇到返回树形结构的场景&#xff0c;特别是在处理文件系统或者是文件管理系统中。下面就介绍一下怎么将文件路径转成需要的树形结构。 在Java中&#xff0c;将List<String>转换成树状结构&#xff0c;需要定义一个树节点类&#xff08;TreeNode&#…...

硬件工程师必读:10条职业发展黄金法则!

在快速发展的科技时代&#xff0c;硬件工程师作为推动技术创新和产业升级的重要力量&#xff0c;其职业发展之路既充满挑战也蕴含无限机遇。为了在这条道路上稳步前行&#xff0c;我们首先需要了解硬件产品的研发流程。 在这个过程中&#xff0c;公司内的每个岗位都发挥着不可或…...

Redis是什么? 日常运维 Redis 需要注意什么 ? 怎么降低Redis 内存使用 节省内存?

你的项目或许已经使用 Redis 很长时间了&#xff0c;但在使用过程中&#xff0c;你可能还会或多或少地遇到以下问题&#xff1a; 我的 Redis 内存为什么增长这么快&#xff1f;为什么我的 Redis 操作延迟变大了&#xff1f;如何降低 Redis 故障发生的频率&#xff1f;日常运维…...

【Android项目】“追茶到底”项目介绍

没有多的介绍&#xff0c;这里只是展示我的项目效果&#xff0c;后面会给出具体的代码实现。 一、用户模块 1、注册&#xff08;第一次登陆的话需要先注册账号&#xff09; 2、登陆&#xff08;具有记住最近登录用户功能&#xff09; 二、点单模块 1、展示饮品列表 2、双向联动…...

机试:进制转换问题

十进制转任意进制 简单回忆一下十进制我们是怎么转换成二进制的&#xff08;短除法&#xff09;&#xff1a; 我们会将十进制数不断的进行除2操作&#xff0c;并且记录下每一次的余数&#xff08;这个余数就是我们最终求的二进制数的组成部分&#xff09;。 以下以12D举例&a…...

目标检测实战(十五): 使用YOLOv7完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)

文章目录 一、目标检测介绍二、YOLOv7介绍三、源码/论文获取四、环境搭建4.1 环境检测 五、数据集准备六、 模型训练七、模型验证八、模型测试九、错误总结9.1 错误1-numpy jas mp attribute int9.2 错误2-测试代码未能跑出检测框9.3 错误3- Command git tag returned non-zero…...

github中fasttext库README官文文档翻译

参考链接&#xff1a;fastText/python/README.md at main facebookresearch/fastText (github.com) fastText模块介绍 fastText 是一个用于高效学习单词表述和句子分类的库。在本文档中&#xff0c;我们将介绍如何在 python 中使用 fastText。 环境要求 fastText 可在现代 …...

WouoUIPagePC端实现

WouoUIPagePC端实现 WouoUIPage是一个与硬件平台无关&#xff0c;纯C语言的UI库&#xff08;目前只能应用于128*64的单色OLED屏幕上&#xff0c;后期会改进&#xff0c;支持更多尺寸&#xff09;。因此&#xff0c;我们可以在PC上实现它&#xff0c;本文就以在PC上使用 VScode…...

W801学习笔记十九:古诗学习应用——下

经过前两章的内容&#xff0c;背唐诗的功能基本可以使用了。然而&#xff0c;仅有一种模式未免显得过于单一。因此&#xff0c;在本章中对其进行扩展&#xff0c;增加几种不同的玩法&#xff0c;并且这几种玩法将采用完全不同的判断方式。 玩法一&#xff1a;三分钟限时挑战—…...

类加载器ClassLoad-jdk1.8

类加载器ClassLoad-jdk1.8 1. 类加载器的作用2. 类加载器的种类&#xff08;JDK8&#xff09;3. jvm内置类加载器如何搜索加载类--双亲委派模型4. 如何打破双亲委派模型--自定义类加载器5. 自定义一个类加载器5.1 为什么需要自定义类加载器5.2 自定义一个类加载器 6. java代码加…...

24年最新AI数字人简单混剪

24年最新AI数字人简单混剪 网盘自动获取 链接&#xff1a;https://pan.baidu.com/s/1lpzKPim76qettahxvxtjaQ?pwd0b8x 提取码&#xff1a;0b8x...

免备案香港主机会影响网站收录?

免备案香港主机会影响网站收录?前几天遇到一个做电子商务的朋友说到这个使用免备案香港主机的完整会不会影响网站的收录问题&#xff0c;这个问题也是站长关注较多的问题之一。小编查阅了百度官方规则说明&#xff0c;应该属于比较全面的。下面小编给大家介绍一下使用免备案香…...

低代码工业组态数字孪生平台

2024 两会热词「新质生产力」凭借其主要特征——高科技、高效能及高质量&#xff0c;引发各界关注。在探索构建新质生产力的重要议题中&#xff0c;数据要素被视为土地、劳动力、资本和技术之后的第五大生产要素。数据要素赋能新质生产力发展主要体现为&#xff1a;生产力由生产…...

代码随想录第三十八天(完全背包问题)|爬楼梯(第八期模拟笔试)|零钱兑换|完全平方数

爬楼梯&#xff08;第八期模拟笔试&#xff09; 该题也是昨天的完全背包排列问题&#xff0c;解法相同&#xff0c;将遍历顺序进行调换 import java.util.*; public class Main{public static void main (String[] args) {Scanner scnew Scanner(System.in);int nsc.nextInt(…...

idea常用知识点随记

idea常用知识点随记 1. 打开idea隐藏的commit窗口2. idea中拉取Git分支代码3. idea提示代码报错&#xff0c;项目编译没有报错4. idea中实体类自动生成序列号5. idea隐藏当前分支未commit代码6. idea拉取新建分支的方法 1. 打开idea隐藏的commit窗口 idea左上角File→Settings…...

(双指针) 有效三角形的个数 和为s的两个数字 三数之和 四数之和

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 文章目录 前言 一、有效三角形的个数&#xff08;medium&#xff09; 1.1、题目 1.2、讲解算法原理 1.3、编写代码 二、和为s的两个数字 2.1、题目 2.2、讲解算…...

力扣每日一题114:二叉树展开为链表

题目 中等 提示 给你二叉树的根结点 root &#xff0c;请你将它展开为一个单链表&#xff1a; 展开后的单链表应该同样使用 TreeNode &#xff0c;其中 right 子指针指向链表中下一个结点&#xff0c;而左子指针始终为 null 。展开后的单链表应该与二叉树 先序遍历 顺序相同…...

Linux系统下使用LVM扩展逻辑卷的步骤指南

Linux系统下使用LVM扩展逻辑卷的步骤指南 文章目录 Linux系统下使用LVM扩展逻辑卷的步骤指南前言一、逻辑卷管理&#xff08;LVM&#xff09;简介二、扩展逻辑卷步骤1. 检查当前的磁盘布局2. 创建新的分区3. 更新内核的分区表4. 初始化新的物理卷5. 将物理卷添加到卷组6. 调整逻…...

探索AI编程新纪元:从零开始的智能编程之旅

提示&#xff1a;Baidu Comate 智能编码助手是基于文心大模型&#xff0c;打造的新一代编码辅助工具 文章目录 前言AI编程概述&#xff1a;未来已来场景需求&#xff1a;从简单到复杂&#xff0c;无所不包体验步骤&#xff1a;我的AI编程初探试用感受&#xff1a;双刃剑下的深思…...

RustGUI学习(iced)之小部件(三):如何使用下拉列表pick_list?

前言 本专栏是学习Rust的GUI库iced的合集,将介绍iced涉及的各个小部件分别介绍,最后会汇总为一个总的程序。 iced是RustGUI中比较强大的一个,目前处于发展中(即版本可能会改变),本专栏基于版本0.12.1. 概述 这是本专栏的第三篇,主要讲述下拉列表pick_list部件的使用,会…...

【OceanBase诊断调优】—— Unit 迁移问题的排查方法

适用版本&#xff1a;V2.1.x、V2.2.x、V3.1.x、V3.2.x 本文主要介绍 OceanBase 数据集在副本迁移过程中遇到的问题的排查方法。 适用版本 V2.1.x、V2.2.x、V3.1.x、V3.2.x 手动调度迁移问题的排查 OceanBase 数据库的 RootService 模块负责 Unit 迁移的调度&#xff0c;如果…...

[极客大挑战 2019]PHP

1.通过目录扫描找到它的备份文件&#xff0c;这里的备份文件是它的源码。 2.源码当中涉及到的关键点就是魔术函数以及序列化与反序列化。 我们提交的select参数会被进行反序列化&#xff0c;我们要构造符合输出flag条件的序列化数据。 但是&#xff0c;这里要注意的就是我们提…...

数据结构之跳跃表

跳跃表 跳跃表&#xff08;skiplist&#xff09;是一种随机化的数据&#xff0c; 由 William Pugh 在论文《Skip lists: a probabilistic alternative to balanced trees》中提出&#xff0c; 跳跃表以有序的方式在层次化的链表中保存元素&#xff0c; 效率和平衡树媲美 —— …...

搜维尔科技:动作捕捉解决方案:销售、服务、培训和支持

动作捕捉解决方案&#xff1a;销售、服务、培训和支持 搜维尔科技&#xff1a;动作捕捉解决方案&#xff1a;销售、服务、培训和支持l...

数据库管理-第184期 23ai:干掉MongoDB的不一定是另一个JSON数据库(20240507)

数据库管理184期 2024-05-07 数据库管理-第184期 23ai:干掉MongoDB的不一定是另一个JSON数据库&#xff08;20240507&#xff09;1 JSON需求2 关系型表设计3 JSON关系型二元性视图3 查询视图总结 数据库管理-第184期 23ai:干掉MongoDB的不一定是另一个JSON数据库&#xff08;20…...

刷代码随想录有感(58):二叉树的最近公共祖先

题干&#xff1a; 代码&#xff1a; class Solution { public:TreeNode* traversal(TreeNode* root, TreeNode* p, TreeNode* q){if(root NULL)return NULL;if(root p || root q)return root;TreeNode* left traversal(root->left, p, q);TreeNode* right traversal(r…...

[开发|安卓] Android Studio 开发环境配置

Android Studio下载 Android Studio下载地址 下载SDK依赖 1.点击左上角菜单 2.选择工具 3.打开SDK管理中心 4.下载项目目标Android版本的SDK 配置安卓虚拟机 1.打开右上角的设备管理 2.选择合适的手机规格 3.下载并选择项目目标Android系统 4.点击完成配置 …...

开发 Chrome 浏览器插件入门

目录 前言 一&#xff0c;创建插件 1.创建一个新的目录 2.编写清单文件 二&#xff0c;高级清单文件 1.编写放置右窗口 2.常驻的后台JS或后台页面 3.event-pages 短周期使用 三&#xff0c;Chrome 扩展 API 函数 1.浏览器操作函数 2.内容脚本函数 3.后台脚本函数 4…...

在数字化转型的浪潮中,CBDB百数服务商如何破浪前行?

在信息化时代&#xff0c;传统咨询企业面临着数字化转型的挑战与机遇。如何利用数字化技术提升业务效率、增强客户黏性&#xff0c;成为了行业关注的焦点。云南析比迪彼企业管理有限公司&#xff08;CBDB&#xff09;作为云南地区的企业咨询服务提供商&#xff0c;率先与百数展…...

程序员的实用神器

在软件开发的海洋中&#xff0c;程序员的实用神器如同航海中的指南针&#xff0c;帮助他们导航、加速开发、优化代码质量&#xff0c;并最终抵达成功的彼岸。这些工具覆盖了从代码编写、版本控制到测试和部署的各个环节。然而&#xff0c;程序员们通常会有一套自己喜欢的工具集…...

spss 导入数据的时候 用于确定数据类型的值所在的百分比95%是什么意思,数据分析,医学数据分析

在SPSS中&#xff0c;当提及“数据类型的值所在的百分比95%”时&#xff0c;这通常与数据的统计分布或置信区间有关&#xff0c;而不是直接关于数据类型的定义。 导入数据的时候需要定义数据类型&#xff0c;那么根据提供的数据&#xff0c;来定义&#xff0c;有时候&#xff…...

Python进阶之-上下文管理器

✨前言&#xff1a; &#x1f31f;什么是上下文管理器&#xff1f; 在Python中&#xff0c;上下文管理器是支持with语句的对象&#xff0c;用于为代码块提供设置及清理代码。上下文管理器广泛应用于资源管理场景&#xff0c;例如文件操作、网络连接、数据库会话等&#xff0c…...

什么年代了,还在拿考勤说事

最近&#xff0c;看到了某公司的一项考勤规定&#xff1a;自然月内&#xff0c;事假累计超过3次或者累计请假时间超过8小时的&#xff0c;不予审批&#xff0c;强制休假的按旷工处理。 真的想吐槽&#xff0c;什么年代了&#xff0c;还在拿考勤说事&#xff0c;这是什么公司、什…...

泰迪智能科技中职大数据实验室建设(职业院校大数据实验室建设指南)

职校大数据实验室是职校校园文化建设的重要部分&#xff0c;大数据实训室的建设方案应涵盖多个方面&#xff0c;包括硬件设施的配备、软件环境的搭建、课程资源的开发、师资力量的培养以及实践教学体系的完善等。 打造特色&#xff0c;对接生产 社会经济与产业的…...

Qt QThreadPool线程池

1.简介 QThreadPool类管理一个QThread集合。 QThreadPool管理和重新设计单个QThread对象&#xff0c;以帮助降低使用线程的程序中的线程创建成本。每个Qt应用程序都有一个全局QThreadPool对象&#xff0c;可以通过调用globalInstance来访问该对象。 要使用其中一个QThreadPool…...

无人机+三维建模:倾斜摄影技术详解

无人机倾斜摄影测量技术是一项高新技术&#xff0c;近年来在国际摄影测量领域得到了快速发展。这种技术通过从一个垂直和四个倾斜的五个不同视角同步采集影像&#xff0c;从而获取到丰富的建筑物顶面及侧视的高分辨率纹理。这种技术不仅能够真实地反映地物情况&#xff0c;还能…...

Window(Qt/Vs)软件添加版本信息

Window&#xff08;Qt/Vs&#xff09;软件添加版本信息 文章目录 Window&#xff08;Qt/Vs&#xff09;软件添加版本信息VS添加版本信息添加资源文件添加版本定义头自动更新版本添加批处理脚本设置生成事件 Qt添加版本信息添加资源文件文件信息修改自动更新版本 CMake添加版本信…...

工厂模式+策略模式完成多种登录模式的实现

前提 &#xff08;简单工厂不属于设计模式&#xff0c;而是一种编程思想【抽象一层出来】&#xff09;工厂方法模式、抽象工厂模式 以上都是为了解耦&#xff0c;如果考虑多个纬度&#xff08;如需要同时考虑多种电器&#xff0c;多种品牌&#xff09;则优先考虑抽象工厂。 …...

赋能企业数字化转型 - 易点易动固定资产系统与飞书实现协同管理

在当前瞬息万变的商业环境下,企业如何借助信息化手段提升管理效率,已经成为摆在各行各业面前的紧迫课题。作为企业数字化转型的重要一环,固定资产管理的信息化建设更是不容忽视。 易点易动作为国内领先的企业资产管理服务商,凭借其全方位的固定资产管理解决方案,助力众多企业实…...

Sectigo 通配符SSL证书的优势分析!

Sectigo 通配符证书是一种专为需要保护同一主域名下的多个子域名而设计的安全解决方案。以下是Sectigo通配符证书的主要优势和特点&#xff1a; 1. 域名灵活性&#xff1a;使用通配符&#xff08;*&#xff09;符号&#xff0c;一张Sectigo通配符证书即可覆盖一个主域名及其所有…...

nuxt2路由,以及重构以前项目,路由使用

Nuxt.js根据pages目录结构自动生成vue-router模块的路由配置。 配置生成的路由可在.nuxt文件下的router.js文件中查看到&#xff0c;如&#xff1a; export const routerOptions {mode: history,base: /,linkActiveClass: nuxt-link-active,linkExactActiveClass: nuxt-link…...

eureka报错:链接8761被拒绝

eureka报错&#xff1a;链接8761被拒绝 来龙去脉 在idea环境中运行没有问题 我的配置是&#xff1a; server: port: 8001 spring: application: name: registry-server eureka: instance: hostname: localhost client: fetch-registry: false register-with-eureka: false …...

视频监控平台智能边缘分析一体机视频存储平台打手机检测算法

智能边缘分析一体机的打手机检测算法是一种集成了先进图像处理、计算机视觉和人工智能技术的解决方案&#xff0c;专门用于实时监测和识别监控场景中的打手机行为。 在提到“打手机检测算法”时&#xff0c;可能是指一种能够识别和检测使用手机行为的算法。这种算法可以应用于多…...

代码随想录-算法训练营day39【动态规划02:不同路径】

代码随想录-035期-算法训练营【博客笔记汇总表】-CSDN博客 第九章 动态规划part02● 62.不同路径 ● 63. 不同路径 II 今天开始逐渐有 dp的感觉了&#xff0c;题目不多&#xff0c;就两个 不同路径&#xff0c;可以好好研究一下详细布置 62.不同路径 本题大家掌握动态规划的方…...

Unity之Image图片挖洞

最近开发一款打地鼠小游戏&#xff0c;地鼠是3D的&#xff0c;身体比较庞大&#xff0c;管道比较窄小&#xff0c;所以管道其实没办法将地鼠完全遮盖&#xff0c;于是想了一下几个方法。 1&#xff0c;让美术把3D物体裁剪掉&#xff0c;让地鼠的形态体积不至于露出UI&#xff…...

高斯分布应用;高斯分布和高斯核有什么;正态分布的具体应用举例说明

目录 高斯分布应用 高斯分布和高斯核有什么 正态分布的具体应用举例说明 高斯分布应用...

MT3038 植发

思路&#xff1a; 有两个点可以取头发&#xff0c;每个头发寿命不同。 先看点(0,0)&#xff0c;按寿命由小到大排序&#xff08;先考虑寿命短的可以移植到哪里&#xff09;。 (0,0)点头发放置的位置应该让(0,m)点的头发可以尽可能多的放置&#xff08;例如(0,0)点有一根头发…...

前端 CSS 经典:CSS 包含块

前言&#xff1a;CSS 总的来说就两块&#xff0c;样式计算和视觉格式化模型&#xff0c;而包含块就是视觉格式化模型的重要内容&#xff0c;理解包含块的定义&#xff0c;对于 CSS 布局有更好的帮助。 1. 概念 什么叫包含块&#xff0c;指的是一个区域&#xff0c;某一个元素在…...