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

文章目录

  • 解析几何与方程模型
      • 1.几何建模思想
      • 2.Numpy在线性代数中的使用
      • 3.国赛求解
        • 3.1题目
        • 3.2 问题1求解
          • 建立模型
          • 代码求解
        • 3.3 问题2求解
      • 4.问题答疑
      • 5.学习感想
      • 6.疑问

解析几何与方程模型

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

项目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.94873726 -85.71155294 -80.47436863 -75.23718431 -70.
# -64.76281569 -59.52563137 -54.28844706 -49.05126274]

print("覆盖宽度 W:", W)
# 覆盖宽度 W: [315.81332829 297.62756059 279.44179288 261.25602517 243.07025746
# 224.88448975 206.69872205 188.51295434 170.32718663]

print("重合部分比例 eta:", eta)
# 重合部分比例 eta: [0.35695443 0.31510572 0.26743092 0.21262236 0.14894938 0.07407224
# 0.01525164 0.12364966]
3.3 问题2求解

在这里插入图片描述

4.问题答疑

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

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

行列式的定义

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

  1. 1x1矩阵的行列式
    det ( A ) = a 11 \text{det}(A) = a_{11} det(A)=a11
  2. 2x2矩阵的行列式
    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

按照我的思维,要求解测线距离中心点不同距离下的覆盖宽度,就要分多次代值计算。但是马哥在求解时候使用了三角形相似,对应边长成比例的方法,得出以下等式:
W ′ D + d tan ⁡ α = W D . (1.3.10) \frac{W'}{D + d \tan\alpha} = \frac{W}{D}. \tag{1.3.10} D+dtanαW=DW.(1.3.10)
因为测线距离 d d d、海底倾角 a l p h a alpha alpha、前一段测线的覆盖宽度 W W W和前一段测线距海底高度 D D D已知,直接替换d即可求出前一段测线和本测线的覆盖宽度 W ′ W' W

5.学习感想

距离上一次数据建模还是在上一次。初次看国赛题目觉得就是高考第17题,求解多边形之间的关系,上手做题时脑袋抽了,各种定理忘得七七八八,一度怀疑高考时才是我的巅峰水准(=-=),硬着头皮把各种证明定理捡起来,勉强能理解整个建模过程。
对比自己建模写的解题思路,马哥写得条理清晰,有序地建立各条公式,且最后解题的到答案时,还会分析结果,让读者更信服模型的可靠性及答案的真实性。这是一个值得我学习的闪光点(当年某人直接算出结果就提交了==)
之前建模解答都是使用matlab求解答案,在今次学习过程中接触到python的一些常用库,如:Numpy、Sympy、Scipy。

6.疑问

1、公式1.4.4是否有误
在这里插入图片描述
2、文档中指出平面BEC是平行于水平面IGHF。
已和马哥沟通,“平面BEC是平行于水平面IGHF”改为“平面BEC是平行于水平面”

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/725654.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

htb_Editorial

hack the book Editorial 端口扫描 80 22 目录扫描 /upload 是一个上传book information的页面 其中最顶上有一个可以上传书本封面的地方,可以从本地上传,也可以从远程下载 这里可能涉及ssrf和本地文件上传,逐一尝试 随便上传一个图片…

使用高斯混合模型(GMM)进行猫狗音频聚类(Kaggle Audio Cats and Dogs)

Audio Cats and Dogs | Kaggle 目录 一、实验目标 二、数据分析 三、实验结果 四、改进方向 一、实验目标 数据集包括164个标注为猫的.wav文件,总共1323秒和113个标注为狗叫声的.wav文件,总共598秒,要求判别每个音频是狗叫还是猫叫 二、…

Spark SQL函数详解:案例解析(第8天)

系列文章目录 1- Spark SQL函数定义(掌握) 2- Spark 原生自定义UDF函数案例解析(掌握) 3- Pandas自定义函数案例解析(熟悉) 4- Apache Arrow框架案例解析(熟悉) 5- spark常见面试题…

Centos 配置安装Mysql

linux安装配置mysql的方法主要有yum安装和配置安装两种,由于yum安装比较简单,但是会将文件分散到不同的目录结构下面,配置起来比较麻烦,这里主要研究一下配置安装mysql的方法 1、环境说明 centos 7.9 mysql 5.7.372、环境检查 …

ChatGPT Plus GPT-4o Claude 3 Opus合租拼车全新方式

无需自己搭建,登录即可用,国内直连访问,聚合多家最强大模型,随意选择使用。立即体验 datapipe.top 支持 OpenAI 最新 GPT-4o ,获得快速高质量的对话,保证可用配额。支持多种大模型,GPT-4o &…

SerialChart上位机使用详解

SerialChart 上位机 软件分为三个区域:接收数据区,用于显示串口接收的数据。参数配置区,用于配置串口参数和显示参数。波形显示区,显示串口数据的波形。 在参数配置区写入串口号,波特率,通道波形颜色等&am…

高压电阻器支持牙科 X 射线成像的准确性

为了捕获患者牙齿和颌骨的足够图像,牙医依靠锥形束计算机断层扫描 (CBCT) 系统的先进 3D 成像。CBCT系统的输出对于准确诊断口腔健康问题和随后的治疗计划至关重要。为了确保这些图像的可靠性,CBCT系统制造商利用了Exxelia Ohmcra…

Jenkins+K8s实现持续集成(一)

镜像仓库的搭建 docker run -d \--restartalways \--name registry \-p 5000:5000 \-v /root/devops/registry/data:/var/lib/registry \registry安装完之后,执行下面命令可以看到镜像仓库已经安装成功 docker ps 然后在浏览器上输入下面地址进行访问 http://ip:…

一键简易桌签(带背景)-Word插件-大珩助手

问题整理: 如何Word中设计简易桌签?如何设置带背景图的桌签? Word大珩助手是一款功能丰富的Office Word插件,旨在提高用户在处理文档时的效率。它具有多种实用的功能,能够帮助用户轻松修改、优化和管理Word文件&…

Python酷库之旅-比翼双飞情侣库(17)

目录 一、xlwt库的由来 1、背景和需求 2、项目启动 3、功能特点 4、版本兼容性 5、与其他库的关系 6、示例和应用 7、发展历史 二、xlwt库优缺点 1、优点 1-1、简单易用 1-2、功能丰富 1-3、兼容旧版Excel 1-4、社区支持 1-5、稳定性 2、缺点 2-1、不支持.xls…

LVGL开发教程-Flex(弹性布局)

系列文章目录 知不足而奋进 望远山而前行 目录 系列文章目录 文章目录 前言 1.常用方法 2.代码实现 3.对齐方式 4.控件特殊的size 总结 前言 Flexbox布局在现代界面设计中扮演着重要角色,特别是在响应式和动态布局方面。LVGL(LittlevGL&#x…

Dockerfile封装制作pytorch(tensorflow)深度学习框架 + jupyterlab服务 + ssh服务镜像

一:docker-hub官网寻找需求镜像 1.我们在https://hub.docker.com/官网找到要封装的pytorch基础镜像,这里我们以pytorch1.13.1版本为例 2.我们找到的这个devel版本的镜像(我们需要cuda的编译工具) pytorch版本是1.13.1,…

气体泄露隐患多,佛山工业可燃气体报警器年检校准来帮忙

在佛山这座工业发达的城市,可燃气体报警器的应用日益广泛,涉及化工、冶金、石油等多个领域。 然而,长时间的使用和恶劣的工业环境可能导致报警器的性能下降,甚至出现误报或漏报的情况。 因此,定期对可燃气体报警器进…

OPenCV实现把人形轮廓画在实时视频画面中

操作系统:ubuntu22.04OpenCV版本:OpenCV4.9IDE:Visual Studio Code编程语言:C11 1.功能描述 当你从摄像头读取实时视频时,如果想在视频的画面中画一个方框,或者是画一个圆,是很简单的事情,可是…

VMR,支持30+种编程语言的SDK版本管理器,支持Windows/MacOS/Linux。

官方文档地址:documents 官方项目地址:github 欢迎安装使用,分享转发,前往github star。 跨平台,支持Windows,Linux,MacOS支持多种语言和工具,省心受到lazygit的启发,拥…

LLM漫谈(七)| 使用PyTorch从零构建LLM

LLM是最流行AI聊天机器人的核心基础,比如ChatGPT、Gemini、MetaAI、Mistral AI等。在每一个LLM,有个核心架构:Transformer。我们将首先根据著名的论文“Attention is all you need”-https://arxiv.org/abs/1706.03762 来构建Transformer架构…

漏洞挖掘 | 记一次src挖掘-小程序敏感信息泄露

权当是一次漏洞挖掘的思路分享 闲言 就现在的一个web漏洞挖掘强度还是非常高的,所以我们不妨把我们的眼光投向一个之前可能未曾涉及到的区域———小程序 是的微信小程序,这玩意的防范能力和过滤能力其实对比web方向是要弱小很多的 进入正题 以下就是…

详细分析Element Plus的el-pagination基本知识(附Demo)

目录 前言1. 基本知识2. Demo3. 实战 前言 需求:从无到有做一个分页并且附带分页的导入导出增删改查等功能 前提一定是要先有分页,作为全栈玩家,先在前端部署一个分页的列表 相关后续的功能,是Java,推荐阅读&#x…

配置环境常规操作

一、看看显卡情况 1、看显卡驱动: nvidia-smi 2、验证cuda是否安装成功 nvcc -V 二、conda创建环境 conda create --name PatchCore_anomaly_detection python3.9 conda activate PatchCore_anomaly_detection 三、配置虚拟环境 cd C:\BaiduNetdiskDownload…

不同表格式下的小文件治理方式(开源RC file/ORC/Text非事务表、事务表、Holodesk表格式..)

友情链接: 小文件治理系列之为什么会出现小文件问题,小文件过多问题的危害以及不同阶段下的小文件治理最佳解决手段 小文件过多的解决方法(不同阶段下的治理手段,SQL端、存储端以及计算端) 概览 在前两篇博文中&am…