偏微分方程算法之椭圆型方程差分格式编程示例

news2024/12/29 8:38:30

目录

一、示例1-五点菱形格式

1.1 C++代码

1.2 计算结果

二、示例2-九点紧差分格式

2.1 C++代码

2.2 计算结果

三、示例3-二阶混合边值

3.1 C++代码

3.2 计算结果


        本专栏对椭圆型偏微分方程的三种主要差分方法进行了介绍,并给出相应格式的理论推导过程。为加深对差分格式的理解,分别对三种方法进行C++编程示例。

一、示例1-五点菱形格式

\left\{\begin{matrix} -(\frac{\partial^{2}u}{\partial x^{2}}+\frac{\partial^{2}u}{\partial y^{2}})=\frac{4y^{2}-2x^{2}}{(x^{2}+2y^{2})^{2}},1<x<2,0<y<3,\\ u(1,y)=ln(1+2y^{2}),u(2,y)=ln(4+2y^{2}),0\leqslant y\leqslant 1,\\ u(x,0)=2lnx,u(x,3)=ln(18+x^{2}),1<x<2 \end{matrix}\right. 

已知精确解为u(x,y)=ln(x^{2}+2y^{2})。分别取两种剖分数:m=20,n=30和m=40,n=60,输出10个节点(1.25,0.5i)(1.75,0.5i),i=1,2,3,4,5处的数值解,并给出误差。要求在各个节点处最大误差的迭代误差限为0.5\times10^{-10}

1.1 C++代码


 

#include <cmath>
#include <stdlib.h>
#include <stdio.h>

int main(int argc, char* argv[])
{
        int m,n,i,j,k,num;
        double xa,xb,ya,yb,dx,dy,alpha,beta,gamma,err,maxerr;
        double *x,*y,**u,**temp;
        double leftboundary(double y);
        double rightboundary(double y);
        double bottomboundary(double x);
        double topboundary(double x);
        double f(double x, double y);
        double exact(double x, double y);

        xa=1.0;xb=2.0;
        ya=0.0;yb=3.0;
        m=20;n=30;
        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.0*(beta+gamma);

        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;
        }

        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]=(f(x[i],y[j])+beta*(u[i-1][j]+temp[i+1][j])+gamma*(u[i][j-1]+temp[i][j+1]))/alpha;
                                err=fabs(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=n/6;
        num=m/4;
        for(j=k;j<n;j=j+k)
        {
                printf("(1.25,%.3f), y=%f, err=%.4e.\n",y[j],u[num][j],fabs(exact(x[num],y[j])-u[num][j]));
        }

        num=3*m/4;
        for(j=k;j<n;j=j+k)
        {
                printf("(1.75,%.3f), y=%f, err=%.4e.\n",y[j],u[num][j],fabs(exact(x[num],y[j])-u[num][j]));
        }

        for(i=0;i<=m;i++)
        {
                free(u[i]);free(temp[i]);
        }
        free(x);free(y);


        return 0;
}


double leftboundary(double y)
{
        return log(1.0+2*y*y);
}
double rightboundary(double y)
{
        return log(4.0+2*y*y);
}
double bottomboundary(double x)
{
        return 2*log(x);
}
double topboundary(double x)
{
        return log(18.0+x*x);
}
double f(double x, double y)
{
        double temp1,temp2,z;
        temp1=x*x; temp2=y*y;
        z=temp1+2*temp2;
        return (4*temp2-2*temp1)/(z*z);
}
double exact(double x, double y)
{
        return log(x*x+2*y*y);
}

                                                                                           

1.2 计算结果

        当m=20,n=30时,计算结果为:

m=20,n=30.
k=959.
(1.25,0.500), y=0.724037, err=1.1827e-04.
(1.25,1.000), y=1.270654, err=1.9108e-04.
(1.25,1.500), y=1.802202, err=7.9937e-05.
(1.25,2.000), y=2.257872, err=2.3280e-05.
(1.25,2.500), y=2.643516, err=4.1352e-06.
(1.75,0.500), y=1.270488, err=2.5584e-05.
(1.75,1.000), y=1.621992, err=1.3181e-04.
(1.75,1.500), y=2.023279, err=7.7668e-05.
(1.75,2.000), y=2.403589, err=2.7872e-05.
(1.75,2.500), y=2.744871, err=6.9853e-06.

         当m=40,n=60时,计算结果为:

