不知道是多少次去看这书了,可惜每一次都不得不暂时放手,不能坚持看完。
复变函数是很神奇的一个领域,总有人说它很简单,那估计是为了考试吧,因为相比于实数域内的函数及其微积分,复数域确实十分的神秘而微妙。
通常的数系的拓展不过是将点取得更密一些,从自然数,到整数,比例数,实数,它们的发展逃脱不出这个实数线,并没有本质的变化,但是,复数需要一个平面来表示,将数的维度由一维升为了二维,这是非常奇怪的事,但是又合情合理,既然实数可以把数从孤立的点拓展为连续的线,那复数将这条线给拓展为一个面又有什么不合适的呢?
然后是复数的代表运算,加法和乘法,加法是独立分量的运算,乘法也是独立分量的运算,但是它们采用的独立分量是不一致的,加法对应的是笛卡尔坐标的虚实轴,乘法对应的是极坐标的半径和角度,这两种坐标之间又具有联系,所以各自的独立性却导致了相互的联系性。这里,我感觉加法和乘法恐怕不是复数的本质运算,应该有某一种或几种更加精妙的运算可以实现真正的独立运算。就像张量之于具体坐标,一个是本质,一个是表象。显然,目前的加与乘是表象。
其实,上面这个问题可能是比较深刻的,即使在整数范围内,加法和乘法是否就是真的独立的呢?这个问题与世界难题abc猜想有关。
不过,这里更多的是关于二维数的问题,二维就应该可以表示为两个独立分量,就像向量一般,泾渭分明,互不干扰,但是,复数的乘法却在破坏这种独立性。虽然有人将复数的代数结构同构于二维对称矩阵的代数结构,不过,这真的是复数的本质吗?因为我并没有看相关的研究,所以也不能评价它的对错。假如真的是这样的同构,那估计也是局限在代数上,对于分析上的结果可能是无法继承的,不然的话,就产生了一个新的研究领域了。
什么是解析函数,如何判断,这些问题看书就能知道了。但是,解析函数是什么呢?我们都知道,实变函数是一个图像,总可以实际的或者示意的画出来,称之为函数的图像。看到一个图像,可以很容易的得到很多信息,这个函数的许多性质都可以从图中不费力的得到。
可是,复变函数画不出来,或者说很难在一幅图中画出来,有人采用模值与幅角的方法,模值为数值,幅角为颜色。实话说,这并不高明,而且很难去理解,颜色已经被附加上了特定含义,也就是等高线,用它去表示角度,实在是让人费解。但是把幅角作为数值就更让人难以理解了,因为它是一个周期量,表示在直线轴上更加难以理解了。
就因为图像画不出来,就导致复变函数的许多性质变得难以理解。像是处处不解析的函数,这就像处处不可导的函数一样难以想象。甚至更加难以想象,即使是性质良好的解析函数,也有许多看起来很古怪的性质,平均值定理,解析函数在某点的值等于以他为圆心,任意圆周上的值的平均值,由此得到最大模定理,函数模值的最大值不会出现在区域中,而应该在区域的边界上。对于解析区域为整个复平面的整函数而言,意味着函数的最大模值一定出现在无穷远处。
如果解析函数的图像可以画出,对于平均值定理而言,围绕任一点所做的一组同心圆看起来总是相对于圆心的值而振荡,对于圆心值的一个微小的修改都将导致无穷多的点随之变化。这是很神奇的事情,说明解析函数不可能对局部连续形变而其余部分保持不变,似乎暗示了解析函数保解析变换的依赖性和不连续性,就像量子化假设一般,只能取整体的某些分立值。
最大模定理姑且还是可以画出的,因为只涉及到了模值,可以画成三维空间的曲面,也就是二元函数的图像。
指数函数与正弦函数,都是整函数,所以模值最大点在无穷远。
单奇点的解析函数,模值最大出现在奇点处,也就是解析域的边界上。
至少在模值性质方面还是可以直观的看到。也算是一些安慰。
为什么图像无法画出?复平面也不过是一个平面而已,即使再怎么弯曲,扭转,拉伸至少在三维空间中还是可以表示的。可惜,这样表示出的曲面只依赖于单个参数,复数有着两个参数,于是,就不得不加入时间维度,变为随时间变化的二维曲面。
这其实也反映了复数强大的应用场景,表示一个时变的二维场。不管它是流场,电场,还是温度场。可是,总是还是让人遗憾的,如果现实是四维的就好了,那将会是多么精彩的世界。
微积分互相联系是已经广为人知,所谓的牛顿莱布尼兹公式,高斯公式,斯托克斯定理或者说是外微分的斯托克斯公式,表现在物理中是区域无源漏的连续性方程。
但是,解析函数给出了另一种联系,围绕某点的奇点积分,与该点的导数值的关系,这是更进一步的联系,毕竟前面的那些定理公式是绝不允许内部有奇点存在的。
零点与奇点本身就是复变函数中占比极重的内容,失去了奇点,那整个理论就变得干瘪而无聊。无非就是实数理论的平凡推广罢了。正是奇点的存在使得它变得神秘而微妙。奇点是不符合定义的点,是无视规则的点,是规则的边界,也就是解析函数的边界。许许多多的定理都表明了,解析函数内部其实空空如也,没有什么出彩的定理,是一个完美而无趣的天堂。反而是边界上有些各种奇妙性质。像之前提及的平均值定理,最大模定理,还有柯西积分公式,洛朗级数。绕奇点转一圈和转很多圈可能有些本质区别,也可能没有区别,这就导致了奇点的分类。虚假的奇点,极点和本质奇点。
奇点,在我看来就是平整表面上的凹坑,光线照到凹坑之外的地方,得到的是完美的反射光,然而,一旦接近这些凹坑,反射光就变得弯曲起来,性质变得十分的奇怪,随着进一步接近,甚至于包围了这个凹坑,形成了一个光圈,解析函数和光毕竟还是有所差别的,但是当积分路径靠近奇点时就不得不避开他,变得弯曲,假使不小心包住了,那麻烦就大了,积分值就变得很奇怪,要么是增加了某个特定值的整数倍,要么直接变成了发散的结果。
尽管,这些结果都可以通过理论得到一个数值上的原因,但这是远远不够的,数学如果不能应用于现实中,也只是一种美学,因人而异,而如果可以用来解释现实世界,就成为了强有力的逻辑支撑,以至于所有人都应该去理解它。
现实中的奇点,最出名的就是宇宙中的黑洞,它破坏了整个宇宙的平整,还有许多其他的奇点,比如,水池中的漏孔,光滑表面上的凹坑,围绕着奇点总会出现旋转的现象,似乎有什么东西在源源不断的被吸入奇点中。这种说法也是很有道理的,一般来说,这个点总可以将东西全部吸入,然后随着物质的消失而隐匿起来,不过,如果物质在不断的得到补充,那就能维持着微妙的平衡,复变函数中的奇点就是这种维持着的奇点,它不会把函数值吸进去,而仅仅保持着自身的存在。
从这个角度看的话,奇点就是一个漏孔,围绕这个漏孔会导致一个旋量,这个旋量才是导致积分值变化的元凶。不过,这样一来奇点就变得不够神秘了,变成了一个随处可见的存在,就像随处可见的漩涡一样。不过,本来就是一个普遍存在的东西,不过人们总是忽略它罢了。
LET (赋值语句)
格式:[LET] 变量=表达式
功能:先计算右边表达式,然后将结果赋给左边的变量
SWAP (变量值交换语句)
格式:SWAP 变量1,变量2
功能:将变量1和变量2的值进行交换
PRING (显示或输出语句)
格式:PRING [表达式表][,|;]
功能:将指定的数据显示在屏幕上
LPRING (打印语句)
格式:LPRINT [表达式表][,|;]
功能:将指定的数据用打印机打印出来
REM (注释语句)
格式1:REM 注释内容
格式2:’ 注释内容
功能:在程序中加以解释来说明该程序段的作用
END (结束语句)
格式:END
功能:结束一个程序
CLS (清屏语句)
格式:CLS
功能:清除屏幕上显示的信息
PRING USING (自选显示格式语句)
格式:PRING USING 〈“格式字符串”〉;〈表达式表〉 [;]
功能:根据格式字符串规定的格式,将表达式表中的数据显示在屏幕上
LPRINT USING (自选打印格式语句)
格式:LPRINT USING 〈“格式字符串”〉;〈表达式表〉[;]
功能:根据格式字符串规定的格式,将表达式表中的数据打印在打印机纸上
STOP (暂停语句)
格式:STOP
功能:暂停程序的执行
SLEEP (定时暂停语句)
格式:SLEEP [数值表达式]
功能:暂停执行程序,时间为数值表达式所指定的数值(以秒为单位)
INPUT (键盘输入语句)
格式:INPUT [;][“注释内容”][;|,]变量[,变量]
功能:通过键盘给INPUT语句中的各个变量依次提供数据
LINE INPUT (行输入语句)
格式:LINE INPUT [;][“注释内容”;]字符串变量
功能:将键盘上输入的字符串(最长为255个)赋给字符串变量
READ/DATA(读数/置数语句)
格式:READ 变量 [,变量]…
…
…
DATA 常量 [,常量]…
功能:READ语句将DATA语句中提供的数据依次赋给指定的变量
RESTORE (恢复数据区语句)
格式:RESTORE [行号|行标号]
功能:从指定的DATA语句行中读入常量
数值函数
SIN (正弦函数)
格式:SIN (X)
功能:求X的正弦函数值
COS (余弦函数)
格式:COS(X)
功能:求X的余弦函数值
TAN (正切函数)
格式:TAN(X)
功能:求X的正切函数值
ATN (反正切函数)
格式:ATN(X)
功能:求X的反正切函数值
SQR (平方要函数)
格式:SQR(X)
功能:求X的算术平方根值,其中X必须大于或等于零
EXP (指数函数)
格式:EXP(X)
功能:求以e为底的X次幂,e=2718282
LOG (对数函数)
格式:LOG(X)
功能:求以e为底的自然数值,即In x 的值
SGN (符号函数)
格式:SGN(X)
功能:求自变量X的符号
ABS (绝对值函数)
格式:ABS(X)
功能:求自变量X的绝对值,即|X|
INT (取整函数)
格式:INT(X)
功能:取不大于X值的最大整数
FIX (截取整数函数)
格式:FIX(X)
功能:把一个带有小数的数去掉小数部分,不进行舍入,直接截取整数部分。自变量X可以是任意数值表达式
CINT (转为整数函数)
格式:CINT(X)
功能:把一个带有小数的数转换成整数,对小数部分四舍五入
CLNG (转为长整数函数)
格式:CLNG(X)
功能:把自变量X转变为长整数
CSNG (单精度函数)
格式:CSNG(X)
功能:把数值X转变为单精度数,其中自变量X是一个数值表达式,使用该函数它将被转换成单精度数
CDBL (双精度函数)
格式:CDBL(X)
功能:把数值X转变为双精度数,自变量X可以是任意数值表达式
RND (随机函数)
格式:RND(X)
功能:产生一个0与1之间的随机数
TIMER (?函数)
格式:TIMER
功能:从午夜开始计算秒数
ASCII (ASCII码函数)
格式:ASC(X$)
功能:返回字符串 X$ 第一个字符的ASCII代码
VAL (字符串转数值函数)
格式:VAL(X$)
功能:将字符串 X$ 转换成数值
LEN (测长函数)
格式:LEN(X$)
功能:测量字符串的长度,即字符串的字符个数
INSTR (子字符串检索函数)
格式:INSTR([N,] X$,Y$)
功能:返回字符串 Y$ 在字符串 X$ 中第一次出现的位置
屏幕显示格式中常用的三个函数
TAB (?函数)
格式:TAB(X)
功能:在指定位置X上显示或打印所需要的信息
SPC (?函数)
格式:SPC(X)
功能:空X个空格
SPACE$ (?函数)
格式:SPACE$(N)
功能:返回一个字符串,该字符串由N个空格组成
输入函数
INKEY$ (?函数)
格式:INKEY$
功能:从键盘上读一个字符
INPUT$ (?函数)
格式:INPUT$ (N[,[#] 文件号])
功能:返回从键盘或指定文件中读出的N个字符组成的字符串
CSRLIN (光标行座标函数)
格式:CSRLIN
功能:返回当前光标行座标位置
POS (光标列座标函数)
格式:POS(N)
功能:返回当前光标列座标位置
UBOUND;LBOUND (测试下标上、下界函数)
格式:UBOUND(数组[,维])
LBOUND(数组[,维])
功能:返回一个已定义数组中指定维的上、下界
FRE (测试空字节函数)
格式:FRE(X)
功能:返回空闲内存节数
GOTO
格式:GOTO 行标识符
功能:改变程序的执行顺序,无条件地转去执行GOTO后面所指的行标识符去执行
ON/GOOT
格式:ON 表达式 GOTO 行标识符表
功能:先计算ON后面的表达式的值,再根据计算结果,将程序转移到GOTO所指行标识符表中的某个行标识符去执行
关系运算
= (等于)
> (大于)
>=(大于或等于)
< (小于)
<=(小于或等于)
<>(不等于)
AND(与)
OR (或)
NOT(非)
表: A B | NOT A | NOT B | A AND B | A OR B
1 1 | 0 | 0 | 1 | 1
1 0 | 0 | 1 | 0 | 1
0 1 | 1 | 0 | 0 | 1
0 0 | 1 | 1 | 0 | 0
逻辑运行顺序: NOT—AND—OR
()—算术—关系—逻辑
IF (条件语句)
单行 IF 条件语句
格式:IF 条件 THEN 语句序列1 [ELSE 语句序列2]
功能:首先计算条件的值,如果为真则执行THEN后的语句序列1,否则执行ELSE后面的语句序列2
块结构 IF 条件语句
格式:IF 条件1 THEN
[语句块1]
[ELSEIF 条件2 THEN
[语句块2]
……
[ELSE
[语句块n]]
END IF
CASE (条件语句)
格式: SELECT CASE 测试表达式
CASE 表达式表1
[语句块1]
[CASE 表达式表2
[语句块2]]
……
[CASE ELSE
[语句块N]]
END SELECT
功能:根据表达式的值,从多个语句块中选择符合条件的一个语句块执行
FOR/NEXT(循环语句)
格式:FOR A=E1 TO E2 STEP E3
循环体
NEXT A
说明: FOR 语句为循环说明语句,它说明了循环的次数FOR TO STEP 为语句定义符
A--循环控制变量,可以用任一简单变量表示
E1--循环控制变量的初值
E2--循环控制变量的终值
E3--循环控制变量的增值,也称步长
NEXT 语句为循环终端语句,它与FOR语句必须成对出现 NEXT语句中的循环控制变量必须与FOR语句中的一致
循环体由一条或多条语句构成,是被重复执行的部分
WHILE/WEND (循环语句)
格式: WHILE <条件>
循环体
WEND
说明: WHILE是循环的起始语句又称说明语句,它的作用是给出循环条件 WEND是循环的终止语句
<条件>代表一个逻辑条件,它可以是一个关系表达式也可以是一个逻辑表达式,还可以是一个变量或常数
DO/LOOP (循环语句)
格式1: DO[(WHILE 或 UNTIL)条件]
循环体
[EXIT DO]
LOOP
格式2: DO
循环体
[EXIT DO]
LOOP[(WHILE 或 UNTIL)条件]
说明: 如果条件永远成DO-LOOP循环可能陷入"死循环"这时可用EXIT DO 来退出循环
DO循环可以嵌套,其规则与FOR-NEXT循环相同
字符串函数
CHR$ (字符函数)
格式:CHR$ (N)
功能:将ASCII码值N转换成它所表示的字符
MID$ (取中间字符串函数)
格式:MID$ (A$, N [,M])
功能:从字符串A$中,第N个字符起,取出M个字符
STRING$
格式1:STRING$(N, X)
功能: 产生N个ASCII码X所对应的字符通常用在无法从键盘按输入的字符
格式2:STRING$(N, X$)
功能: 产生N个字符串X$中的第一个字符
OCT$ (十进制转八进制函数)
格式:OCT$ (X)
功能:将十进制数值转换成八进制字符串
STR$ (数值转换成字符串函数)
格式:STR$ (X)
功能:将数值数据转换成字符串数据
LTRIM$ (删除字符串左边空格函数)
格式:LTRIM$ (X$)
功能:删除字符串X$左边的空格
RTRIM$ (删除字符串右边空格函数)
格式:RTRIM$ (X$)
功能:删除字符串数据X$右边的空格
LCASE$ (小写函数)
格式:LCASE$ (A$)
功能:将A$中所有大写字母改成小写
UCASE$ (大写函数)
格式:UCASE$(A$)
功能:将A$中所有小写字母改成大写
TRIM$ (两头截空函数)
格式:TRIM$ (A$)
功能:截去字符串A$的头尾所有空格
LEFT$ (左取函数)
格式:LEFT$(A$,N)
功能:得到字符串A$最左边的N个字符
RIGHT$ (右取函数)
格式:RIGHT$(A$,N)
功能:得到字符串A$最右边的N个字符
HEX$(十进制数转换十六进制字符串)
格式:HEX$(N)
功能:将十进制数N转换成十六进制字符串
MKI$ (把整数转换为字符串)
IKL$ (把长整数转换为字符串)
MKS$ (把单精度数转换为字符串)
DATE$/TIME$ (取得系统的日期/时间)
GOSUB/RETURN (调用子程序语句和返回语句)
GOSUB (调用子程序)
格式: GOSUB<标号1>
功能:用于转移到子程序的入口语句去执行
RETURN (子程序返回语句)
格式:RETURN [<标号2>]
功能:用于子程序执行完毕从子程序返回,作为子程序的结束语句
DEF FN (用户自定义函数)
格式1: DEF FN <函数名>[(参数表)]=<表达式>
格式2: DEF FN <函数名>[(参数表)]
语句块
FN <函数名>=<表达式>
END DEF
功能: 定义一个用户自己的函数
SUB (过程定义)
格式: SUB 过程名[(参数表)][STATIC]
语句序列
END SUB
功能: 定义一个SUB过程
FUNCTION (过程定义)
格式: FUNCTION 过程名[(参数表)][STATIC]
语句序列
过程名=表达式
END FUNCTION
功能: 定义FUNCTION函数过程
DECLARE (过程说明语句)
格式: DECLARE [RUNCTION/SUB] 过程名[(参数表)]
功能: 对被调用的过程进行说明,对传递的自变量进行检查
DIM SHARED / COMMON SHARED (定义全局变量)
格试: DIM SHARED 变量名表 / COMMON SHARED 变量名表
功能: 将变量名表中的变量定义为全局变量
STATIC (定义局部变量)
格式: STATIC 变量表
功能: 在DEF FN 函数、FUNCTION 或 SUB 过程中把变量定义为局部变量
SHARED (共享变量)
格式: SHARED 变量[AS类型][,变量[AS类型]…
功能: 使主程序与某个过程共享变量
DIM (数组定义)
格式: DIM[SHARED] 变量 [(下标)][AS类型][,变量[(下标)][AS类型]]…
功能:说明变量或数组并分配存储空间
REDIM (改变分配给数组的空间)
格式: REDIM[SHARED] 变量 (下标)[AS类型][,变量(下标[AS类型]……
功能: 改变分配给动态数组的空间
OPTION BASE ()
格式: OPTION BASE n
功能: 指定数组下标的缺省下界
OPEN (打开或建立文件)
格式1: OPEN 文件说明[FOR 方式1] AS [#] 文件号 [LEN=记录长度]
格式2: OPEN 方式2,[#] 文件号,文件说明[,记录长度]
说明:
1在格式1中,"方式1"指定文件的输入/输出有以下几种方式:
OUTPUT 指定顺序输出方式
INPUT 指定顺序输入方式
APPEND 指定顺序添加方式
RANDOM 指定随机存取方式,也是缺省方式
2格式2中的"方式2"指的是以下几种字符
O 指定顺序输出方式
I 指定顺序输入方式
R 指定随机读/写方式
A 指定顺序添加方式
CLOSE (结束文件的读/写 *** 作)
格式:CLOSE [[#] 文件号 [, [#] 文件号 ]……]
功能: 结束文件的读/写 *** 作
FREEFILE
格式:FREEFILE
功能:产生一个尚未使用的最小文件号
LOC
格式:LOC(N)
功能: 返回文件号为N的指定文件的当前位置
LOF
格式:LOF(N)
功能: 返回文件长度
PRINT#
格式:PRINT# 文件号,[USING 格式字符串;] 表达式[{,|;}]
功能: 把数据写入顺序文件中
WRITE#
格式:WRITE# 文件号,表达式表
功能: 把数据写入顺序文件中
INPUT#
格式:INPUT# 文件号,变量名
功能:从顺序文件中读出数据,并把读出的数据赋给相应的程序变量
LINE INPUT#
格式: LINE INPUT# 文件号,字符串变量
功能: 从顺序文件中读取一整行的数据,并赋给其后的字符串变量
EOF
格式: EOF(文件号)
功能:检查文件是否已读完
CLS
格式:CLS[0|1|2]
功能:清除部分或全部屏幕信息
说明: CLS 0 清除整个屏幕,系统缺省值
CLS 1 如果利用VIEW语句设置过图形视见区,则清除该区,否则清除整个画面
CLS 2 清除文本视见区,但屏幕的最底行仍保持不变
WIDTH
格式: 1 WIDTH 宽度
2 WIDTH LPRINT 宽度
功能: 语句格式1的功能是改变屏幕显示行的宽度,2的功能是改变打印机输出行的宽度
SCREEN
格式: SCREEN [模式][,颜色][,当前页][,可见页]
功能: 设置屏幕显示方式
PSET
格式:PSET [STEP](X,Y)[,颜色号]
功能:在指定的坐标位置上,以指定的颜色画一个点
PRESET
格式: PRESET [STEP](X,Y)[,颜色号]
功能:在屏幕的指定位置(X,Y)上画一个点
LINE
格式: LINE[[STEP](X1,Y1)]-[STEP](X2,Y2)[,[颜色号],[,B[F]][,类型符]
功能:在屏幕上画线段或矩形框
CIRCLE
格式: CIRCLE[STEP](X,Y)半径[,颜色][,起始角][,终止角][,纵横比]
功能: 以(X,Y)为圆心,用给定的半径画圆 椭圆或圆弧
DRAW
格式: DRAW 字符串
功能: 按语句中的字符串,逐步描绘出图形
COLOR
格式: 1 COLOR [前景色][,背景色][,边框色]
2 COLOR [背景色][,调色板]
PAINT
格式: PAINT [STEP](X,Y)[,颜色号][,边框色]
功能:给一个封闭的图形,涂上指定的颜色和边框色
VIEW
格式: VIEW [[SCREEN](X1,Y1)-(X2,Y2)[,[颜色号][,边框色]]]
功能:定义输出图形的屏幕尺寸
VIEW PRINT
格式: VIEW PRINT [顶行 TO 底行]
功能: 在屏幕上定义一个文本输出区域
WINDOW
格式: WINDOW[[SCREEN](X1,Y1)-(X2,Y2)
功能:定义当前视见区的逻辑尺寸
GET
格式: GET [STEP](X1,Y1)-[STEP](X2,Y2),数组名[(下标)]
功能:把屏幕上指定区域的图形映象存放到"数组"中
PUT
格式: PUT[STEP](X,Y),数组名[(下标)][,显示方式]
功能: 将GET语句所存入数组中的图形映象在屏幕所指定的区域重新显示出来
BEEP
格式: BEEP
功能: 使电脑喇叭发出"嘟"的一声
SOUND
格式: SOUND 频率,音长
功能: 使喇叭发出一定频率延时的声音
PLAY
格式: PLAY 命令字符串
功能: 用给定字符串表示的音乐演奏
为了得到点光的像强度分布,必须考虑衍射效应,才能对物和像之间关系有更全面理解。根据光的衍射理论可以研究点光源至透镜、至像平面光波的整个传播过程,最后得出像平面上强度分布是透镜孔径函数的夫琅和费衍射图样,称为光学系统的强度脉冲响应,或点扩展函数。由它可以确定光学系统的成像性质,因为任意复杂物体由无数点源组成,其像的强度为物强度与点扩展函数的卷积。图1a表示一个无像差理想光学成像系统的点扩展函数。
利用点扩展函数概念可对光学系统的分辨率作出判据,例如对于两个点源组成的物,在像平面上的强度分布是相应两点扩展函数的叠加。当两点源距离小于点扩展函数的半宽度即点扩展函数第一零点的半径时,两点源在像平面上不能分辨。
与研究电学系统相似,引入傅里叶分析方法,考虑输入各种不同空间频率的物函数,观察光学系统像面上输出情况,例如物是余弦形式的光栅。因光学系统是线性的,所以像强度分布也是余弦形式,但它的振幅和位相会受系统的影响。正弦光栅经光学系统成像后,比原物相比反衬度降低,最高强度降低,最低强度升高,设T(v)满足0≤T(v)≤1。另外还会产生相移。原来亮线条的位置会向暗线条方向移动。T(v)是空间频率v的函数,改变v可测得T(v)随v变化曲线,反映系统对各空间频率的传递情况。对T(v)=1即零空间频率的图像信息,在系统中传递不受损失;而对那些T(v)=0的图像频率成分,会在像强度分布中消失。一般地,T(v)是复数,此时传递函数是实函数。
点扩展函数是一点光源经光学系统后所成的衍射斑分布的函数。它在空域表征光学系统的特性,传递函数在频域表征系统的特性。实际上两者有简单关系,即点扩展函数的傅里叶变换就是光学系统的传递函数。点扩展函数与透镜的孔径函数有关,传递函数也与孔径函数有关。事实上传递函数是孔径函数的自相关函数。
一个光学系统质量的评价,早期采用“星点”法,即观察点光源的像的强度分布,实质上是把对点扩展函数形状的观察作为像质评价的判据。这种方法虽然直观,但带有主观性,不能作定量评价。现在人们广泛用传递函数作为像质评价的判据,使质量评价进入客观计量。
光学传递函数,简称OTF(Optical TransferFunction),是近30年以来光学领域里一个十分引人注目的前沿课题,也是近十几年以人们更加关注的一门新兴学科--“信息光学”的重要组成部分。1948年,美国人谢德(OSchade)第一次用光学传递函数的方法,以全新的观点来评价电视摄影系统的成像质量,并获得了巨大的成功。在此后的五十年代和六十年代里,许多光学专家又继续做了大量的理论研究工作和实践工作,使光学传递函数的理论更加完善。现在,光学传递函数的方法已被全世界普通地用于光学自动控制的设计过程、光学设计结果的评论和光学镜头质量的检测等方面。在评价摄影镜头成像质量的优劣方面,光学传递函数的评价方法是最全面、最客观、最科学、最严格、最完善的方法。同时也只有通过光学传递函数,才以把摄影镜头的分辨率和明锐度两大光学指标有机地联系起来,并最终反映出二者对所成影像的综合作用与影响。在国外,专业和业余的摄影工作者都十分重视摄影镜头的光学传递函数指标。现在很多著名的专业镜头都在出厂时标出它们各自产品的光学传递函数曲线。从去年开始日本的佳能公司已能EOS相机镜头的模量传递函数(MTF) 曲线公布在对中国大陆的产品广告和说明书上
肯定是有画图函数
一、屏幕 *** 作函数
1 clrscr()清除字符窗口函数
2 window()字符窗口函数
3 gotoxy()光标定位函数
4 clreol() 清除光标行尾字符函数
5 insline() 插入空行函数
6 delline() 删除一行函数
7 gettext() 拷进文字函数
8 puttext() 拷出文字函数
9 movetext() 移动文字函数
二、字符属性函数
10 textmode() 文本模式函数
11 highvideo()高亮度函数
12 lowvideo() 低亮度函数
13 normvideo(void);
14 textcolor() 文本颜色函数
15 textattr() 文本属性函数
16textbackground() 文本背景函数
三、 屏显状态函数
17 wherex() 光标处x坐标函数
18 wherey() 光标处y坐标函数
19 gettextinfo() 获取文本窗口信息函数
在Borland C++里面提供了字符屏幕和图形函数。字符屏幕的核心是窗口(Window),它是屏幕的活动部分,字符输出或显示在活动窗口中进行。窗口在缺省时,就是整个屏幕。窗口可以根据需要指定其大小。同样,对图形函数的 *** 作,也提供了(Viewport)。也就是说图形函数的 *** 作都是在视口上进行。图形视口与字符窗口具有相同的特性,用户可以在屏幕上定义大小不同的视口,若不定义视口大小,它就是整个屏幕。
窗口是在字符屏幕下的概念,只有字符才能在窗口中显示出来,这时用户可以访问的最小单位为一个字符。视口是在图形屏幕状态下的概念,文本与图形都可以在视口上显示,用户可访问的最小单位是一个像素(像素这一术语最初用来指显示器上最小的、单独的发光点单元。然而现在,其含义拓宽为指图形显示器上的最小可访问点)。
字符和图外形态下,屏幕上的位置都是由它们的行与列所决定的。有一点须指出:字符状态左上角坐标为(1,1),但图形左上角坐标为(0,0)。
了解字符屏幕和图形函数与窗口和视口的关系是很重要的。例如,字符屏幕 光标位置函数gotoxy()将光标移到窗口的x,y位置上,这未必是相对于整个屏幕。下面介绍常用的几类字符屏幕函数的功能用途、 *** 作方法及其例行程序。
一、屏幕 *** 作函数
编写程序绘图经常要用到对字符屏幕进行 *** 作。例如,在往屏幕上写字符之前,首先要将屏幕清除干净。又如,有时需要在屏幕上多处写上肉中刺样的字符内容,这时最好用屏幕拷贝来高效率地完成这一任务。对这些 *** 作,Borland C++提供了一系列字符屏幕 *** 作函数来实现。
1 clrscr()清除字符窗口函数
功能:函数clrscr()清除整个当前字符窗口,并且把光标定位于左上角(1,1)处。
用法:此函数调用方式为 void clrscr(void);
说明:括号中void 表示无参数。
该函数相应的头文件为conioh
返回值:无
例:使用这个函数的例子见4clreol()函数的实例中。
2 window()字符窗口函数
功能: 函数window()用于在指定位置建立一个字符窗口。
用法: 此函数调用方式为 void window(int left,int top,int right,int bottom);
说明: 函数中参数left,top为窗口左上角坐标;right,bottom为其右下角坐标。
若有一个坐标是无效的,则window()函数不起作用。一旦该函数调用成功,那么所有定位坐标都是相对于窗口的,而不是相对于整个屏幕。但是建立窗口所用的坐标总是相对整个屏幕的绝对坐标,而不是相对当前窗口的相对坐标。这样用户就可以根据各种需要建立多个互不嵌套的窗口。
此函数的头文件为conioh。
返回值:无
例: 调用这个函数的实现例见3gotoxy()函数的例子中。
3 gotoxy()光标定位函数
功能: 函数gotoxy()将字屏幕上的光标移到当前窗口指定的位置上。
用法: 这个函数调用方式为void gotoxy(int x,int y);
说明: 括号里x,y是, 光标定位的坐标,假如其中一个坐标值无效(如坐标超界),那么光标不会移动。
此函数在字符状态(有时称为文本状态)下经常用到 ,其相应的头文件为conioh
返回值:无
例: 下面程序建立两个窗口,然后在窗口里显示字符,字符的位置是调用该函数确定的。
#include"conioh>
void border(int startx,int starty,int endx,int endy)
{
register int i;
gotoxy(1,1);
for(i=0;i<=endx-startx;i++)
putch('-');
gotoxy(1,endy-starty);
for(i=0;i<=endx-startx;i++)
putch('-');
for(i=2;i<=endy-starty;i++){
gotoxy(1,i);
putch('1');
gotoxy(endx-startx+1,i);
putch('1');
}
}
main()
{
void border(int,int,int,int);
clrscr();
window(6,8,38,12);
border(6,8,38,12);
gotoxy(2,2);
printf("window 1");
window(8,16,40,24);
border(8,16,40,24);
gotoxy(3,2);
printf("window 2");
getch();
}
4 clreol() 清除光标行尾字符函数
功能: 函数clreol()在当前字符窗口中清除从光标位置到行尾的所有字符,而光标位置保持不变。
用法: 它的调用方式为void clreol(void);
说明: 此函数的相应头文件为 conioh
返回值:无
例: 程序中使用了函数clreol()和clrscr()
#include "conioh>
void main()
{
register int i;
gotoxy(6,8);
printf("This is a test of the clreol() function");
getch();
gotoxy(6,8);
clreol();
for(i=0;i<20;i++)
printf("Hello ");
getch();
clrscr();
}
5 insline() 插入空行函数
功能: 函数insline()插入一空行到当前光标所在行上,同时光标以下的所有行都向下顺移一行。
用法: 此函数的调用方式为void insline(void);
说明: 该函数只用于文本方式,并且在当了符窗口才有效。
这个函数的对应头文件是 conioh
返回值:无
例: 程序给出了insline()函数的用法。
#include "conioh"
void main()
{
registser int i;
clrscr();
for(i=1;i<24;i++)
{
gotoxy(1,i);
printf("This is line %d ",i);
}
getch();
gotoxy(1,10);
insline();
getch();
}
6 delline() 删除一行函数
功能: 函数delline()删除当前窗口内光标所在行,同时把该行下面 所有行都上移一行。
用法: 此函数调用方式为 void delline(void);
说明: 注重,假如当前窗口小于整个屏幕,那么该函数只影响到窗口内的字符。
这个函数相应的头部文件是conioh
返回值: 无
例:先在屏幕上显示16行文字,然后删除第4行
#include "conioh"
void main()
{
register int i;
clrscr();
for(i=0;i<16;i++) printf("line %d ",i);
getch();
gotoxy(1,4);
delline();
getch();
}
7gettext() 拷进文字函数
功能: 函数gettext()用于文本状态下将屏幕上矩形域
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)