博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
圆锥体完全均衡下重力异常正演 [MATLAB]
阅读量:4325 次
发布时间:2019-06-06

本文共 5161 字,大约阅读时间需要 17 分钟。

  在完全均衡的模型下,若地表有一圆锥体(山峰等),计算跨越山顶的截面上所得到的各种重力异常。

 

地壳密度 $kg\cdot m^{-3}$ 上地幔密度 $g\cdot cm^{-3}$ 地表地形圆锥体半径 (km) 地表地形圆锥体高度 (km) 计算莫霍面形变圆锥半径 (km) 计算莫霍面形变圆锥高度 (km) 地壳厚度 (km)
$2.8\times 10^{3}$ $3.5\times 10^{3}$ $2.0$ $2.0$ $2.0$ $8.0$ $30.0$

 

  计算结果如下。横坐标单位:m,纵坐标单位:mGal

 

重力异常

  MATLAB代码如下:

% 生成地下体的布格重力异常syms r a z x h;f = r / sqrt((z + h)^2 + r^2 + x^2 - 2*r*x*cos(a))^3;dense = - 700; G = 6.67E-11;depth = 30000; subheight = 8000; height = 2000;total_spots = 81;total_anom = zeros(1, 81);total_xvec = zeros(1, 81);spots = 20; from = 50000; to = 2500; interval = -2500;xvec = from:interval:to;anom = zeros(1, spots);for no = 1:spots    rad = from + (no - 1)*interval;    gap = 800;    N = subheight/gap;    anomaly = 0;    for n = 0:N-1       Radius = 2000 - (gap/4)*n;       fc = subs(f, [z, x, h], [depth + gap*n, rad, 0]);       func = matlabFunction(fc, 'Vars', {r, a});       layer = integral2(func, 0, Radius, 0, 2*pi);       anomaly = anomaly + dense * G * (depth + n*gap) * gap * layer;    end    anom(no) = anomaly;endanom = 10^5 * anom;total_anom(1, 1:spots) = anom;total_anom(1, (total_spots - spots + 1):total_spots) = fliplr(anom);current = spots + 1;total_xvec(1, 1:spots) = -xvec;total_xvec(1, (total_spots - spots + 1):total_spots) = fliplr(xvec);spots = 21; from = 2000; to = 0; interval = -100;xvec = from:interval:to;anom = zeros(1, spots);for no = 1:spots    rad = from + (no - 1)*interval;    gap = 800;    N = subheight/gap;    anomaly = 0;    elevation = (no - 1) * 2000 / (spots - 1);    for n = 0:N-1       Radius = 2000 - (gap/4)*n;       fc = subs(f, [z, x, h], [depth + gap*n, rad, elevation]);       func = matlabFunction(fc, 'Vars', {r, a});       layer = integral2(func, 0, Radius, 0, 2*pi);       anomaly = anomaly + dense * G * (depth + n*gap + elevation) * gap * layer;    end    anom(no) = anomaly;endanom = 10^5 * anom;total_anom(1, current:(current + spots - 1)) = anom;total_anom(1, (total_spots - current - spots + 2):(total_spots - current + 1)) = fliplr(anom);total_xvec(1, current:(current + spots - 1)) = -xvec;total_xvec(1, (total_spots - current - spots + 2):(total_spots - current + 1)) = fliplr(xvec);subplot(2, 2, 1);plot(total_xvec, total_anom);

  

