新闻资讯

新闻资讯 媒体报道

程序员的数学

编辑:013     时间:2021-07-16
   但是数学模型不是高深的让人不着边际的公式,也不是故意让人看不懂则是成功,我们来看个最为普通而简单的例子好了:我的一个朋友在写一个工业控制的东西,他需要一个进度条,进度条的显示是为了配合时间而来的,因为没有足够多的经验(我的朋友一边看例子一边做软件),进度总刻度被定在了120,而60秒钟的显示很简单就可以知道,我们需要每秒钟进度2格。因此他在程序中的定时器每秒的间隔中这样定义了:

Position=Positon+2;

    我看了他的程序说:这样可以,但是不够好,因为这个2不知道从哪里来,也不会知道这个2和几个参变量有关,基本情况是和1刻度,2总时间,3定时器的间隔有关。接下去大家都知道他要问为什么,于是我回答说,如果刻度或者时间或者定时器间隔需要改变,程序必须被修改。他点了点头。

我们可以这样修改:

All_P=进度条总刻度;

All_T=时间估计值;

RUN_T=相对已逝时间;

Position=(All_P/All_T)*RUN_T

    这样一来,我们制作了一个模型,程序运行时总能探测总刻度ALL_P和时间All_T,我们知道这样运行时已经和1刻度,2总时间,3定时器的间隔已经无关,这时无论在运行程序前设计和运行后改变All_P和ALL_T,程序仍然能正确运行,这就是模型的威力。

    这个例子极为简单明了,告诉我们需要数学和数学逻辑,但是我们不需要牵强附会并且故意“高深莫测“的数学公式。
加点修饰:

     加密算法: 如果你的程序算法不打算加密,很可能不够专业或者不够安全,怎么样简单的加密?这个足够简单,如果使用MD5算法的确可能解决问题,当然MD5有他的缺陷,有时候用不上。好了,不用写那么多,我只需要一个异或来和异或去的代码,这样我可以加密并且解密得到原文。但是我们不打算异或,我们可能会用上一个数学公式来解决加密的问题,假设我的用户名为qianbo,我的权限是administraor(管理员),原始密码是123456,我的验证值是int(qianbo)+int(administrator)+int(123456),ok,如此线性的值让我感觉密码太过脆弱,aint(qianbo)+bint(administrator)+c*int(原始密码),abc可要保密了。你可以多用几个数学公式,两两加密,只要有一个公式产生的验证不对,那就准备放弃登陆吧。

    上面是个牵强附会的Trick,真正的数学也许离不开插值算法:

    这里是图形学算法中的采样插值:

    要将图像缩小,也许最终得到的是看不清的斑点,但是如果将图像放大,过于失真让人恼火,在图像小而多边形片元大的情况下,采样比率将小于1,这时候得到的样本值都为浮点数。采样插值将采样点截尾,得到整数值。这样,效果出来了,在放大的情况下,你会看到很多马赛诸赛的朋友纷纷登陆:)。

如果我们这样做:
ix=(int)xtu%; (1)
fx=(float)(xtu%-xx); (2)
Resultx=ixfx+(ix+1)(1-fx) (3)

其中(1)式中xt为x轴采样点次数,ix为取x轴样本数整数,式(1)为取x轴样本数浮点数,式(3)为真正的混合插值函数。同样对y值也作同样处理,对后你知道要干什么,对x和y再做一次。这就是双线性插值。
再稍加修饰:

     矩阵是一个强有力的工具,我们可以在各个方面看到他那强壮而优美的身体,我们对3D世界尤为感兴趣。看下面这个矩阵平移:

矩阵

好了,看了这个矩阵乘法,大家都会说,不要骗我了,只是这样而已:

x=x+dx;(1)

y=y+dy;(2)

z=z+dz;(3)
————————————————
版权声明:本文为CSDN博主「qianbo_insist」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qianbo042311/article/details/117790899
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

回复列表

相关推荐