首页 > 编程语言 >程序员数学阅读笔记

程序员数学阅读笔记

时间:2024-02-02 15:47:40浏览次数:21  
标签:mathbf 点积 三维 笔记 程序员 二维 数学 两个 向量

引入抽象是有原因的:它可以帮助你组织和交流更宏大、更强有力的思想。

数学在许多软件工程领域都有着趣味盎然和收益颇丰的应用。
数学可以量化随时间变化的数据的趋势,如预测股票价格的走势。

数字元组(称为向量)代表多维数据。具体来说,三维向量是三元数对,可以表示空间中的点。可以通过组合向量指定的三角形来构建复杂的三维图形。
微积分是研究连续变化的数学。许多物理定律是用微积分方程来写的,这些方程称为微分方程。
作为一名程序员,你已经训练了自己精确思考和沟通的能力,这种技能也会帮助你学习数学。
本书中使用了大量的二维向量,是我们用于推理高维问题的跳板。

从角度和距离的关系来看,角的正切等于垂直距离除以水平距离(见图2-39)。
image

第3章 上升到二维世界

本章内容

  • 建立三维向量的心智模型
  • 进行三维向量运算
  • 使用点积和向量积测量长度和方向
  • 在二维平面上渲染三维对象

但即使程序模拟了三维空间,大多数计算机屏幕只能显示二维画面。本章的任务是构建一些工具,用于把三维向量测量的三维对象转换成二维的,来把这些对象显示在屏幕上。

在二维平面上,向量拥有三种可互换的心智模型:坐标对、有固定长度和方向的箭头以及相对于原点的点。

我的包装器使用了诸如Points3D和Arrow3D这些新的类来将三维对象和二维对象区分开来。新函数draw3d负责解释和渲染三维对象,让它们看起来是三维的。

image

draw3d(
    Points3D((2,2,2),(1,-2,-2))
)

点积和向量积

点积取两个向量并返回一个标量(数),而向量积取两个向量并返回另一个向量。

点积(Dot Product)和向量积(Cross Product)是两种在向量空间中定义的运算,它们在数学、物理学和工程学等领域有着广泛的应用。

  1. 点积(Dot Product):
    点积,也称为标量积或内积,是两个向量的一种乘法运算,其结果是一个标量(即一个数值)。点积的计算公式如下:

对于两个向量 a = (a1, a2, ..., an) 和 b = (b1, b2, ..., bn)(其中 n 是向量的维度),它们的点积定义为:
[ \mathbf{a} \cdot \mathbf{b} = a_1b_1 + a_2b_2 + \cdots + a_nb_n ]

在二维空间中,点积可以表示为:
[ \mathbf{a} \cdot \mathbf{b} = a_xb_x + a_yb_y ]

在三维空间中,点积可以表示为:
[ \mathbf{a} \cdot \mathbf{b} = a_xb_x + a_yb_y + a_zb_z ]

点积的几何意义是,它等于两个向量的模(magnitude)的乘积与它们之间夹角的余弦值。如果两个向量的点积为零,那么这两个向量是正交的(即它们之间的夹角为90度)。

  1. 向量积(Cross Product):
    向量积,也称为外积,是两个向量的一种乘法运算,其结果是一个向量。这个新向量垂直于原来的两个向量构成的平面,并且其方向遵循右手定则。向量积的计算公式如下:

对于两个三维向量 a = (a1, a2, a3) 和 b = (b1, b2, b3),它们的向量积 c = (c1, c2, c3) 定义为:
[ \mathbf{c} = \mathbf{a} \times \mathbf{b} = \begin{vmatrix}
\mathbf{i} & \mathbf{j} & \mathbf{k} \
a_1 & a_2 & a_3 \
b_1 & b_2 & b_3 \
\end{vmatrix} ]

这里,i、j、k 是三维空间中的单位向量,矩阵的行列式计算结果给出了向量积的各个分量。向量积的模(magnitude)等于两个向量模的乘积与它们之间夹角的正弦值,方向由右手定则确定。

向量积的几何意义是,它可以用来计算两个向量构成的平行四边形的面积,或者在物理学中,用来计算力矩。

在实际应用中,点积和向量积可以用来解决各种问题,如计算投影、判断向量是否正交、计算力和力矩等。

