【数学建模】解析几何与方程模型

【数学建模】解析几何与方程模型行列式 Determinant 是线性代数中的一个重要概念 它是一个方阵 即行数与列数相等的矩阵 对应的一个标量值

大家好,欢迎来到IT知识分享网。

解析几何与方程模型

写在最前,该读书笔记为参加DataWhale 数学建模导论 所写。

项目github:https://github.com/datawhalechina/intro-mathmodel/tree/main

1.几何建模思想

分析几何问题有如下三种方法:

  • 传统几何的演绎-证明体系:这种体系下的方法都是基于已经被证明了的公理与定理体系(例如勾股定理、正弦定理、圆幂定理等),在解决问题的过程中更强调分析而非计算,往往是通过构造辅助线、辅助平面等利用严密的逻辑推理步步为营推导出最后的结果。这种方法往往分析起来会更加困难,但减少了计算量。
  • 基于向量的计算化几何:向量被引入几何当中最初的目的是为了表示有向线段,但后来大家发现基于向量的一些运算特性可以把一些数量问题统一化。几何图形中的边长、角度、面积可以转化为向量的模长、内积等求解,平行、垂直等可以转化为向量共线、内积为0等求解,就可以把所有几何问题都变成可计算的问题。这样的方法更加重视计算,并且除了传统的几何向量外,还可以构造直角坐标系从而获得坐标向量,运算更加方便。
  • 基于极坐标与方程的解析几何:这种方法其实可以回溯到当初学圆锥曲线的时期,把几何图形的相交、相切、相离抽象成方程解的问题。后来又学习过极坐标和参数方程,就会发现利用极坐标和参数方程去表示曲线实在是太方便了。这样的方法就可以把几何问题转化成一个代数问题来求解,大大提高了求解的效率。

2.Numpy在线性代数中的使用

直接跟教程敲了一遍python代码,如下:

import numpy as np def create(): # 创建向量 vector = np.array([1,2,3]) print(vector) print(vector.shape) #创建矩阵 matrix = np.array([[1,2,3],[4,5,6],[7,8,9]]) print(matrix) print(matrix.shape) #索引 print(vector[0]) print(matrix[1,1]) #切片 print(vector[0:2]) print(matrix[0:2,0:2]) #向量加法 vector1 = np.array([1,2,3]) vector2 = np.array([4,5,6]) print(np.add(vector1,vector2)) print(np.add(vector1[1],vector2[2])) #矩阵乘法 matrix1 = np.array([[1,2],[3,4]]) matrix2 = np.array([[5,6],[7,8]]) print(np.dot(matrix1,matrix2)) #数量乘法 scalar = 5 scaled_vector = scalar*vector print("Scaled vector",scaled_vector) #矩阵的转置示例 transposed_matrix = matrix.T print("Transposed_matrix:\n",transposed_matrix) #计算行列式示例 matrix_determinant = np.linalg.det(matrix) print("Matrix determinant:",matrix_determinant) #Q:行列式的定义,以及使用场景 # 求解线性方程组 A = np.array([[3,1],[1,2]]) b = np.array([9,8]) solution = np.linalg.solve(A,b) print("Solution of the linear system:",solution) # numpy.linalg # 计算逆矩阵 pseudo_inverse_matrix = np.linalg.pinv(matrix) print("Pseudo-inverse of the matrix:") print(pseudo_inverse_matrix) # 特征值和特征向量 eigenvalues,eigenvectors = np.linalg.eig(matrix) print(eigenvalues) print(eigenvectors) # 奇异值分解 U,S,V = np.linalg.svd(matrix) print(U) print(S) print(V) # 范数计算 norm = np.linalg.norm(vector) print(norm) if __name__ == '__main__': create() 

3.国赛求解

2023高教社杯全国大学生数学建模竞赛B题

3.1题目

在这里插入图片描述
在这里插入图片描述

3.2 问题1求解
建立模型

请添加图片描述


图1 求解单波速测深条带的覆盖深度W

请添加图片描述


图2 求解相邻测线重叠覆盖部分

