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

2024-06-20 11:20

本文主要是介绍【数学建模】解析几何与方程模型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 解析几何与方程模型
      • 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.chinasem.cn/article/1077990

相关文章

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G

Retrieval-based-Voice-Conversion-WebUI模型构建指南

一、模型介绍 Retrieval-based-Voice-Conversion-WebUI(简称 RVC)模型是一个基于 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)的简单易用的语音转换框架。 具有以下特点 简单易用:RVC 模型通过简单易用的网页界面,使得用户无需深入了

uva 10014 Simple calculations(数学推导)

直接按照题意来推导最后的结果就行了。 开始的时候只做到了第一个推导,第二次没有继续下去。 代码: #include<stdio.h>int main(){int T, n, i;double a, aa, sum, temp, ans;scanf("%d", &T);while(T--){scanf("%d", &n);scanf("%lf", &first);scanf

uva 10025 The ? 1 ? 2 ? ... ? n = k problem(数学)

题意是    ?  1  ?  2  ?  ...  ?  n = k 式子中给k,? 处可以填 + 也可以填 - ,问最小满足条件的n。 e.g k = 12  - 1 + 2 + 3 + 4 + 5 + 6 - 7 = 12 with n = 7。 先给证明,令 S(n) = 1 + 2 + 3 + 4 + 5 + .... + n 暴搜n,搜出当 S(n) >=

uva 11044 Searching for Nessy(小学数学)

题意是给出一个n*m的格子,求出里面有多少个不重合的九宫格。 (rows / 3) * (columns / 3) K.o 代码: #include <stdio.h>int main(){int ncase;scanf("%d", &ncase);while (ncase--){int rows, columns;scanf("%d%d", &rows, &col

透彻!驯服大型语言模型(LLMs)的五种方法,及具体方法选择思路

引言 随着时间的发展,大型语言模型不再停留在演示阶段而是逐步面向生产系统的应用,随着人们期望的不断增加,目标也发生了巨大的变化。在短短的几个月的时间里,人们对大模型的认识已经从对其zero-shot能力感到惊讶,转变为考虑改进模型质量、提高模型可用性。 「大语言模型(LLMs)其实就是利用高容量的模型架构(例如Transformer)对海量的、多种多样的数据分布进行建模得到,它包含了大量的先验

图神经网络模型介绍(1)

我们将图神经网络分为基于谱域的模型和基于空域的模型,并按照发展顺序详解每个类别中的重要模型。 1.1基于谱域的图神经网络         谱域上的图卷积在图学习迈向深度学习的发展历程中起到了关键的作用。本节主要介绍三个具有代表性的谱域图神经网络:谱图卷积网络、切比雪夫网络和图卷积网络。 (1)谱图卷积网络 卷积定理:函数卷积的傅里叶变换是函数傅里叶变换的乘积,即F{f*g}

秋招最新大模型算法面试,熬夜都要肝完它

💥大家在面试大模型LLM这个板块的时候,不知道面试完会不会复盘、总结,做笔记的习惯,这份大模型算法岗面试八股笔记也帮助不少人拿到过offer ✨对于面试大模型算法工程师会有一定的帮助,都附有完整答案,熬夜也要看完,祝大家一臂之力 这份《大模型算法工程师面试题》已经上传CSDN,还有完整版的大模型 AI 学习资料,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言