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

地壳密度 $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. sencha touch 在线实战培训 第一期 第八节 (完结)

    2014.1.15晚上8点开的课 这是本期课程的最后一课,下期课程预计在春节后继续. 如果你有什么意见和建议可以将他们发送到邮箱:534502520@qq.com 本期培训一共八节,前三堂免费,后面的 ...

  2. JVM垃圾收集器组合--各种组合对应的虚拟机参数实践

    前言 相信很多人都看过下面这张图,(来自<深入理解Java虚拟机:JVM高级特性与最佳实践>) 在学完几种垃圾收集器类型及组合后,打算看看实际中程序用到的垃圾收集器. 但是在jconsol ...

  3. 移动端前端框架UI库

    移动端前端框架UI库(Frozen UI.WeUI.SUI Mobile) Frozen UI 自述:简单易用,轻量快捷,为移动端服务的前端框架. 主页:http://frozenui.github. ...

  4. Linux系统java环境jdk的安装

    在linux环境中jdk的安装有两种方式,一为rpm安装机制,另一种为源码安装(已编译好)因此在ORACLE官网提供两种安装文件,一为rpm格式,另一种为gz格式,两种的安装方式都大同小异的. 1.r ...

  5. /etc/vim/vimrc的一个的配置

    (转)Vim 配置文件===/etc/vimrc "===================================================================== ...

  6. python操作数据库PostgreSQL

    1.简述 python可以操作多种数据库,诸如SQLite.MySql.PostgreSQL等,这里不对所有的数据库操作方法进行赘述,只针对目前项目中用到的PostgreSQL做一下简单介绍,主要包括 ...

  7. 经典 mysql 28道题

    1.登陆MySQL数据库. mysql -uroot -pdadong123 2.查看当前登录的用户. select user(); select user from mysql.user; 3.创建 ...

  8. Docker 学习应用篇之二: Docker的介绍和安装

    之前说过Docker的好处,Docker可以集装箱化的部署应用程序.那么Docker是通过什么实现的呢.要理解Docker内部构建,需要先理解Docker的四种部件 1)images:镜像,docke ...

  9. Oracle安装部署之 oracle 11g install linux

    #!/bin/bash#Purpose:Create and config oracle install.#Usage:Log on as the superuser('root') #1.creat ...

  10. [python-opencv]超大图像二值化方法

    *分块 *全局阈值 VS 局部阈值 import cv2 as cv import numpy as np def big_image_binary(image): print(image.shape ...