halcon版高中数学(1)集合

导读:

来复习一下高中数学,不过这里勇哥不用纸和笔,而是用halcon做为平台来玩玩。
一切要与机器视觉联系起来才更有趣味。
因此,这个系列的数学课是专门给halcon平台的视觉程序员看的哦。


重要知识点:

 

(1) 一般的,对于两个集合A、B的任何一个元素都是集合B的元素,我们就说这两个集合有包含关系,称集合A为集合B的子集(subset),记做

       A⊆B(或者B⊇A),读做“A包含于B”(或者“B包含A”)


(2)  如果集合A是集合B的子集(A⊆B),且集合B是集合A的子集(B⊆A)。此时集合A与集合B的元素是一样的,因此,集合A与集合B相等,记作: A=B


(3)  如果集合A⊆B,但存在元素x∈B,且x∉A,我们称集合A是集合B的真子集(proper subset),记作:image.png


(4)   我们把不包含任何元素的集合叫空集(empty set),记为Φ, 并规定:空集是任何集合的子集


(5)  

集合并集(union set)                      A∪B

集合交集(intersection set)             A∩B


集合补集(complementary set)      ∁UA

对于一个集合A,由全集U中不属于集合A的所有元素组成的集合称为集合A相对于全集的补集(complementary set),简称为集合A的补集,记作image.png

即:∁UA={x|x∈U,且xA}

image.png


(6) 

 我们把含有限个元素的集合A叫做有限集,用card来表示有限集合A中元素的个数。

例如,A={a,b,c}  则card(A)=3

有限集合中的元素个数要去掉重复的元素。

一般地,对任意两个有限集合A、B,有:

card(A∪B)=card(A)+card(B)-card(A∩B)

 

(7)

halcon的tuple(元组)本身就支持集合运算

        例如:A⊆B,A=B,x∈B,x∉A,真子集判断,空集判断,A∪B,A∩B,∁UA

(8)

halcon的tuple支持各种数据类型,包括各种数据类型混合的的数据的集合运算。

下面程序中演示了,对于整数、字符串、整数与字符串混合的集体运算都是正确的。

还是很强的哦。


************p6 1.1.2集合间的关系*******************************

*一般的,对于两个集合A、B的任何一个元素都是集合B的元素,我们就说
*这两个集合有包含关系,称集合A为集合B的子集(subset),记做
*A⊆B(或者B⊇A),读做“A包含于B”(或者“B包含A”)
*如果集合A是集合B的子集(A⊆B),且集合B是集合A的子集(B⊆A)。此时集合A与
*集合B的元素是一样的,因此,集合A与集合B相等,记作: A=B
*如果集合A⊆B,但存在元素x∈B,且x∉A,我们称集合A是集合B的真子集(proper subset),
*记作:.... 此符号无法打出,见教材

*我们把不包含任何元素的集合叫空集(empty set),记为Φ
*并规定:空集是任何集合的子集



*集合A为集合B的子集(subset)
dev_clear_window()
A:=[1,2,3]
B:=[1,2,3,4,5,6,7,8]
A2:=[1,2,3]
tuple_intersection(A,B,Intersection1)
dev_get_window(WindowHandle)
if(A=Intersection1)
    disp_message(WindowHandle, 'A⊆B', 'window', 12, 12, 'blue', 'true')
else
    disp_message(WindowHandle, 'not (A⊆B)', 'window', 12, 12, 'red', 'true')
endif

*集合A与集合B相等
dev_clear_window()
if(A=A2)
    disp_message(WindowHandle, 'A=A1', 'window', 12, 12, 'blue', 'true')
else
    disp_message(WindowHandle, 'not (A=A1)', 'window', 12, 12, 'red', 'true')
endif

*集合A是集合B的真子集(proper subset)
A:=[1,2,3]
B:=[1,2,3,4,5,6,7,8]
*B:=[1,2,3]
tuple_difference(B,A,Difference2)
tuple_length(Difference2, len1)
dev_clear_window()
if(len1>0)
    disp_message(WindowHandle, '集合A是集合B的真子集', 'window', 12, 12, 'blue', 'true')
else
    disp_message(WindowHandle, '集合A不是集合B的真子集', 'window', 12, 12, 'red', 'true')
endif

*空集是任何集合的子集
A:=[]
B:=[1,2,3]
tuple_intersection(A,B,Intersection1)
dev_clear_window()
dev_get_window(WindowHandle)
if(A=Intersection1)
    disp_message(WindowHandle, 'A⊆B', 'window', 12, 12, 'blue', 'true')
else
    disp_message(WindowHandle, 'not (A⊆B)', 'window', 12, 12, 'red', 'true')
endif