代码求解
import numpy as np from scipy.optimize import fsolve # 常量定义 theta = 2 * np.pi / 3 # 全开角 alpha = 1.5 / 180 * np.pi # 海底坡度 htheta = theta / 2 # 半开角 h = 70 # 中心点的海水深度 d = 200 # 测线距离 k = np.tan(np.pi / 2 - htheta) # 超声波直线的斜率 k0 = np.tan(alpha) # 海底斜率 # 初始化 Aleft = [] # 左端点坐标 Aright = [] # 右端点坐标 Acenter = [] # 中心点坐标 W = [] # 覆盖宽度 # 求解交点 for n in range(-4, 5): leftsolve = lambda t: k * (t - n * d) - k0 * t + h rightsolve = lambda t: -k * (t - n * d) - k0 * t + h tleft = fsolve(leftsolve, 0) tright = fsolve(rightsolve, 0) Aleft.append([tleft[0], k0 * tleft[0] - h]) Aright.append([tright[0], k0 * tright[0] - h]) Acenter.append([200 * n, k0 * 200 * n - h]) Aleft = np.array(Aleft) Aright = np.array(Aright) Acenter = np.array(Acenter) D = Acenter[:, 1] # 海水深度 W = np.sqrt((Aleft[:, 0] - Aright[:, 0]) ** 2 + (Aleft[:, 1] - Aright[:, 1]) ** 2) # 覆盖宽度 # 计算重合部分 cover = np.zeros(8) for i in range(8): cover[i] = np.sqrt((Aright[i, 0] - Aleft[i + 1, 0]) ** 2 + (Aright[i, 1] - Aleft[i + 1, 1]) ** 2) eta = cover / W[1:] # 打印结果 print("海水深度 D:", D) # 海水深度 D: [-90. -85. -80. -75. -70. # -64. -59. -54. -49.0] print("覆盖宽度 W:", W) # 覆盖宽度 W: [315. 297. 279. 261. 243.0 # 224. 206. 188. 170.] print("重合部分比例 eta:", eta) # 重合部分比例 eta: [0. 0. 0. 0. 0. 0.0 # 0.0 0.] 
3.3 问题2求解

在这里插入图片描述

4.问题答疑

Q1:什么是行列式,其使用场景是什么

行列式(Determinant)是线性代数中的一个重要概念,它是一个方阵(即行数与列数相等的矩阵)对应的一个标量值。行列式具有许多重要的性质和应用场景。以下是行列式的定义以及一些主要的使用场景。

行列式的定义

对于一个 n × n n \times n n×n的方阵 A A A,行列式 det ( A ) \text{det}(A) det(A)可以递归定义如下:

  1. 1×1矩阵的行列式
    det ( A ) = a 11 \text{det}(A) = a_{11} det(A)=a11
  2. 2×2矩阵的行列式
    det ( A ) = a 11 a 22 − a 12 a 21 \text{det}(A) = a_{11}a_{22} – a_{12}a_{21} det(A)=a11a22a12a21
  3. nxn矩阵的行列式
    det ( A ) = ∑ j = 1 n ( − 1 ) 1 + j a 1 j det ( A 1 j ) \text{det}(A) = \sum_{j=1}^{n} (-1)^{1+j} a_{1j} \text{det}(A_{1j}) det(A)=j=1n(1)1+ja1jdet(A1j)
    其中, A 1 j A_{1j} A1j表示从矩阵 A A A中去掉第1行和第j列后得到的 ( n − 1 ) × ( n − 1 ) (n-1) \times (n-1) (n1)×(n1)子矩阵。这个定义可以推广到更高维的矩阵,称为递归定义。

行列式的性质
  1. 行列式的乘法性质:如果 A A A B B B是两个 n × n n \times n n×n的矩阵,则
    det ( A B ) = det ( A ) ⋅ det ( B ) \text{det}(AB) = \text{det}(A) \cdot \text{det}(B) det(AB)=det(A)det(B)
  2. 行列交换的影响:交换矩阵的两行,行列式的值取反。
  3. 行列等价变换:若矩阵的某行加上另一行的倍数,则行列式的值不变。
  4. 行列重复:如果矩阵有两行相同,则行列式的值为0。
  5. 三角矩阵的行列式:对于上三角矩阵或下三角矩阵,其行列式为对角线上元素的乘积。
行列式的使用场景
  1. 求解线性方程组:使用行列式和Cramer法则可以求解线性方程组。例如,对于线性方程组 A X = B AX = B AX=B,如果 det ( A ) ≠ 0 \text{det}(A) \neq 0 det(A)=0,则方程组有唯一解。
  2. 矩阵的可逆性判断:一个矩阵 A A A是可逆的当且仅当 det ( A ) ≠ 0 \text{det}(A) \neq 0 det(A)=0
  3. 特征值与特征向量:行列式用于计算矩阵的特征值,通过解特征方程 det ( A − λ I ) = 0 \text{det}(A – \lambda I) = 0 det(AλI)=0可以找到矩阵 A A A的特征值 λ \lambda λ
  4. 面积和体积计算:在几何学中,行列式可以用于计算多边形的面积和多面体的体积。例如,平面上两个向量的行列式的绝对值等于这两个向量张成的平行四边形的面积。
  5. 变换的雅可比行列式:在多变量微积分中,变换的雅可比行列式用于描述变换在不同点的局部伸缩和旋转性质。

行列式在数学的多个领域都有广泛应用,包括线性代数、微积分、几何学和数值分析等。理解行列式及其性质,对于深入学习和应用这些领域的知识是非常重要的。

Q2:2023B题问题一用相似三角形求解覆盖宽度 W W W

5.学习感想

6.疑问

在这里插入图片描述

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/127457.html

(0)
上一篇 2025-09-07 16:26
下一篇 2025-09-07 16:33

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信