m=40,n=60.
k=3582.
(1.25,0.500), y=0.723948, err=2.9304e-05.
(1.25,1.000), y=1.270510, err=4.7781e-05.
(1.25,1.500), y=1.802142, err=1.9972e-05.
(1.25,2.000), y=2.257855, err=5.8033e-06.
(1.25,2.500), y=2.643513, err=1.0237e-06.
(1.75,0.500), y=1.270469, err=6.1963e-06.
(1.75,1.000), y=1.621893, err=3.2942e-05.
(1.75,1.500), y=2.023221, err=1.9426e-05.
(1.75,2.000), y=2.403568, err=6.9568e-06.
(1.75,2.500), y=2.744866, err=1.7374e-06.

二、示例2-九点紧差分格式

\left\{\begin{matrix} -(\frac{\partial^{2}u}{\partial x^{2}}+\frac{\partial^{2}u}{\partial y^{2}})=\frac{4y^{2}-2x^{2}}{(x^{2}+2y^{2})^{2}},1<x<2,0<y<3,\\ u(1,y)=ln(1+2y^{2}),u(2,y)=ln(4+2y^{2}),0\leqslant y\leqslant 1,\\ u(x,0)=2lnx,u(x,3)=ln(18+x^{2}),1<x<2 \end{matrix}\right.

已知精确解为u(x,y)=ln(x^{2}+2y^{2})。分别取两种剖分数:m=20,n=30和m=40,n=60,输出10个节点(1.25,0.5i)(1.75,0.5i),i=1,2,3,4,5处的数值解,并给出误差。要求在各个节点处最大误差的迭代误差限为0.5\times10^{-10}

2.1 C++代码


#include <cmath>
#include <stdlib.h>
#include <stdio.h>

int main(int argc, char*argv[])
{
        int m,n,i,j,k,num;
        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=1.0;xb=2.0;
        ya=0.0;yb=3.0;
        m=20;n=30;
        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);
        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=fabs(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=n/6;
        num=m/4;
        for(j=k;j<n;j=j+k)
        {
                printf("(1.25,%.3f), y=%f, err=%.4e.\n",y[j],u[num][j],fabs(exact(x[num],y[j])-u[num][j]));
        }

        num=3*m/4;
        for(j=k;j<n;j=j+k)
        {
                printf("(1.75,%.3f), y=%f, err=%.4e.\n",y[j],u[num][j],fabs(exact(x[num],y[j])-u[num][j]));
        }
        
        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 log(1.0+2*y*y);
}
double rightboundary(double y)
{
        return log(4.0+2*y*y);
}
double bottomboundary(double x)
{
        return 2*log(x);
}
double topboundary(double x)
{
        return log(18+x*x);
}
double f(double x, double y)
{
        double temp1, temp2, z;
        temp1=x*x;
        temp2=y*y;
        z=temp1+2*temp2;
        return (4*temp2-2*temp1)/(z*z);
}
double exact(double x, double y)
{
        return log(x*x+2*y*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=0;i<=m;i++)
        {
                for(j=0;j<=n;j++)
                        ans[i][j]=0.0;
        }

        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;
}

2.2 计算结果

        当m=20,n=30时,计算结果为:

m=20,n=30.
k=805.
(1.25,0.500), y=0.723921, err=2.5068e-06.
(1.25,1.000), y=1.270463, err=4.0234e-07.
(1.25,1.500), y=1.802122, err=8.8970e-08.
(1.25,2.000), y=2.257849, err=6.0205e-08.
(1.25,2.500), y=2.643512, err=2.1371e-08.
(1.75,0.500), y=1.270463, err=8.8774e-07.
(1.75,1.000), y=1.621861, err=5.0648e-07.
(1.75,1.500), y=2.023202, err=1.3736e-10.
(1.75,2.000), y=2.403561, err=4.9714e-08.
(1.75,2.500), y=2.744864, err=2.2523e-08.

        当m=40,n=60时,计算结果为:

m=40,n=60.
k=3012.
(1.25,0.500), y=0.723919, err=1.5248e-07.
(1.25,1.000), y=1.270463, err=2.0549e-08.
(1.25,1.500), y=1.802122, err=1.0963e-08.
(1.25,2.000), y=2.257849, err=8.4329e-09.
(1.25,2.500), y=2.643512, err=4.0188e-09.
(1.75,0.500), y=1.270463, err=5.2372e-08.
(1.75,1.000), y=1.621860, err=2.7195e-08.
(1.75,1.500), y=2.023202, err=5.0463e-09.
(1.75,2.000), y=2.403561, err=7.4797e-09.
(1.75,2.500), y=2.744864, err=3.9218e-09.

三、示例3-二阶混合边值

\left\{\begin{matrix} -(\frac{\partial^{2}u}{\partial x^{2}}+\frac{\partial^{2}u}{\partial y^{2}})=\frac{4y^{2}-2x^{2}}{(x^{2}+2y^{2})^{2}},1<x<2,0<y<3,\\ (\frac{\partial u(x,y)}{\partial x}-u)|_{(1,y)}=\frac{2}{1+2y^{2}}-ln(1+2y^{2}),0\leqslant y\leqslant 3,\\ (\frac{\partial u(x,y)}{\partial x}+u)|_{(2,y)}=\frac{2}{2+y^{2}}+ln(4+2y^{2}),0\leqslant y\leqslant 3,\\ (\frac{\partial u(x,y)}{\partial y}-u)|_{(x,0)} = \-2lnx,1\leqslant x\leqslant 2,\\ (\frac{\partial u(x,y)}{\partial y})|_{(x,3)}=\frac{12}{18+x^{2}}+ln(18+x^{2}),1\leqslant x\leqslant 2 \end{matrix}\right.

已知精确解为u(x,y)=ln(x^{2}+2y^{2})。分别取两种剖分数:m=20,n=30和m=40,n=60,输出10个节点(1.25,0.5i)(1.75,0.5i),i=1,2,3,4,5处的数值解,并给出误差。要求在各个节点处最大误差的迭代误差限为0.5\times10^{-10}。 

3.1 C++代码


#include <cmath>
#include <stdlib.h>
#include <stdio.h>


int main(int argc, char*argv[])
{
        int m, n, i, j, k, num;
        double xa, xb, ya, yb, dx, dy, alpha, beta, gamma, maxerr;
        double *x, *y, **u, **v, **lambda, kexi, eta, *d, 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=1.0;xb=2.0;
        ya=0.0;yb=3.0;
        m=20;n=30;
        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*beta*u[1][n]+2*gamma*v[0][n-1])/(alpha+(kexi+eta)*lambda[0][n]);
                for(i=1;i<m;i++)
                       v[i][n]=(d[i]+beta*(v[i-1][n]+u[i+1][n])+2*gamma*v[i][n-1])/(alpha+eta*lambda[i][n]);
                v[m][n]=(d[m]+2*beta*v[m-1][n]+2*gamma*v[m][n-1])/(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=n/6;
        num=m/4;
        for(j=k;j<n;j=j+k)
        {
                printf("(1.25,%.3f), y=%f, err=%.4e.\n",y[j],u[num][j],fabs(exact(x[num],y[j])-u[num][j]));
        }

        num=3*m/4;
        for(j=k;j<n;j=j+k)
        {
                printf("(1.75,%.3f), y=%f, err=%.4e.\n",y[j],u[num][j],fabs(exact(x[num],y[j])-u[num][j]));
        }

        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)
{
        double temp1, temp2, z;
        temp1=x*x;
        temp2=y*y;
        z=temp1+2*temp2;
        return (4*temp2-2*temp1)/(z*z);
}
double lambda_function(double x, double y)
{
        return 1.0;
}
double phi1(double y)
{
        double z;
        z=1.0+2*y*y;
        return 2.0/z-log(z);
}
double phi2(double y)
{
        double z;
        z=2+y*y;
        return 2.0/z+log(2*z);
}
double psi1(double x)
{
        return -2*log(x);
}
double psi2(double x)
{
        double z;
        z=x*x+18.0;
        return 12.0/z+log(z);
}
double exact(double x, double y)
{
        return log(x*x+2*y*y);
}        

 

3.2 计算结果

         当m=20,n=30时,计算结果为:

m=20, n=30
k=4470
(1.25,0.500), y=0.723996, err=7.7043e-05.
(1.25,1.000), y=1.270860, err=3.9760e-04.
(1.25,1.500), y=1.802391, err=2.6918e-04.
(1.25,2.000), y=2.257989, err=1.3972e-04.
(1.25,2.500), y=2.643565, err=5.3582e-05.
(1.75,0.500), y=1.270387, err=7.5935e-05.
(1.75,1.000), y=1.622151, err=2.9080e-04.
(1.75,1.500), y=2.023479, err=2.7756e-04.
(1.75,2.000), y=2.403726, err=1.6475e-04.
(1.75,2.500), y=2.744937, err=7.3239e-05.

        当m=40,n=60时,计算结果为:

m=40, n=60
k=16565
(1.25,0.500), y=0.723937, err=1.8621e-05.
(1.25,1.000), y=1.270562, err=9.9132e-05.
(1.25,1.500), y=1.802189, err=6.7202e-05.
(1.25,2.000), y=2.257884, err=3.4879e-05.
(1.25,2.500), y=2.643525, err=1.3353e-05.
(1.75,0.500), y=1.270443, err=1.9346e-05.
(1.75,1.000), y=1.621933, err=7.2431e-05.
(1.75,1.500), y=2.023271, err=6.9315e-05.
(1.75,2.000), y=2.403602, err=4.1144e-05.
(1.75,2.500), y=2.744882, err=1.8266e-05.

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

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

相关文章

百度Comate:你的智能编程助手,让代码编写更高效

一、引言 随着AI和人工智能技术的快速发展&#xff0c;越来越多的行业开始尝试将AI技术应用于实际业务中&#xff0c;包括编程领域。目前逐渐有大量的IT开发工程师开始使用各类的AI工具来帮助改善编程体验、提高效率和增加代码质量&#xff0c;将极大地推动了编程行业的进步和…

虚拟机装CentOS镜像

起先&#xff0c;是先安装一个VM虚拟机&#xff0c;再去官方网站之类的下载一些镜像&#xff0c;常见镜像有CentOS镜像&#xff0c;ubantu镜像&#xff0c;好像还有一个树莓还是什么的&#xff0c;软件这块&#xff0c;日新月异&#xff0c;更新太快&#xff0c;好久没碰&#…

7个AI驱动的3D模型生成器

老子云AI生成3D模型https://www.laozicloud.com/aiModel 在快速发展的技术世界中&#xff0c;人工智能 (AI) 已经改变了游戏规则&#xff0c;尤其是在 3D 对象生成领域。 AI 驱动的 3D 对象生成器彻底改变了我们创建和可视化 3D 模型的方式&#xff0c;使该过程更加高效、准确…

【ElasticSearch】IK分词器中停用词问题

问题描述 在ES中进行部分关键词搜索时&#xff0c;搜索无结果&#xff0c;如搜索 【IT】 环境描述 中文分词插件 这里使用的是 analysis-ik 分词调试 POST test_index/_analyze {"text":"IT Manager","analyzer": "ik_max_word"…

[开发|鸿蒙] DevEco Studio编译构建(笔记,持续更新)

构建体系 编译构建是将应用/服务的源代码、资源、第三方库等&#xff0c;通过编译工具转换为可直接在硬件设备上运行的二进制机器码&#xff0c;然后再将二进制机器码封装为HAP/APP软件包&#xff0c;并为HAP/APP包进行签名的过程。其中&#xff0c;HAP是可以直接运行在模拟器…

LeetCode738:单调递增的数字

题目描述 当且仅当每个相邻位数上的数字 x 和 y 满足 x < y 时&#xff0c;我们称这个整数是单调递增的。 给定一个整数 n &#xff0c;返回 小于或等于 n 的最大数字&#xff0c;且数字呈 单调递增 。 332 代码 class Solution { public:int monotoneIncreasingDigits(…

个人出租房屋收入需汇算吗?柯桥会计培训

2023年度个人所得税综合所得汇算清缴正在进行&#xff0c;个人出租房屋的收入需并入汇算清缴吗&#xff1f;汇算最后一步显示免申报是什么意思&#xff1f; 1 个人出租房屋的收入需并入汇算清缴吗&#xff1f; 答&#xff1a;不用。根据《国家税务总局关于办理2023年度个人所…

2024深圳杯数学建模C题完整思路+配套解题代码+半成品参考论文持续更新

所有资料持续更新&#xff0c;最晚我们将于5.9号更新参考论文。 【无水印word】2024深圳杯A题成品论文23页mtlab(python)双版本代码https://www.jdmm.cc/file/27105652024深圳杯数学建模C题完整思路配套解题代码半成品参考论文持续更新https://www.jdmm.cc/file/2710545 深圳杯…

【海豚调度 开机启动】dophischeduler 如何开启开机自启动功能

DolphinScheduler 是一个分布式、去中心化的大数据工作流调度系统&#xff0c;支持大数据任务调度。若要设置 DolphinScheduler 开机自启动&#xff0c;通常需要将其配置为系统服务。以下是一般步骤&#xff0c;具体操作可能因操作系统的不同而有所差异&#xff1a; 在 Linux …

OpenNJet 应用引擎:在 NGINX 基础上的云原生增强

目录 一、初识OpenNJet二、系统架构三、动手实践1.CentOS 编译环境配置1.1配置yum源&#xff1a;1.2.yum安装软件包1.3.创建符号连接 2.编译代码编译 OpenNJet执行 make 四、基本使用说明1.目录结构概述:2.常用命令: 五、部署 Web 应用程序配置文件修改启动 NJet 六、总结 一、…

数据分析的数据模型

数据分析的数据模型 前言一、优化模型1.1线性优化模型1.1.1线性优化模型定义1.1.2线性优化模型求解算法1. 1.2.1图解法1. 1.2.2. 单纯形法 1.1.3 线性优化模型的应用 1.2非线性优化模型1.2.1非线性优化模型定义1.2.2非线性优化划模型求解方法1. 2.2.1有约束非线性模型算法1.2.2…

“前人种树,后人乘凉”:【薪象营】五一探访活动弘扬传统美德

在五一劳动节这一天&#xff0c;唐刚携带【唐江军】的前成员&#xff0c;前往广州开展了一场特殊的慈善探访活动。这不仅是一个简单的慈善活动&#xff0c;更是唐刚希望向新成立的【薪象营】传承的一种精神和行动典范。 精神传承与实际行动 唐刚&#xff0c;【唐江军】的发起人…

一般显卡3d建模渲染够用吗?3d云渲染助力

3D建模和渲染对计算机硬件有较高要求&#xff0c;特别是显卡。显卡的性能直接影响渲染速度&#xff0c;低端和高端显卡在渲染效率上存在显著差异。对于追求快速渲染的用户&#xff0c;高端显卡是首选。那么&#xff0c;4050显卡是否能够满足3D建模渲染的需求呢?下面我们来探讨…

单目标问题的烟花优化算法求解matlab仿真,对比PSO和GA

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 单目标问题的FW烟花优化算法求解matlab仿真,对比PSO和GA。最后将FW&#xff0c;GA&#xff0c;PSO三种优化算法的优化收敛曲线进行对比。 2.测试软件版本以及运行…

如何在QGIS中安装Python第三方库

目录 1.在QGIS安装目录下&#xff0c;找到Windows批处理文件 OSGeo4W。 2.双击运行该批处理文件&#xff0c;然后使用pip install 命令安装相应的第三方库。 3.在QGIS Python Console 控制平台就可以运行 anaconda jupyter notebook的脚本了。 1.在QGIS安装目录下&#xff0…

信息系统项目管理师0090:项目经理的影响力范围(6项目管理概论—6.3项目经理的角色—6.3.2项目经理的影响力范围)

点击查看专栏目录 文章目录 6.3.2项目经理的影响力范围1.概述2.项目3.组织4.行业5.专业学科6.跨领域6.3.2项目经理的影响力范围 1.概述 项目经理在其影响力范围内可担任多种角色,这些角色反映了项目经理的能力,体现了项目经理的价值和作用,项目经理会涉及项日、组织、行业、…

免费开源论坛社区社交圈子系统,圈子系统,系统开发,支持二开,包含公众号/app/H5,源码交付!

一款追求体验的社区论坛圈子系统 什么是圈子交友系统&#xff1f; 圈子交友系统(多客开源圈子系统)为会员提供精准交友服务 结合多种营销机制为创业者提供低成本、高效获取注册会员&#xff0c;是婚恋交友行业的创业利器&#xff01; 多类型内容形式 多场景应用 精准推广、直…

鸿蒙 DevEcoStudio:组件实例(页面及组件生命周期函数)

【使用onPageshow等生命周期函数】 在entry/src/main/ets/pages路径下创建Page1.ets: import router from ohos.router Entry Component struct Page1 {State message: string Hello WorldState show: booleantrueaboutToAppear(){console.log(Page1组件创建实例)}aboutToDisa…

【Linux】kaili实现CVE-2019-5736漏洞复现

CVE漏洞复现 一、了解docker逃逸1.Docker逃逸的原理2.常见的Docker逃逸方法3.如何防范Docker逃逸 二、介绍POC&#xff0c;Payload&#xff0c;EXP&#xff0c;Shellcode1.POC&#xff08;Proof of Concept&#xff09;&#xff1a;2.EXP&#xff08;Exploit&#xff09;&#…

学习c#第26天 面向对象基础之类与对象

1.类 1.什么是类? 俗话说&#xff0c;“物以类聚&#xff0c;人以群分”。意思是同类的东西经常聚在一起&#xff0c;志同道合 的人相聚成群。前者说物&#xff0c;后者说人。这里以物来进行举例说明[见图]&#xff1a; 水果超市&#xff0c;所有同类的水果摆放在一起&#xf…