计算机语言运用--数值计算6-离散量的计算机处理63_1Cv6
计算机:电子线路组成的计算机器。人与计算机则是通过计算机语言-符号系统说给计算机听而交流。
计算机语言有低级语言-机器语言、汇编、高级语言-C/C++/C#/VB/PASCAL/LISP/JAVA/PYTHON/……成百上千种之多。
作为一种计算机器—可以协助人类处理各种事情—数值计算问题、文字处理问题、图形图像处理问题、事务问题……。自从有了数字计算的计算机器,几乎所有的可以交给计算机的事情,都交给计算机来处理—是辅助处理—按照人们的要求—事先安排的模式进行处理。
数值计算- discrete
代数的计算、初等函数的计算、代数方程的求解、解析几何与微分几何的求解、矢量-张量与场论的求解、抽象代数-空间及泛函分析、级数与变换、特殊函数问题、概率统计与随机过程分析计算、误差分析与实验数据处理、最优化方法分析、有限单元法求解、数论分析、集合论及其计算、拓扑学分析与计算、组合数学的计算、图结构处理、数理逻辑分析与处理、……、……
或者说:
自然数的计算、整数的计算、实数的计算、复数的计算、矢量-向量的计算、矩阵的计算、函数的计算、代数方程的计算、函数方程的计算、微分的计算、积分的计算、常微分-一元微分方程的计算、偏微分-多元微分方程的计算、连续数量的计算、离散数量的计算、集合的计算、组合数学的计算、……、……
或者说:科学与工程技术应用中的数值计算、……、……
discrete离散量的计算—离散量这个称呼的流行,真的源于计算机的出现。其实,人们最早认识的都是—就是离散量,自然数、整数、字符(西语系的字母、汉语的笔画等)。
先说自然数,算术中的四则混合运算;在那里,没有量纲、没有分类、没有实际所指的限制等等。只有纯理想化、抽象化的数字游戏。如:1111+1122=2233,3+6=9,12345+98765=111110,2x2=4,25x25=625等等。心算、笔算、算盘算、横式算、竖式算、数豆子、数棍子、……,总而言之,都能有结果。
在实际中,却要物理含义。在科学或工程中,3+6=9一定是有所指的,尤其是量纲问题。通常都是默认的同类量纲才用的。久而久之,成了习惯,不再注意量纲了。3个梨+6个梨=9个梨;3个苹果+6个梨=?,3斤梨+6个梨=?,3元+6角=3元6角,不等于9;等等……。当然,我们的大脑习惯性的知道量纲换算。可没注意这些就是离散数学问题了。集合必须限制同类型。集合的操作—离散数学计算问题,必须注意类型—类属。也就是说,学习离散数学—集合论,必须习惯性的思考类属,才能进行操作-计算。
例如:
A={1,3,5,7},B={2,3,4,5,6}, A∪B=C的运算结果是C={1,2,3,4,5,6,7}
A∩B=C的运算结果是C={3,5} A\B=C的运算结果是C={1,7}
B\A=C的运算结果是C={2,4,6}
还有属于 3∈A 3∈B 不属于2¢A 7¢B
已知:A={a,c,f,g},B={b,g,c,s,t},
则有计算-处理-操作(为了避免与古老的计算概念混淆—严谨的形式化定义-这是数学的最本质、最基本的规矩)
A∪B=C的运算结果是C={ a,b,f,g,c,s,t } ; A∩B=C的运算结果是C={c,g}
……
慢慢就习惯了。
这些对于处理自然数的排序、插入、删除、……等计算机操作,对于字符或字符串的排序、插入、删除、……等计算机操作,显然是有效的。也就是说,字符运算—计算机计算问题,也可以看做离散量的计算问题。这就扩展了自然数的运算的范围和概念的推广。
用计算机处理自然数的各种计算—你知道-能理解算法吗?
用计算机处理自然数集合的各种计算—你知道-能理解算法吗?
以下的算法要彻底改变了
实数的连加:算法为i=0,i=n,ans=ans +i
实数的连减:算法为i=0,i=n,ans=ans +i
实数的连乘:算法为i=1,ans= ans *i
实数的连除:算法为i=1,ans= ans /i
实数的加减乘除:算法为ans=?
相同的实数的连加:算法为ans=a*n
相同的实数的连减:算法为ans=?
相同的实数的连乘:算法为i=4,ans=4n
相同的实数的连除:算法为ans=?
……、……
离散量的计算--排序、插入、删除、编辑、交并差、……等计算机操作
可以和字符处理、文本处理相联系
可以和音频/视频处理相联系
可以和自动控制问题相联系
……
MATLAB语言及其平台 Fortran语言及其平台
C语言及其平台V6
对于语言文字及其文章的人工智能处理系统,也是最基础的知识。
C语言及其平台V6上,C语言离散量处理—实质上是一个N元数组问题
inta[3],b[3][12],c[11][6][13]
char cc[22]
数组、可变数组—动态数组、数组大小的函数等等都可以使用。
一个实例
//CV6_discrete_computer.C
#include
main(){
//变量声明
// int INa[4]={1,2,3,4}; //初始化的变量
// int INb[6]={1,3,5,7,9,11};
int i,j,k,m,n;
int x=1,y=1,z=1;
int Mark;
int Key_A[50],Key_B[50],Key_C[50];
int Mid_A[50],Mid_B[50];
//标准IO_数据输入
printf("输入集合A的元素数目_一个整数:\n");
scanf("%d",&m);
printf("输入集合A的元素_输入一个回车一次:\n");
for(i=1;i<=m;i++)
{
scanf("%d",&Key_A[i]);
}
printf("输入集合B的元素数目_一个整数:\n");
scanf("%d",&n);
printf("输入集合B的元素_输入一个回车一次:\n");
for(i=1;i<=n;i++)
{
scanf("%d",&Key_B[i]);
}
//数据处理过程
for(i=1;i<=m;i++)
{
Mark=0;
for(j=1;j<=n;j++)
{
if(Key_A[i]==Key_B[j])
{
Key_C[x]=Key_A[i];
x++;
Mark=1;
continue;
}
}
if(Mark==0)
{
Mid_A[y]=Key_A[i];
y++;
}
}
for(i=1;i<=n;i++)
{
Mark=0;
for(j=1;j<=m;j++)
{
if(Key_A[j]==Key_B[i])
{
Mark=1;
continue;
}
}
if(Mark==0)
{
Mid_B[z]=Key_B[i];
z++;
}
}
//处理结果输出
printf("A与B的差集_不同:共%d个\n",y-1);
for(k=1;k
{
printf("%d",Mid_A[k]);
}
printf("\n");
printf("B与A的差集_不同:共%d个\n",z-1);
for(k=1;k
{
printf("%d ",Mid_B[k]);
}
printf("\n");
printf("A与B的交集_共有:共%d个\n",x-1);
for(k=1;k
{
printf("%d ",Key_C[k]);
}
printf("\n");
printf("A与B的并集_不同全部:共%d个\n",x+y+z-3);
for(i=1;i
{
printf("%d ",Mid_A[i]);
}
for(i=1;i
{
printf("%d ",Mid_B[i]);
}
for(i=1;i
{
printf("%d ",Key_C[i]);
}
printf("\n");
}