点积(Dot Product)和向量积(Cross Product)是两种在向量空间中定义的运算,它们在数学、物理学和工程学等领域有着广泛的应用。

  1. 点积(Dot Product):
    点积,也称为标量积或内积,是两个向量的一种乘法运算,其结果是一个标量(即一个数值)。点积的计算公式如下:

对于两个向量 a = (a1, a2, ..., an) 和 b = (b1, b2, ..., bn)(其中 n 是向量的维度),它们的点积定义为:
\(\mathbf{a} \cdot \mathbf{b} = a_1b_1 + a_2b_2 + \cdots + a_nb_n\)
在二维空间中,点积可以表示为:
\(\mathbf{a} \cdot \mathbf{b} = a_xb_x + a_yb_y\)
在三维空间中,点积可以表示为:
\(\mathbf{a} \cdot \mathbf{b} = a_xb_x + a_yb_y + a_zb_z\)
点积的几何意义是,它等于两个向量的模(magnitude)的乘积与它们之间夹角的余弦值。如果两个向量的点积为零,那么这两个向量是正交的(即它们之间的夹角为90度)。

  1. 向量积(Cross Product):
    向量积,也称为外积,是两个向量的一种乘法运算,其结果是一个向量。这个新向量垂直于原来的两个向量构成的平面,并且其方向遵循右手定则。向量积的计算公式如下:

向量积的几何意义是,它可以用来计算两个向量构成的平行四边形的面积,或者在物理学中,用来计算力矩。
在实际应用中,点积和向量积可以用来解决各种问题,如计算投影、判断向量是否正交、计算力和力矩等。

右手规则

这就是点积最重要的应用之一:在不做任何三角运算的情况下,计算两个向量是否垂直。这种垂直的情况也可以用来区分其他情况:如果两个向量的夹角小于90°,则向量的点积为正;如果夹角大于90°,则
向量的点积为负
点积为零的两个向量在三维空间中确实是垂直的
3.4 向量积:测量定向区域
它与点积的相似之处在于,输入向量的长度和相对方向决定了输出;但不同之处在于,它的输出不仅有大小,还有方向。
向量积总是返回垂直于两个输入的向量
向量积的长度等于一个平行四边形的面积
现在是时候开始我们的终极项目了:用多边形构建一个三维对象,并在二维画布上绘制它。你会使用到目前为止见过的所有向量操作。特别是,向量积将帮你判断哪些多边形是可见的。
3.5 在二维平面上渲染三维对象

小结:
二维中的向量有长度和宽度,而三维空间中的向量还有高度。
三维向量是由称为坐标、坐标和坐标的三元数对定义的。这些坐标说明了三维空间中的某个点在每个方向上距离原点有多远。
和二维向量一样,三维向量也可以与标量进行加法、减法和乘法运算。我们可以用勾股定理的三维版本来求它们的长度。
点积是将两个向量相乘并得到一个标量的方法。它衡量了两个向量的对齐程度,其值也可以用来计算两个向量的夹角。
向量积是将两个向量相乘得到第三个向量的方法,这个向量与两个输入向量垂直。向量积的输出大小就是两个输入向量张成的平行四边形的面积。
任何三维对象的表面都可以表示成三角形的集合,其中每个三角形分别由代表其顶点的三个向量定义。
使用向量积,我们可以确定三角形在三维空间中可见的方向。由此可知三角形对观察者是否可见,或者它在给定光源下被照亮的程度。通过绘制和定义对象表面的所有三角形并进行着色,可以让其
看起来立体感十足。
image
image
image
image

导数和积分。这两个概念都是与函数有关的运算。导数取一个函数,返回表示其变化率的函数。积分则相反:它取表示变化率的函数,返回原始累积值的函数。

image

第三部分 机器学习的应用

标签:mathbf,点积,三维,笔记,程序员,二维,数学,两个,向量
From: https://www.cnblogs.com/clamber/p/18003058

相关文章

  • 2024/2/2 算法笔记
    1.KMP情景:给出一个母串和一个字串,求字串在母串中出现的所有位置。我们定义子串s有一个border串,它是一个非s串的子串t,满足t既是s的前缀也是s的后缀记住思想:退而求其次。intne[1000005];voidsolve(){strings,t;//母串匹配串cin>>s>>t;intn1=s.length()......
  • 拉格朗日插值学习笔记
    拉格朗日插值定义给定一个多项式函数过点\((x_i,y_i)\),求出这个多项式函数的在\(x=k\)时的取值。公式\[f(k)=\sum_{i=0}^ny_i\prod_{j\not=i}\dfrac{k-x_j}{x_i-x_j}\]时间复杂度\(O(n^2)\)横坐标连续的拉格朗日插值在横坐标连续的情况下,可以做到\(O(n)\)插值。\[\b......
  • 萌新的多项式学习笔记(板子)
    萌新的多项式学习笔记(板子)详细讲解FFT直接放板子structcp{ doublex,y; cp(doublexx=0,doubleyy=0){x=xx,y=yy;}};intr[maxn];cpoperator+(constcp&a,constcp&b){returncp(a.x+b.x,a.y+b.y);}cpoperator-(constcp&a,constcp&b){returncp(a.x-b.x,a......
  • [学习笔记] JavaScript中字符串的Slice()方法
    slice方法是对字符串进行切割/截取的一种方法。string.slice(index1,index2)其中:string为字符串名;index1为数字,意为字符串从第X个字符开始截取,如为1,则从字符串第1个字符开始截取。同时该数可为负数,当设为负数时则是从倒数第X个字符开始截取(但仍旧是向最后一个字符的方......
  • <学习笔记> 二项式反演
    二项式反演证明我们设\(g(x)\)为任意\(x\)个集合的交集的大小,\(f(x)\)表示任意\(x\)个集合补集的交集大小。首先有(组合数学6.2)\[|\overline{S_1}\cap\overline{S_2}\cap...\cap\overline{S_{n-1}}\cap\overline{S_n}|=|U|-|{S_1}|-|{S_2}|-...+(-1)^n\times|{S......
  • [数论学习笔记01]完系/同余最短路/费马小定理/扩欧/中国剩余定理
    #[数论学习笔记01]完系/同余最短路/费马小定理/扩欧/中国剩余定理###每日蒟蒻小故事(1/1)蒟蒻带了一本崭新的笔记本到S组.他发现这一节课居然在学习数论."听不懂,求讲解!"蒟蒻说.大佬邪魅一笑,并未理会.蒟蒻只能一边听着老师的讲解,一边努力地记着笔记."什么是完全剩余系......
  • [算法学习笔记02]分块应用
    #[算法学习笔记02]分块应用###每日蒟蒻小故事(1/1)蒟蒻考完CSP回到S1,开始(和S2一起)新一轮的S组学习。第一周,学校学习的内容是分块应用。蒟蒻尝试听懂,并听懂了$\huge\frac{1}{3}$的内容。被五年级小朋友吊打的蒟蒻想学懂分块应用。“所以……什么是分块应用呢?”###什......
  • [算法学习笔记01]线段树
    #[算法学习笔记01]线段树###每日蒟蒻小故事(1/1)蒟蒻刚刚升到S组,发现S组正在学习线段树Ⅲ.蒟蒻并不知道什么是线段树.蒟蒻十分害怕,向大佬询问什么是线段树.大佬邪魅一笑,并未解释.于是可怜的蒟蒻什么也听不懂,只得在洛谷和OIWIKI上自学线段树.“所以什么是线段树?”###什么......
  • Go语言精进之路读书笔记第12条——使用复合字面值作为初值构造器
    有些时候,零值并非最好的选择,我们有必要为变量赋予适当的初值以保证其后续以正确的状态参与业务流程计算,尤其是Go语言中的一些复合类型的变量。Go提供了复合字面值(compositeliteral)语法可以作为复合类型变量的初值构造器。Go语言中的复合类型包括结构体、数组/切片和map。Go提供......
  • Amway安利笔记
    336成功密码:三个本:本钱 本事 本人。做生意需要本钱,做安利不需要本钱和投资,钱是安利公司出。钱不自付。本事有人教,谁教?老师教。本人只要学习就可以了。外行通过学习成为内行。只要变为内行做事才会成功。三个值得(诱惑):①收入不受限制;②生活方式自由;③有人教有人帮换个......