DW数学建模学习笔记——task1

第1章 解析方法与几何模型

1.1 向量表示法与几何建模基本案例

1.1.1 几何建模的思想

数学世界的探索始于计数和丈量。计数带来了数字和代数学,而丈量则推动了几何学的发展。高中毕业后,我们对数学模型的理解还较浅,但几何模型对我们而言是最直观的。通过几何定理,我们可以直观地感受几何关系,并利用这些关系推算长度等。

几何模型可以分为位置关系和数量关系。位置关系包括平行、垂直等,数量关系涉及边长、角度、面积等求解。分析几何问题的方法主要有三种:

  1. 传统几何的演绎-证明体系:基于已证明的公理和定理,通过逻辑推理得出结果。
  2. 基于向量的计算化几何:将几何问题转化为向量的计算问题,方便求解。
  3. 基于极坐标与方程的解析几何:利用极坐标和参数方程,将几何问题转化为代数问题求解。

常见的几何定理包括三角形内角和定理、勾股定理、正弦定理、余弦定理、圆幂定理等。这些定理在解决几何问题时非常有用。

1.1.2 向量表示与坐标变换

向量是几何中表示方向和距离的工具,可以在高维空间中进行加减运算、数量乘运算等。在Python中,可以使用NumPy库创建和操作向量。例如:

import numpy as np
x = np.array([1, 2, 3, 5, 8])

向量的引入不仅仅是为了表示几何图形中的方向和距离,更重要的是利用代数方法解决几何问题。在物理问题、计算机图形学等领域,向量运算简化了计算过程。

二维空间的旋转变换

import numpy as np

theta = np.radians(30)
rotation_matrix = np.array([
    [np.cos(theta), -np.sin(theta)],
    [np.sin(theta), np.cos(theta)]
])
point = np.array([a, b])
rotated_point = rotation_matrix.dot(point)
print("旋转后的坐标为:", rotated_point)

三维空间的旋转变换

import numpy as np

alpha = np.radians(30)
beta = np.radians(45)
gamma = np.radians(60)

R_z = np.array([[np.cos(alpha), -np.sin(alpha), 0],
                [np.sin(alpha), np.cos(alpha), 0],
                [0, 0, 1]])

R_y = np.array([[np.cos(beta), 0, np.sin(beta)],
                [0, 1, 0],
                [-np.sin(beta), 0, np.cos(beta)]])

R_x = np.array([[1, 0, 0],
                [0, np.cos(gamma), -np.sin(gamma)],
                [0, np.sin(gamma), np.cos(gamma)]])

R = R_z @ R_y @ R_x

P = np.array([1, 2, 3])
P_rotated = R @ P

print("旋转后P点的坐标为:", P_rotated)

1.2 Numpy 与线性代数

1.2.1 Numpy向量与矩阵的操作

在科学计算中,Numpy的数组对象是处理问题的得力助手。它能进行向量化运算,提升代码简洁性和运行速度。

创建向量和矩阵

import numpy as np
vector = np.array([1, 2, 3])
matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

向量和矩阵的基本属性

print(vector.shape)  # (3,)
print(matrix.shape)  # (3, 3)

索引和切片

print(vector[0])  # 输出第一个元素, 1
print(matrix[1, 1])  # 输出第二行第二列的元素, 5

向量和矩阵的运算

vector1 = np.array([1, 2, 3])
vector2 = np.array([4, 5, 6])
print(np.add(vector1, vector2))  # [5, 7, 9]

matrix1 = np.array([[1, 2], [3, 4]])
matrix2 = np.array([[5, 6], [7, 8]])
print(np.dot(matrix1, matrix2))  # [[19, 22], [43, 50]]
1.2.2 利用Numpy进行线性代数基本运算

Numpy的广播机制和线性代数函数使得数值计算更加便捷。

数量乘法

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)

求解线性方程组

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)
1.2.3 numpy.linalg 的使用

Numpy的 linalg 子模块提供了丰富的线性代数函数。

计算逆矩阵

pseudo_inverse_matrix = np
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值