圆锥体完全均衡下重力异常正演 [MATLAB]
在完全均衡的模型下,若地表有一圆锥体(山峰等),计算跨越山顶的截面上所得到的各种重力异常。
| 地壳密度 $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]的更多相关文章
- Net分布式系统之二:CentOS系统搭建Nginx负载均衡(下)
上一篇文章介绍了VMWare12虚拟机.Linux(CentOS7)系统安装.部署Nginx1.6.3代理服务做负载均衡.接下来介绍通过Nginx将请求分发到各web应用处理服务. 一.Web应用开发 ...
- Linux下的正斜杠"/"和"\"的区别
今天在检查root目录时发现有一个名为"\"的文件,觉得很奇怪,从来没见过,就准备用Vim打开看看,很自然地输入命令查看一下,结果居然打不开. [root@localhost ~] ...
- PHP之負載均衡下的session共用
最近忙於開發台灣運動彩券第四版的程式,所以已經很久沒有上來寫東西了,今天隨便寫點東西和大家分享. 首先說一下負載均衡,相信大家都知道負載均衡可以很好地解決網站大流量的問題,負載均衡就是把用戶的請求分發 ...
- caffe在windows 下的配置及matlab接口编译(无GPU)
本人机子windows 10,matlab2015a,vs2013(官网使用的是vs2013) 1.首先去github上下载caffe的windows包,地址:https://github.com/B ...
- 负载均衡下的资源文件配置/多站点下的资源文件夹共享(Windows IIS)
前言: 负载均衡用的是NLB,微软的方案不太靠谱,举个例子吧,AB两台服务器负载出C,如果用户访问访问C之后分配的是A,那么如果A挂了,是不会自动切换到B的.据说后来还有一种NLB的方案可以实现,也不 ...
- win7 64 旗舰版虚拟GPU-VMware下+vs2013安装caffe+matlab+python
转发请说明来处 Win7配置caffe(无GPU) 配置环境: 必须:win7 64 + vs2013 Win7 64位旗舰版要升级到service spack(因为是在vs2013下,想安装vs20 ...
- asp.net 负载均衡下session存储的解决方法
转自:http://www.cnblogs.com/david100zhang/archive/2011/12/28/2304917.html 在WEB场中,动态网页往往会因为几台主机做了负载而产生S ...
- ubuntu下 编译Caffe的Matlab接口
一般情况下不愿意使用Caffe的Matlab接口,总觉得Linux版的Matlab很难配置,但是现在搞目标检测,得到的源码是使用的Caffe的Matlab接口,只能硬着头皮上了. (1)修改caffe ...
- Ubuntu 16.04 LTS 下安装MATLAB2015b 以及Matlab system error解决办法
下载MATLAB2015b破解版 操作系统:Ubuntu 16.o4 LTS 程序文件:Matlab2015b-glnxa64破解版 解压提取文件:在ubuntu系统下可以直接提取压缩文件,得到三个文 ...
随机推荐
- Microsoft Security Essentials
https://support.microsoft.com/zh-cn/help/18900/consumer-antivirus-software-providers-for-windows 适 ...
- war部署到tomcat
gs-rest-service-0.1.0.war复制到tomcat-9.0.0.M17\webapps\ 打开server.xml,这Host节点,加入<Context path=" ...
- 部署OpenStack问题汇总(一)--使用packstack安装openstack:源问题的处理
在安装的过程中,遇到了源的问题,找不到包的网页: 重新打开 预装源地址,打开epel-openstack-havana.repo 文件,显示如下: # Place this file in yo ...
- 盘古分词修改支持mono和lucene.net3.03
盘古分词平台兼容性 在使用Lucece.net,需要一个中文的分词组件,比较好的是盘古分词,但是我希望能够在mono的环境下运行,就使用moma检查了一下盘古分词 Assembly Version M ...
- 【CF736D】Permutations 线性代数+高斯消元
[CF736D]Permutations 题意:有一个未知长度为n的排列和m个条件,第i个条件$(a_i,b_i)$表示第$a_i$个位置上的数可以为$b_i$.保证最终合法的排列的个数是奇数.现在有 ...
- 【CF878E】Numbers on the blackboard 并查集
[CF878E]Numbers on the blackboard 题意:给你一个长度为n个数列,你每次可以进行如下操作: 选取两个相邻的数x,y(x在y左面),然后将这两个数去掉,用x+2y替换它. ...
- Python:fromkeys()方法
简介 Python 字典(Dictionary) fromkeys() 函数用于创建一个新字典,以序列seq中元素做字典的键,value为字典所有键对应的初始值. 语法 fromkeys()方法语法: ...
- 一键安装openstack juno 之controller node.
原文名称: OpenStack Juno Scripted Installation on CentOS 7 Step I: 本机信息配置 CONTROLLER_IP=192.168.173.133 ...
- java---rce
http://foxglovesecurity.com/2015/11/06/what-do-weblogic-websphere-jboss-jenkins-opennms-and-your-app ...
- Arrow-一个最好用的日期时间Python处理库
https://www.jianshu.com/p/c878bb1c48c1 写过Python程序的人大都知道,Python日期和时间的处理非常繁琐和麻烦,主要有以下几个问题: 有众多的package ...