【MATLAB】球体重力异常正演

        在地球物理勘探工作中,一些近似等轴状的地质体可当作球体计算重力异常,这里为计算简便认为球体密度均匀,将地面当作水平面。


一、方程推导

        设均匀球体埋深为D,半径为R,剩余密度为σ,剩余质量

M= \frac{4}{3}{\pi}R^{3}\sigma

        选球心在地面的投影位置为坐标原点,可以计算二度球体重力异常:

{\Delta}g=\frac{GMD}{​{(x^{2}+D^{2})}^{\frac{3}{2}}}

        同理计算三度球体重力异常:

{\Delta}g=\frac{GMD}{​{(x^{2}+y^{2}+D^{2})}^{\frac{3}{2}}}

        其中G为引力常数:

G= 6.67\times 10^{-11} m^{3}/kg\cdot s^{2} = 6.67\times 10^{-2}(g.u.)m^{2}/t

        上式中D的单位为m(米),M的单位为t(吨),下同。

        在原点处重力异常取得最大值为

\Delta g_{max}=\frac{GM}{D^{2}}=6.67\times10^{-2}\frac{\left \{ M \right \}_{t}}{\left \{D \right \}^{2}_{m}}g.u.


二、二度球体重力异常计算

        前提埋深为100米,球体半径为50米,计算程序如下:

clear

% 定义参数
G = 6.67 * 1e-2;
R = 50;
D = 100;
sigma = 1;

% 定义绘图范围
x = -200:10:200;

% 计算重力异常
M = (4/3)*pi*(R^3)*sigma;
g = (G*M*D)./((x.^2+D^2).^1.5);

% 绘图
plot(x,g,'*-','MarkerEdgeColor','r');
box on;
xlabel('X/m');
ylabel('\Delta g/g.u.');

        运行结果如下:


三、三度球体重力异常计算

        计算程序如下:

        

clear

% 定义参数
G = 6.67 * 1e-2;
R = 50;
D = 100;
sigma = 1;

% 绘图范围
x = -200:10:200;
y = -200:10:200;

% 计算重力异常
M = (4/3)*pi*(R^3)*sigma;
for i = 1:size(x,2)
    for j = 1:size(x,2)
        g(i,j) = (G * M * D)/((x(i)^2 + y(j)^2 + D^2)^1.5);
    end
end

% 绘制等值线图
subplot(1,2,1)
contourf(x,y,g,12);
colorbar;
box on;
xlabel('X/m');
ylabel('Y/m');

% 绘制三维曲面图
subplot(1,2,2)
surf(x,y,g);
colorbar;
box on;
xlabel('X/m');
ylabel('Y/m');
zlabel('\Delta g/g.u.');

        程序运行结果如下:

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
以下是一个简单的立方体重力异常正演MATLAB代码,供您参考: ```matlab % define constants G = 6.674e-11; % gravitational constant rho = 2670; % density of the cube L = 1000; % length of the cube x = -5000:100:5000; % x-coordinates y = -5000:100:5000; % y-coordinates z = 0:100:10000; % z-coordinates [X,Y,Z] = meshgrid(x,y,z); % create the grid % calculate gravity anomalies gx = zeros(size(X)); gy = zeros(size(Y)); gz = zeros(size(Z)); for i = 1:numel(x) for j = 1:numel(y) for k = 1:numel(z) % calculate the distance between the grid point and the cube r = sqrt((X(i,j,k)^2) + (Y(i,j,k)^2) + (Z(i,j,k)^2)); % calculate the gravitational attraction gx(i,j,k) = gx(i,j,k) + (G*rho*L*(X(i,j,k)/r^3)); gy(i,j,k) = gy(i,j,k) + (G*rho*L*(Y(i,j,k)/r^3)); gz(i,j,k) = gz(i,j,k) + (G*rho*L*(Z(i,j,k)/r^3)); end end end % plot the results figure; subplot(1,3,1); imagesc(x,y,squeeze(gx(:,:,end))); colorbar; title('gx'); subplot(1,3,2); imagesc(x,y,squeeze(gy(:,:,end))); colorbar; title('gy'); subplot(1,3,3); imagesc(x,y,squeeze(gz(:,:,end))); colorbar; title('gz'); ``` 这个代码用了一个立方体模型,以100m为间隔生成x、y、z三个方向的网格,然后计算每个网格点上的重力异常。最后,将计算结果通过三个子图的方式展示出来,分别对应x、y、z三个方向上的重力异常。需要注意的是,这个模型非常简单,只是为了演示立方体重力异常正演的基本过程。如果您需要更复杂的模型或更多的计算参数,可以根据自己的需求进行修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值