A:=[3,5,6,8]
B:=[4,5,7,8]
C:=[5]
*集合并集(union set)  A∪B
tuple_union(A, B, Union)
*集合交集(intersection set) A∩B
tuple_intersection(A,B,Intersection)
*集合补集(complementary set)  ∁UA
tuple_difference(B,C,Difference)

*计算两个集合的对称差值,这个结果跟tuple_difference是一样的
tuple_symmdiff(B,C,SymmDiff)

*下面测试两者的差别
B1:=[0,1,3,3,5]
C1:=[2,3,5,10]
tuple_difference(B1,C1,Difference1)
tuple_symmdiff(B1,C1,SymmDiff1)


*下面试试字符串数据的集合
A:=['one','two','three','four']
B:=['two','three','four','five','six','seven','eight','nine','ten']
C:=['two']
*集合并集(union set)  A∪B
tuple_union(A, B, Union)
*集合交集(intersection set) A∩B
tuple_intersection(A,B,Intersection)
*集合补集(complementary set)  ∁UA
tuple_difference(B,C,Difference)


*下面试试混合数据类型的集合
A:=['one',2,'three',4]
B:=[2,'three',4,'five','six','seven','eight','nine','ten']
C:=[2]
*集合并集(union set)  A∪B
tuple_union(A, B, Union)
*集合交集(intersection set) A∩B
tuple_intersection(A,B,Intersection)
*集合补集(complementary set)  ∁UA
tuple_difference(B,C,Difference)


**例8*
*设U={x|x是小于9的正整数}, A={1,2,3}  B={3,4,5,6}, 求∁UA, ∁UB
*U为全集,即U中有我们所研究问题的全部元素
U:=[1,2,3,4,5,6,7,8]
A:=[1,2,3]
B:=[3,4,5,6]

tuple_difference(U,A,cua)
tuple_difference(U,B,cub)
*正确答案为:∁UA=[4,5,6,7,8]  ∁UB=[1,2,7,8]


******下面画并、交、补三种运算的venn图*******************

*并运算
dev_clear_window()
gen_ellipse (ROI_0, 160.093, 123.821, rad(-5.46263), 49.7995, 44.5658)
gen_ellipse (ROI_1, 160.14, 191.21, rad(-180), 48.0242, 30.72)
dev_set_draw('fill')
dev_set_color('yellow')
union2 (ROI_0, ROI_1,TMP_Region)
dev_display(TMP_Region)
dev_set_draw('margin')
dev_set_color('blue')
dev_set_line_width(3)
dev_display(ROI_0)
dev_display(ROI_1)
disp_message(WindowHandle, 'A', 'window', 152, 102, 'black', 'true')
disp_message(WindowHandle, 'B', 'window', 159, 203, 'black', 'true')
disp_message(WindowHandle, 'A∪B', 'window', 222, 141, 'black', 'true')



*绘制数轴表示集合运算
*P10 例5
*设集合A={x|-1<x<2},集合B={x|1<x<3},求A∪B
*A∪B={x|-1<x<2}∪{x|1<x<3}={x|-1<x<3}

*课本图片:并
read_image(Image, 'tu1.1.3.png')
dev_display(Image)
stop()

*课本图片:交
read_image(Image, 'tu1.1.4.png')
dev_display(Image)
stop()

*课本图片:补
read_image(Image, 'tu1.1.5.png')
dev_display(Image)
stop()


****计算集合card,即元素数量**************************
*一般地,对任意两个有限集合A、B,有:
*card(A∪B)=card(A)+card(B)-card(A∩B)

A:=[3,5,6,8]
B:=[4,5,7,8]

tuple_length(A, len1)
tuple_length(B, len2)
tuple_intersection(A, B, Intersection2)
tuple_length(Intersection2, len3)
cardAUB:=len1+len2-len3


下面是演示程与资源的下载:


资源价格:免费

大小 : 10 MB |  下载量 : 21  |  文件类型 : 压缩文件  


--------------------- 

作者:hackpig

来源:www.skcircle.com

版权声明:本文为博主原创文章,转载请附上博文链接!


本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

会员中心
搜索
«    2024年4月    »
1234567
891011121314
15161718192021
22232425262728
2930
网站分类
标签列表
最新留言
    热门文章 | 热评文章 | 随机文章
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合
  • 扫描加本站机器视觉QQ群,验证答案为:halcon勇哥的机器视觉
  • 点击查阅微信群二维码
  • 扫描加勇哥的非标自动化群,验证答案:C#/C++/VB勇哥的非标自动化群
  • 扫描加站长微信:站长微信:abc496103864
  • 扫描加站长QQ:
  • 扫描赞赏本站:
  • 留言板:

Powered By Z-BlogPHP 1.7.2

Copyright Your skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864