% 生成地表物体引起的重力异常% 为生成自由空气异常,需先执行计算布格重力异常的脚本(前)加以叠加syms r a z x h;f = r / sqrt((z - h)^2 + r^2 + x^2 - 2*r*x*cos(a))^3;dense = 2800; G = 6.67E-11;height = 2000;total_spots = 81;total_anom1 = zeros(1, 81);total_xvec1 = zeros(1, 81);spots = 20; from = 50000; to = 2500; interval = -2500;xvec = from:interval:to;anom = zeros(1, spots);for no = 1:spots    rad = from + (no - 1)*interval;    gap = 200;    N = height/gap;    anomaly = 0;    for n = 0:N-1       Radius = 2000 - gap * (n + 0.5);       fc = subs(f, [z, x, h], [gap*n + 100, rad, 0]);       func = matlabFunction(fc, 'Vars', {r, a});       layer = integral2(func, 0, Radius, 0, 2*pi);       anomaly = anomaly - dense * G * n*gap * gap * layer;    end    anom(no) = anomaly;endanom = 10^5 * anom;total_anom1(1, 1:spots) = anom;total_anom1(1, (total_spots - spots + 1):total_spots) = fliplr(anom);current = spots + 1;total_xvec1(1, 1:spots) = -xvec;total_xvec1(1, (total_spots - spots + 1):total_spots) = fliplr(xvec);spots = 21; from = 2000; to = 0; interval = -100;xvec = from:interval:to;anom = zeros(1, spots);for no = 1:spots    rad = from + (no - 1)*interval;    gap = 50;    N = height/gap;    anomaly = 0;    elevation = (no - 1) * 2000 / (spots - 1);    for n = 0:N-1       Radius = 2000 - gap*(n + 0.5);       fc = subs(f, [z, x, h], [gap*n + 25, rad, elevation + 2]);       func = matlabFunction(fc, 'Vars', {r, a});       layer = integral2(func, 0, Radius, 0, 2*pi);                  anomaly = anomaly + dense * G * (elevation - n*gap - 25) * gap * layer;    end    anom(no) = anomaly;endanom = 10^5 * anom;total_anom1(1, current:(current + spots - 1)) = anom;total_anom1(1, (total_spots - current - spots + 2):(total_spots - current + 1)) = fliplr(anom);total_xvec1(1, current:(current + spots - 1)) = -xvec;total_xvec1(1, (total_spots - current - spots + 2):(total_spots - current + 1)) = fliplr(xvec);subplot(2, 2, 2);plot(total_xvec1, total_anom1);freeair_xvec = total_xvec;freeair = total_anom + total_anom1;subplot(2, 2, 3); plot(freeair_xvec, freeair);

  

% 生成总重力异常% 需要先执行布格重力异常脚本和自由空气异常脚本total_spots = 81;total_anom2 = zeros(1, 81);total_xvec2 = zeros(1, 81);spots = 20; from = 50000; to = 2500; interval = -2500;xvec = from:interval:to;total_xvec2(1, 1:spots) = -xvec;total_xvec2(1, (total_spots - spots + 1):total_spots) = fliplr(xvec);current = 21;spots = 21; from = 2000; to = 0; interval = -100;xvec = from:interval:to;anom = zeros(1, spots);for no = 1:spots    elevation = (no - 1) * 2000 / (spots - 1);    anom(no) = - elevation * 0.308;endtotal_anom2(1, current:(current + spots - 1)) = anom;total_anom2(1, (total_spots - current - spots + 2):(total_spots - current + 1)) = fliplr(anom);total_xvec2(1, current:(current + spots - 1)) = -xvec;total_xvec2(1, (total_spots - current - spots + 2):(total_spots - current + 1)) = fliplr(xvec);gravity_anomaly = freeair + total_anom2;subplot(2, 2, 4); plot(freeair_xvec, gravity_anomaly);

  

转载于:https://www.cnblogs.com/gentle-min-601/p/10036685.html

你可能感兴趣的文章
[Python设计模式] 第25章 联合国维护世界和平——中介者模式
查看>>
nginx反向代理docker registry报”blob upload unknown"解决办法
查看>>
gethostbyname与sockaddr_in的完美组合
查看>>
kibana的query string syntax 笔记
查看>>
基于Lua插件化的Pcap流量监听代理
查看>>
旋转变换(一)旋转矩阵
查看>>
thinkphp3.2.3 bug集锦
查看>>
[BZOJ 4010] 菜肴制作
查看>>
C# 创建 读取 更新 XML文件
查看>>
KD树
查看>>
VsVim - Shortcut Key (快捷键)
查看>>
C++练习 | 模板与泛式编程练习(1)
查看>>
HDU5447 Good Numbers
查看>>
08.CXF发布WebService(Java项目)
查看>>
java-集合框架
查看>>
RTMP
查看>>
求一个数的整数次方
查看>>
点云PCL中小细节
查看>>
铁路信号基础
查看>>
Django 学习笔记(五) --- Ajax 传输数据
查看>>