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

地壳密度 $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. Android进程和线程(Android开发指南--译)

    (转自:http://www.cnblogs.com/xitang/archive/2011/09/24/2189460.html) Processes and Threads 译者署名: 呆呆大虾 ...

  2. cmake编译android平台的libPoco

    1.下载源代码,解压到POCO-1.7.8-ALL 2.从$ANDROID_NDK\cmake下复制android.toolchain.cmake AndroidNdkGdb.cmake Androi ...

  3. LeetCode 43 Multiply Strings(字符串相乘)

    题目链接: https://leetcode.com/problems/multiply-strings/?tab=Description     求解大数相乘问题   按照上图所示,进行嵌套循环计算 ...

  4. 怎么在sublime/emmet中加自定义的内容-sublime使用心得(3)

    emmet中默认的h5的文档是这样的:   <!doctype html> <html lang="en"> <head> <meta c ...

  5. INTRO: THE DAWN (亡灵序曲) 中独白

    As the last ship sailed towards the distant horizon I sat there watching on a rock My mind slowly dr ...

  6. python计算均值方差

    用Python求均值与方差,可以自己写,也可以借助于numpy,不过到底哪个快一点呢? 我做了个实验,首先生成9百万个样本: nlist=range(0,9000000) nlist=[float(i ...

  7. lombok 一个不错的小工具

    (1)官方文档  Lombok features (2)Lombok Reduces Your Boilerplate Code (3)Lombok-Java代码自动生成 开发利器

  8. Spark2 探索性数据统计分析

    data数据源,请参考我的博客http://www.cnblogs.com/wwxbi/p/6063613.html import org.apache.Spark.sql.DataFrameStat ...

  9. hdu5955 Guessing the Dice Roll【AC自动机】【高斯消元】【概率】

    含高斯消元模板 2016沈阳区域赛http://acm.hdu.edu.cn/showproblem.php?pid=5955 Guessing the Dice Roll Time Limit: 2 ...

  10. Python:lambda表达式(匿名函数)

    lambda表达式: 通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数. 当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便. 在Python中 ...