代码如下
//计算一阶导数
for(j = 0;j < Nz;j++)
{
for (i = 0; i < Nr; i++)
{
if(i == 0)
Gr1[i][j] = (G[i + 1][j] - G[i][j]) / dr;
else if (i == Nr - 1)
Gr1[i][j] = (G[i][j] - G[i - 1][j]) / dr;
else
Gr1[i][j] = (G[i + 1][j] - G[i - 1][j]) / 2 * dr;
}
}
//计算二阶导数
for(j = 0; j < Nz; j++)
{
for (i = 0; i < Nr; i++)
{
if(i == 0)
Gr2[i][j] = (G[i + 1][j] - G[i][j]) / dr * dr;
else if (i == Nr - 1)
Gr2[i][j] = (G[i][j] - G[i - 1][j]) / dr * dr;
else
Gr2[i][j] = (G[i + 1][j] + G[i - 1][j] - 2 * G[i][j]) / dr * dr;
}
}
for(i = 0; i < Nr; i++)
{
for (j = 0; j < Nz; j++)
{
if(j == 0)
Gz2[i][j] = (G[i][j + 1] - G[i][j]) / dz * dz;
else if (j == Nz - 1)
Gz2[i][j] = (G[i][j] - G[i][j - 1]) / dz * dz;
else
Gz2[i][j] = (G[i + 1][j] + G[i - 1][j] - 2 * G[i][j]) / dz * dz;
}
}
所得数据在作图后是这样的
由于我只增加了源项中的导数部分,所以我猜测是我导数没有写好
想要得到的图像和图二一致
你的作图方式错了吧,图二是contour plot,而你的却是线条图