上一期给大家带来了药物中毒的施救方案,这一期给大家一个计算地震源的问题
文章目录
- 一、问题描述
- 二、建立数学模型
- 三、模型求解
一、问题描述
当地震发生时,震中位置的快速确定对第一时间展开抗震救灾起到非常重要的作用,而震中位置可以通过多个地震观测点接收到地震波的时间推算得到。这里假定地面时一个平面,在这个平面上建立坐标系,图中给出了 10 个地震观测站点(A~J)的坐标位点。
某年 4 月 1 日某时在某一地点发生了一次地震,图中 10 个地震站点均接收到了地震波,观测数据如表所示
地震观测站 | 横坐标 x/km | 纵坐标 y/km | 接收地震波时间 |
---|---|---|---|
A | 500 | 3300 | 4 月 1 日 9 时 21 分 9 秒 |
B | 300 | 200 | 4 月 1 日 9 时 19 分 29 秒 |
C | 800 | 1600 | 4 月 1 日 9 时 14 分 51 秒 |
D | 1400 | 2200 | 4 月 1 日 9 时 13 分 17 秒 |
E | 1700 | 700 | 4 月 1 日 9 时 11 分 46 秒 |
F | 2300 | 2800 | 4 月 1 日 9 时 14 分 47 秒 |
G | 2500 | 1900 | 4 月 1 日 9 时 10 分 14 秒 |
H | 2900 | 900 | 4 月 1 日 9 时 11 分 46 秒 |
I | 3200 | 3100 | 4 月 1 日 9 时 17 分 57 秒 |
J | 3400 | 100 | 4 月 1 日 9 时 16 分 49 秒 |
假定地震波在各种介质和各个方向的传播速度均相等,并且在传播过程中保持不变。请根据表中的数据确定这次地震的震中位置、震源深度以及地震发生的时间(不考虑时区因素,建议时间以分为单位)。
>> xyt = [500 3300 21 9
300 200 19 29
800 1600 14 51
1400 2200 13 17
1700 700 11 46
2300 2800 14 47
2500 1900 10 14
2900 900 11 46
3200 3100 17 57
3400 100 16 49]
xyt =500 3300 21 9300 200 19 29800 1600 14 511400 2200 13 171700 700 11 462300 2800 14 472500 1900 10 142900 900 11 463200 3100 17 573400 100 16 49
>> x = xyt(:,1); % 所有地震观测点的 x 坐标
>> y = xyt(:,2); % 所有地震观测点的 y 坐标
>> figure
>> plot(x,y,'b*'); % 标记所有的观测点
>> hold on;
>> grid on
>> set(gca,'XMinorGrid','on', 'YMinorGrid', 'on'); %开启次网格线
>> text(x - 100, y, {'A','B','C','D','E','F','G','H','I','J'})
二、建立数学模型
假设震源三维坐标为( x 0 , y 0 , z 0 x_0,y_0,z_0 x0,y0,z0),这里的 z 0 z_0 z0取正值,设地震发生的时间为 4 月 1 日 9 时 t 0 t_0 t0分,地震波传播速度为 v 0 v_0 v0(单位:km/s)。用 ( x i , y i , z i ) ( i = 1 , 2 , . . . , 10 ) (x_i,y_i,z_i)(i=1,2,...,10) (xi,yi,zi)(i=1,2,...,10)分别表示地震观测站点 A~J 的三维坐标,用 T i ( i = 1 , 2 , . . . , 10 ) T_i(i=1,2,...,10) Ti(i=1,2,...,10)表示 9 时 T i T_i Ti分接收到地震波。根据题设条件和以上假设建立变量 T i T_i Ti关于 x i , y i x_i,y_i xi,yi的数学模型如下:
T i = t 0 + ( x i − x 0 ) 2 + ( y i − y 0 ) 2 + z 0 2 60 v 0 , i = 1 , 2 , . . . , 10 T_i = t_0 + \frac{\sqrt{(x_i - x_0)^2 + (y_i - y_0)^2 +{z_0}^2}}{60{v_0}},i=1, 2, ..., 10 Ti=t0+60v0(xi−x0)2+(yi−y0)2+z02,i=1,2,...,10
其中, x 0 , y 0 , z 0 , v 0 , t 0 x_0,y_0,z_0,v_0,t_0 x0,y0,z0,v0,t0为模型中的未知变量。
三、模型求解
模型式是一个包含 10 个方程、5 个变量的多元非线性方程组。首先通过移项将方程组后端均化 0,然后编写方程组所对应的目标函数,函数应有一个输入和一个输出,其输入的未知变量构成的向量,输出为方程组左端项构成的列向量。
{ t 0 + ( 500 − x 0 ) 2 + ( 3300 − y 0 ) 2 + z 0 60 v 0 − ( 21 + 9 60 ) = 0 t 0 + ( 300 − x 0 ) 2 + ( 200 − y 0 ) 2 + z 0 60 v 0 − ( 19 + 29 60 ) = 0 t 0 + ( 800 − x 0 ) 2 + ( 1600 − y 0 ) 2 + z 0 60 v 0 − ( 14 + 51 60 ) = 0 t 0 + ( 1400 − x 0 ) 2 + ( 2200 − y 0 ) 2 + z 0 60 v 0 − ( 13 + 17 60 ) = 0 t 0 + ( 1700 − x 0 ) 2 + ( 700 − y 0 ) 2 + z 0 60 v 0 − ( 11 + 46 60 ) = 0 t 0 + ( 2300 − x 0 ) 2 + ( 2800 − y 0 ) 2 + z 0 60 v 0 − ( 14 + 47 60 ) = 0 t 0 + ( 2500 − x 0 ) 2 + ( 1900 − y 0 ) 2 + z 0 60 v 0 − ( 10 + 14 60 ) = 0 t 0 + ( 2900 − x 0 ) 2 + ( 900 − y 0 ) 2 + z 0 60 v 0 − ( 11 + 46 60 ) = 0 t 0 + ( 3200 − x 0 ) 2 + ( 3100 − y 0 ) 2 + z 0 60 v 0 − ( 17 + 57 60 ) = 0 t 0 + ( 3400 − x 0 ) 2 + ( 100 − y 0 ) 2 + z 0 60 v 0 − ( 16 + 49 60 ) = 0 \begin{cases} t_0 + \frac{\sqrt{(500 - x_0)^2 + (3300 - y_0)^2 + z_0}}{60 v_0} - (21 + \frac{9}{60}) & = 0 \\ t_0 + \frac{\sqrt{(300 - x_0)^2 + (200 - y_0)^2 + z_0}}{60 v_0} - (19 + \frac{29}{60}) & = 0 \\ t_0 + \frac{\sqrt{(800 - x_0)^2 + (1600 - y_0)^2 + z_0}}{60 v_0} - (14 + \frac{51}{60}) & = 0 \\ t_0 + \frac{\sqrt{(1400 - x_0)^2 + (2200 - y_0)^2 + z_0}}{60 v_0} - (13 + \frac{17}{60}) & = 0 \\ t_0 + \frac{\sqrt{(1700 - x_0)^2 + (700 - y_0)^2 + z_0}}{60 v_0} - (11 + \frac{46}{60}) & = 0 \\ t_0 + \frac{\sqrt{(2300 - x_0)^2 + (2800 - y_0)^2 + z_0}}{60 v_0} - (14 + \frac{47}{60}) & = 0 \\ t_0 + \frac{\sqrt{(2500 - x_0)^2 + (1900 - y_0)^2 + z_0}}{60 v_0} - (10 + \frac{14}{60}) & = 0 \\ t_0 + \frac{\sqrt{(2900 - x_0)^2 + (900 - y_0)^2 + z_0}}{60 v_0} - (11 + \frac{46}{60}) & = 0 \\ t_0 + \frac{\sqrt{(3200 - x_0)^2 + (3100 - y_0)^2 + z_0}}{60 v_0} - (17 + \frac{57}{60}) & = 0 \\ t_0 + \frac{\sqrt{(3400 - x_0)^2 + (100 - y_0)^2 + z_0}}{60 v_0} - (16 + \frac{49}{60}) & = 0 \end{cases} ⎩ ⎨ ⎧t0+60v0(500−x0)2+(3300−y0)2+z0−(21+609)t0+60v0(300−x0)2+(200−y0)2+z0−(19+6029)t0+60v0(800−x0)2+(1600−y0)2+z0−(14+6051)t0+60v0(1400−x0)2+(2200−y0)2+z0−(13+6017)t0+60v0(1700−x0)2+(700−y0)2+z0−(11+6046)t0+60v0(2300−x0)2+(2800−y0)2+z0−(14+6047)t0+60v0(2500−x0)2+(1900−y0)2+z0−(10+6014)t0+60v0(2900−x0)2+(900−y0)2+z0−(11+6046)t0+60v0(3200−x0)2+(3100−y0)2+z0−(17+6057)t0+60v0(3400−x0)2+(100−y0)2+z0−(16+6049)=0=0=0=0=0=0=0=0=0=0
模型求解:
>> xyt = [500 3300 21 9
300 200 19 29
800 1600 14 51
1400 2200 13 17
1700 700 11 46
2300 2800 14 47
2500 1900 10 14
2900 900 11 46
3200 3100 17 57
3400 100 16 49]
xyt =500 3300 21 9300 200 19 29800 1600 14 511400 2200 13 171700 700 11 462300 2800 14 472500 1900 10 142900 900 11 463200 3100 17 573400 100 16 49
>> x = xyt(:,1); % 所有地震观测点的 x 坐标
>> y = xyt(:,2); % 所有地震观测点的 y 坐标
>> Minutes = xyt(:,3); % 所有观测点的分钟
>> Seconds = xyt(:,4); % 所有观测点的秒
>> T = Minutes + Seconds / 60; % 接收到的时间,转为分钟
>> modelfun = @(b) sqrt((x - b(1)) .^ 2 + (y -b(2)) .^ 2 + b(3) .^ 2) / (60 * b(4)) + b(5) - T; %方程组所对应的目标函数
>> b0 = [1000 100 10 1 1]; %定义变量初始向量
>> [Bval, Fval] = fsolve(modelfun, b0); % 求解函数
Bval =1.0e+03 *2.2005 1.3999 0.0351 0.0030 0.0070
Fval =0.0066-0.0064-0.0001-0.00500.00490.0048-0.00220.0010-0.0036-0.0000
由上述代码可知,目标函数的输入参数 b 是一个包含个分量的向量,分别对应参数 x 0 , y 0 , z 0 , v 0 , t 0 x_0,y_0,z_0,v_0,t_0 x0,y0,z0,v0,t0。由模型求解结果可知:
{ x 0 = 2200.5 y 0 = 1399.9 z 0 = 35.1 v 0 = 3 t 0 = 7 \begin{cases} x_0 = 2200.5 \\ y_0 = 1399.9 \\ z_0 = 35.1 \\ v_0 = 3 \\ t_0 = 7 \end{cases} ⎩ ⎨ ⎧x0=2200.5y0=1399.9z0=35.1v0=3t0=7
也就是说,地震发生的时间为某年 4 月 1 日 09 时 07 分,地震中位于 x 0 = 2200.5 , y 0 = 1399.9 x_0 = 2200.5, y_0=1399.9 x0=2200.5,y0=1399.9处,地震源深度 35.1 km。
>> plot(Bval(1),Bval(2), 'mh')
>> text(Bval(1) - 300, Bval(2), '震源')
>> Dx = x - Bval(1)
>> Dy = y - Bval(2)
>> quiver(ones(10,1) .* Bval(1), ones(10,1) .* Bval(2), Dx , Dy)
相关推荐:
1. 数学建模-药物中毒的施救方案