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

地壳密度 $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;
end
anom = 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;
end
anom = 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;
end
anom = 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;
end
anom = 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;
end
total_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);

  

圆锥体完全均衡下重力异常正演 [MATLAB]的更多相关文章

  1. Net分布式系统之二:CentOS系统搭建Nginx负载均衡(下)

    上一篇文章介绍了VMWare12虚拟机.Linux(CentOS7)系统安装.部署Nginx1.6.3代理服务做负载均衡.接下来介绍通过Nginx将请求分发到各web应用处理服务. 一.Web应用开发 ...

  2. Linux下的正斜杠"/"和"\"的区别

    今天在检查root目录时发现有一个名为"\"的文件,觉得很奇怪,从来没见过,就准备用Vim打开看看,很自然地输入命令查看一下,结果居然打不开. [root@localhost ~] ...

  3. PHP之負載均衡下的session共用

    最近忙於開發台灣運動彩券第四版的程式,所以已經很久沒有上來寫東西了,今天隨便寫點東西和大家分享. 首先說一下負載均衡,相信大家都知道負載均衡可以很好地解決網站大流量的問題,負載均衡就是把用戶的請求分發 ...

  4. caffe在windows 下的配置及matlab接口编译(无GPU)

    本人机子windows 10,matlab2015a,vs2013(官网使用的是vs2013) 1.首先去github上下载caffe的windows包,地址:https://github.com/B ...

  5. 负载均衡下的资源文件配置/多站点下的资源文件夹共享(Windows IIS)

    前言: 负载均衡用的是NLB,微软的方案不太靠谱,举个例子吧,AB两台服务器负载出C,如果用户访问访问C之后分配的是A,那么如果A挂了,是不会自动切换到B的.据说后来还有一种NLB的方案可以实现,也不 ...

  6. win7 64 旗舰版虚拟GPU-VMware下+vs2013安装caffe+matlab+python

    转发请说明来处 Win7配置caffe(无GPU) 配置环境: 必须:win7 64 + vs2013 Win7 64位旗舰版要升级到service spack(因为是在vs2013下,想安装vs20 ...

  7. asp.net 负载均衡下session存储的解决方法

    转自:http://www.cnblogs.com/david100zhang/archive/2011/12/28/2304917.html 在WEB场中,动态网页往往会因为几台主机做了负载而产生S ...

  8. ubuntu下 编译Caffe的Matlab接口

    一般情况下不愿意使用Caffe的Matlab接口,总觉得Linux版的Matlab很难配置,但是现在搞目标检测,得到的源码是使用的Caffe的Matlab接口,只能硬着头皮上了. (1)修改caffe ...

  9. Ubuntu 16.04 LTS 下安装MATLAB2015b 以及Matlab system error解决办法

    下载MATLAB2015b破解版 操作系统:Ubuntu 16.o4 LTS 程序文件:Matlab2015b-glnxa64破解版 解压提取文件:在ubuntu系统下可以直接提取压缩文件,得到三个文 ...

随机推荐

  1. Eclipse中如何在指定工程中搜索指定的字符串

    1.点击Search: 2.在下拉框中先择Search. 3. 4. 5.选择Java 6.

  2. Elasticsearch 学习之 分片未分配原因

    分片未分配的原因主要有: 1)INDEX_CREATED:由于创建索引的API导致未分配.2)CLUSTER_RECOVERED :由于完全集群恢复导致未分配.3)INDEX_REOPENED :由于 ...

  3. sencha touch 2.3.1 list emptyText不显示

    如图所示,有时候没有取到任何的数据. 那么我们就需要显示没有获取到内容这一类提示,显示内容通常通过emptyText这个属性来配置. 但是在sencha touch 2.3.1之中有可能会出问题,所以 ...

  4. [原]openstack-kilo--issue(四) WARNING: nova has no endpoint in ! Available endpoints for this service:

    本博客已经添加"打赏"功能,"打赏"位置位于右边栏红色框中,感谢您赞助的咖啡. 在安装kilo的时候出现了一个报错 nova endpoints WARNING ...

  5. [工具] Sublime Text 使用指南

    http://bbs.it-home.org/thread-46291-1-1.html 摘要(Abstract) 更新记录 更正打开控制台的快捷键为Ctrl + ` 更正全局替换的快捷键为Ctrl ...

  6. 什么是webpack?

    https://www.webpackjs.com/concepts/ https://webpack.github.io/ 本质上,webpack 是一个现代 JavaScript 应用程序的静态模 ...

  7. html如何给图片加角标

    https://segmentfault.com/q/1010000006551803?_ea=1074082 <html><style> #a1 { width: 200px ...

  8. iOS - 音乐播放器之怎么获取音乐列表

    方法一: 这个方法是通过获取到沙盒路径,来得到音乐的路径(使用这个方法需要把音乐放进沙盒) NSFileManager *manager = [NSFileManager defaultManager ...

  9. http后台json解析实例

    localhost:8080/hbinterface/orderInterface/sIReverseAccept.do?bizType=4&&bnetAccount=ESBTEST2 ...

  10. thinkCMF----自定义配置调用

    有些时候,需要在后台给网站一些其他的配置: 这个配置,一般都是通过修改代码实现的,ThinkCMF本身没有这个配置: 找到site.html 增加一个Group就可以: 在配置里面做相应的配置就可以: