函数——离散数学part 1

本文介绍了函数的概念,包括单射、满射和双射函数的定义及其性质。讨论了复合函数、逆函数,并通过鸽洞原理探讨了函数的性质。此外,还提到了函数作为特殊二元关系的数学意义。

函数

设A,B是集合,f是A到B的二元关系,如果f满足,对于A中每一个元素a,存在B中的一个元素且仅一个元素b,使得<a,b>∈f,则称f为A到B的函数,若<a,b>∈f,则记b=f(a)。A为定义域,f(A)为值域
注意:函数是特殊的二元关系,它要求A中每一个元素都与B中元素相关,且A中的每一个元素只与B中的一个元素相关。
可以定义2∣A∣∣B∣2^{|A||B|}2AB个A到B的不同的二元关系,但只能定义∣B∣∣A∣|B|^{|A|}BA个A到B不同的函数。

特殊的函数

单射函数

设A,B是集合,f是A到B的函数,对于A中任意两个元素x1,x2x_1,x_2x1,x2x1≠x2x_1≠x_2x1=x2时,都有f(x1)≠f(x2)f(x_1)≠f(x_2)f(x1)=f(x2),则称f为A到B的单射函数。
|A|=|f(A)|≤|B|

满射函数

设A,B是集合,f是A到B的函数,如果函数的值域恰好是B,即f(A)=B,则称f是A到B的满射函数。
|A|≥|f(A)|=|B|

双射函数

设A,B是集合,f是A到B的函数,如果f既是单射函数又是满射函数,则f为双射函数,也称为一一对应函数。
|A|=|f(A)|=|B|

问题0:当|A|=|B|=n,可以定义多少种A到B的不同的双射函数:n!
问题1:当|A|=m,|B|=n,可以定义多少种A到B的不同的单射函数:Anm=n(n−1)...(n−m+1)A^m_n=n(n-1)...(n-m+1)Anm=n(n1)...(nm+1)
问题2:当|A|=m,|B|=n,可以定义多少种A到B的不同的满射函数:自定域做个数上的分组,分成n组,然后将同一组的元素看成一个元素,将问题转化成双射问题。

复合函数

设f是A到B的函数,g是B到C的函数,f和g合成的函数为复合函数,记为g○f,它是A到C的函数,当a∈A,b∈B,c∈C且f(a)=b,g(b)=c时,g○f(a)=g(f(a))=c
注意:当把f和g看作二元关系时,合成的关系记作f○g,而把f,g看作函数时,合成后的复合函数应记为g○f,这样g○f(x)=g(f(x))
复合满足结合律不满足交换律
定理:设f是A到B的函数,g是B到C的函数,A到C的复合函数为g○f,则若f,g都为单射(满射,双射)函数,则g○f为单射(满射,双射)函数。

逆函数

对函数f,把f看作二元关系,其逆关系不一定是函数。显然只有f为双射时,其逆关系才是函数。
定义:f是A到B的双射函数,则f的逆关系称为f的逆函数,记为f−1f^{-1}f1

结论:
一.
设f是A到B的函数,g是B到C的函数,A到C的复合函数为g○f,则
①若g○f是单射函数,则f是单射函数
②若g○f是满射函数,则g是满射函数
③若g○f是双射函数,则f是单射函数,且g是满射函数
注意①中g不一定单射,②中f不一定满射,③中f不一定满射,g不一定单射
二.
双射g○f的逆函数为f−1○g−1f^{-1}○g^{-1}f1g1

鸽洞原理

若有人只有n个鸽洞,但是却养了多于n只的鸽子,则必有一个鸽洞住了2只或2只以上的鸽子。
函数角度:A,B为有限集合,若|A|>|B|,f是A到B的函数,则至少有两个自变量的函数值相等
一般地,若有人只有n个鸽洞,但是却养了多于nm只的鸽子,则必有一个鸽洞住了m+1只或m+1只以上的鸽子。
函数角度:A,B为有限集合,若|A|>m|B|,f是A到B的函数,则至少有m+1个自变量的函数值相等

典型例题:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

### UE5 中用于获取整数的数学函数或节点 在 Unreal Engine 5 (UE5) 的材质系统和蓝图逻辑中,提供了多种方式来处理数值并提取其整数部分。这些方法主要依赖于内置的数学函数节点,下面详细介绍几种常见的获取整数的方法及其应用场景。 --- #### 一、Floor 函数 `Floor` 是一种向下取整的操作,它返回小于等于输入值的最大整数。例如: - 输入 `3.75`,输出为 `3`。 - 输入 `-2.4`,输出为 `-3`[^1]。 ```ue-material // 使用 Floor 节点提取整数部分 int integerPart = floor(inputValue); ``` 这种操作非常适合需要严格减少数值大小的情况,比如创建阶梯状过渡效果或者离散化连续数据。 --- #### 二、Ceil 函数 与 `Floor` 不同的是,`Ceil` 向上取整,即返回大于等于输入值的最小整数。举例来说: - 对于 `3.2`,结果将是 `4`; - 若是负数如 `-1.8`,则变为 `-1`[^3]。 ```ue-blueprint // Blueprint 示例:将浮点型转换成最接近的大于等于它的整数 integerValue = Ceil(floatInput); ``` 当希望增加数值直到达到下一个完整的单位时可以选择这个选项。 --- #### 三、Round 函数 如果既不想单纯地上升也不想下降而是寻找最近的一个整数,则应该考虑使用 `Round` 函数。“四舍五入”的原则在这里得以体现——任何超过 .5 的小数都会被计入更高的整数级别之中;反之亦然。具体表现如下所示: - 当前值为 `2.5` 或更大些时候变成 `3`; - 如果只有 `.49`, 则维持原样作为 `2`. ```ue-material // Material Graph Example using Round Node roundedNumber = round(originalFloat); ``` 这种方法特别适用于那些期望获得更加自然且直观的结果而非偏向某一侧调整的情形下非常有用[^4]. --- #### 四、Truncate 截断 有时候我们仅仅关心去掉所有的非零位之后剩下的纯粹数字本身是什么样子而已—这便是所谓的“截断”。尽管实际上并没有专门为此目的设立单独名称叫作 Truncate() 的功能块可供调用,但是可以通过简单的组合其他已知手段达成相同的目的: ```ue-material // Combine with Multiplication and Division to simulate truncation behavior. truncatedValue = int(floor(abs(input))) * sign(input); // For both positive & negative numbers handling correctly. ``` 上述表达式先取绝对值再执行标准意义上的flooring过程最后恢复原始符号方向完成整个动作链路. --- ### 总结比较表 | **Function** | **Description** | **Example Input/Output** | |-------------|-----------------------------------------|----------------------------------| | Floor | Rounds down towards minus infinity | 3.7 → 3; -2.4 → -3 | | Ceil | Rounds up toward plus infinity | 3.2 → 4; -1.8 → -1 | | Round | Standard rounding rules | 2.5 → 3; 2.49 → 2 | | Truncate | Removes fractional part without rounding | Implemented via combination | 每种方法都有各自的特点及适用场合,请依据实际需求选取最适合的一种实施策略即可满足绝大多数开发过程中遇到的相关挑战! --- ### 相关问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yun_gao_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值