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

文章目录

  • 解析几何与方程模型
      • 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 npdef 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 = 5scaled_vector = scalar*vectorprint("Scaled vector",scaled_vector)#矩阵的转置示例transposed_matrix = matrix.Tprint("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 + hrightsolve = lambda t: -k * (t - n * d) - k0 * t + htleft = 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是平行于水平面”

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用rkhunter Rootkit猎手检查Rootkit:全面指南

在网络安全领域,Rootkit是一种隐蔽性极强的恶意软件,它能够隐藏攻击者的痕迹和未授权访问路径。Linux系统因其开放性和复杂性,容易受到Rootkit的攻击。rkhunter,即Rootkit Hunter,是一款专门设计来检测Linux系统中Root…

centos查找文件 及 操作写入的进程

du -sh * 查看目录空间占用、发现大文件,确定进程,结束 yum install lsof 安装lsof 查看文件写入的 进程 2. lsof /root/.influxdbv2/engine/data/bab49411e5f7cbce/autogen/1/000000036-000000002.tsm COMMAND PID USER FD TYPE …

sql server 非sa账号配置发布订阅

如果有些源端环境,sa账号被禁用,或者有其他问题,那可以按以下步骤操作。 使用高权限账户登录,另外需要拥有源端windows用户管理员的账号和密码 表发布订阅成功的前提:发布的表必须有主键。 创建一个专门用于发布订阅的…

国际导师上海面授大规模敏捷LeSS认证2024年8月22-24日开班 | 报名享特大福利

课堂互动练习 学员反馈 • “LeSS课我正经听过的有3次;两次Bas Vodde主讲,一次吕毅老师主讲。第一次应该是2015年,这门课中体现的对组织运作和产品开发底层逻辑的洞见令我折服。后来又陆续听了两次,每次都有更多体会。 我试着从一…

【递归、搜索与回溯】综合练习四

综合练习四 1.单词搜索2.黄金矿工3.不同路径 III 点赞👍👍收藏🌟🌟关注💖💖 你的支持是对我最大的鼓励,我们一起努力吧!😃😃 1.单词搜索 题目链接:79. 单词搜…

杨辉三角的快速求法

一、杨辉三角形 杨辉三角形,又称贾宪三角形,帕斯卡三角形,是二项式系数在三角形中的一种几何排列,是二项式系数在三角形中的一种几何排列,古称“开方作法本源图”。 杨辉三角的历史 北宋人贾宪约1050年首先使用“贾…

2024年,计算机相关专业依旧是热门选择吗?未来趋势大揭秘!

文章目录 引言一、行业竞争现状二、专业与个人的匹配度判断三、专业前景分析总结 引言 在科技日新月异的今天,计算机专业一直以其强大的实用性和广阔的就业前景吸引着无数学子的目光。然而,随着人工智能、大数据、云计算等领域的飞速发展,我…

第6天:表单处理与验证

第6天:表单处理与验证 目标 处理用户输入,实现数据验证。 任务概览 使用Django的表单类创建表单。学习表单验证和自定义验证方法。实现表单提交和数据处理。 详细步骤 1. 使用Django的表单类创建表单 Django提供了forms模块来处理表单&#xff0c…

下一个排列 - LeetCode 热题 99

大家好!我是曾续缘🤗 今天是《LeetCode 热题 100》系列 发车第 99 天 技巧第 4 题 ❤️点赞 👍 收藏 ⭐再看,养成习惯 下一个排列 整数数组的一个 排列 就是将其所有成员以序列或线性顺序排列。 例如,arr [1,2,3] &a…

「51媒体」活动会议,展览展会,直播曝光的一种方法

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 我们在做活动会议,或者参加展览展会,需要进行直播的时候,可以通过一键同步多个媒体平台的方法,来扩大曝光,比如一场直播我们可…

FFmpeg开发笔记(三十九)给Visual Studio的C++工程集成FFmpeg

《FFmpeg开发实战:从零基础到短视频上线》一书的“第11章 FFmpeg的桌面开发”介绍了如何在Windows环境对Qt结合FFmpeg实现桌面程序,那么Windows系统通过Visual Studio开发桌面程序也是很常见的,下面就介绍如何在Visual Studio的C工程中集成F…

(转)请介绍一下Redis的数据淘汰策略

1. **NoEviction(不淘汰)**:当内存不足时,直接返回错误,不淘汰任何数据。该策略适用于禁止数据淘汰的场景,但需要保证内存足够。 2. **AllKeysLFU(最少使用次数淘汰)**:…

弃用Docker Desktop:在WSL2中玩转Docker之Docker Engine 部署与WSL入门

Docker技术概论 在WSL2中玩转Docker之Docker Engine部署 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite:http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://bl…

nginx精准禁止特定国家或者地区IP访问

1、安装依赖 dnf -y install gcc-c libtool gd-devel pcre pcre-devel openssl openssl-devel zlib zlib-devel libmaxminddb-devel pcre-devel zlib-devel gcc gcc-c make git2、获取NGINX安装包并安装 wget https://nginx.org/download/nginx-1.26.1.tar.gz git clone http…

【unity笔记】四、Enviro- Sky and Weather插件使用

一、 简介 Enviro内置 RP、URP、HDRP,开箱即用。 动态天空 随附的天空系统经过精心设计,以实现最佳性能和灵活性。使用多种颜色渐变,而不是调整人工数字。为您的项目创建独特且非常逼真的天空非常简单! 灯光 由 Enviro 控制的逼…

Python学习打卡:day10

day10 笔记来源于:黑马程序员python教程,8天python从入门到精通,学python看这套就够了 目录 day1073、文件的读取操作文件的操作步骤open()打开函数mode常用的三种基础访问模式读操作相关方法read()方法readlines()方法readline()方法for循…

计算机组成原理---Cache的基本工作原理习题

对应知识点: Cache的基本原理 1.某存储系统中,主存容量是Cache容量的4096倍,Cache 被分为 64 个块,当主存地址和Cache地址采用直接映射方式时,地址映射表的大小应为()(假设不考虑一致维护和替…

LeetCode 算法:删除链表的倒数第 N 个结点 c++

原题链接🔗:删除链表的倒数第 N 个结点 难度:中等⭐️⭐️ 题目 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例 1: 输入:head [1,2,3,4,5], n 2 输出&#xff1a…

(三)Kafka 安全之使用 SSL 的加密和身份验证

目录 一. 前言 二. 使用 SSL 的加密和身份验证 2.4. 生产中的常见缺陷(Common Pitfalls in Production) 2.4.1. 扩展密钥用法(Extended Key Usage) 2.4.2. 中间证书(Intermediate Certificates) 2.4.…

【无线传感网】LEACH路由算法

1、LEACH路由算法简介 LEACH协议,全称是“低功耗自适应集簇分层型协议” (Low Energy Adaptive Clustering Hierarchy),是一种无线传感器网络路由协议。基于LEACH协议的算法,称为LEACH算法。 2、LEACH路由算法的基本思想 LEACH路由协议与以往的路由协议的不同之处在于其改变…