计算机语言运用--数值计算8-函数的计算机处理8(2)_1Fortran
计算机:电子线路组成的计算机器。人与计算机则是通过计算机语言-符号系统说给计算机听而交流。
计算机语言有低级语言-机器语言、汇编、高级语言-C/C++/C#/VB/PASCAL/LISP/JAVA/PYTHON/……成百上千种之多。
作为一种计算机器—可以协助人类处理各种事情—数值计算问题、文字处理问题、图形图像处理问题、事务问题……。自从有了数字计算的计算机器,几乎所有的可以交给计算机的事情,都交给计算机来处理—是辅助处理—按照人们的要求—事先安排的模式进行处理。
数值计算
代数的计算、初等函数的计算、代数方程的求解、解析几何与微分几何的求解、矢量-张量与场论的求解、抽象代数-空间及泛函分析、级数与变换、特殊函数问题、概率统计与随机过程分析计算、误差分析与实验数据处理、最优化方法分析、有限单元法求解、数论分析、集合论及其计算、拓扑学分析与计算、组合数学的计算、图结构处理、数理逻辑分析与处理、……、……
或者说:
自然数的计算、整数的计算、实数的计算、复数的计算、矢量-向量的计算、矩阵的计算、函数的计算、代数方程的计算、函数方程的计算、微分的计算、积分的计算、常微分-一元微分方程的计算、偏微分-多元微分方程的计算、连续数量的计算、离散数量的计算、集合的计算、组合数学的计算、……、……
或者说:科学与工程技术应用中的数值计算、……、……
对于数值计算问题,像自然数、整数、实数、复数、矢量、离散量、……,作为基础练习了不少。对于方程问题—求解方程的解--若干个值的问题,也练习了不少。可在实际的科学、工程问题或数学学科中,若干个值是不够的。需要了解科学、工程问题性态—全局性的特点。这些都被用函数来描述、或函数的某种方程表现模式来描述—微分形式的方程等。这就比较麻烦了!计算机对这类问题需要麻烦的图形显示、计算处理。图形显示通过点阵模式—矩阵理论或集合论来处理,和硬件密不可分。不过好在有许多图形包被专业人士所构造,它们和语言编译平台工具有机整合(微软的语言编译平台等)或挂载(Fortran、C、C++、……等语言)。WINDOWS模式出现并成熟以后的计算机语言都开始关注或照顾到图形处理问题。(可以参看—计算机图形学知识)
按照函数的定义,函数指一个量y随着另一个量x的变化而变化,或者说一个量中包含另一个量。变化的对应法则为f,函数就被记作f(x)。函数概念含有三个要素:定义域A、值域B和对应法则f。后来又被说成给定一个数集A,假设其中的元素为x,对A中的元素x施加对应法则f,记作f(x),得到另一数集B,假设B中的元素为y,则y与x之间的等量关系可以用y=f(x)表示。后来在计算机语言领域又有了函数概念的扩展,但对应关系的基本内涵没有变化。虽然,后来由于处理复杂问题的思维需要,改名叫方法或服务,但其本质没有变化—对应关系及其对应法则。
函数有三种基本的表达形式:
公式法
y=3x,当x=3时,y=9
表格法
x=1,2,3,4,5; y=3,6,9,12,15
图像法—几何法
计算机软件中则表现为输入格式与输出格式的问题。
自然数、整数不具备连续性,归为离散量,连续的最简单的就是基于实数域的初等函数了。
一元函数的线性函数y(x)=ax+b
二元函数的线性函数z(x,y)=ax+by+c
三元函数的线性函数F(x,y,z)=ax+by+cz+d
……
n元函数的线性函数F(x,y,z,……)
若遇到时间t变量,那就热闹了!
一元函数的线性函数y(x(t))=ax(t)+b
二元函数的线性函数z(x(t),y(t))=ax(t)+by(t)+c
三元函数的线性函数F(x(t),y(t),z(t))=ax(t)+by(t)+cz(t)+d
……
若时间t变量还是独立参数—时变系统—动力系统!
非线性的更多
y(x)=ax2+bx+c、y(x)=asin(x)+b、y(x)=aln(x)+b、y(x)=aex+b、……、y(x)=asin(x)+bcos(x)+c、……y(x)=asin(x)cos(x)+bsin(2x)、……
z(x,y)=asin(x)+bsin(y)+c、z(x,y,t)=asin(x(t))+bsin(2x(t))sin(y(t))+c、……
…………
计算机处理最基本的办法是两个变换—泰勒级数与富里埃级数法。
在各种语言的内置函数应用中—math函数,使用者感觉不到这一点。有必要了解一下计算机语言表述的乘法问题。!!!乘法是加法的简便运算!也许可以去读读汇编语言中的四则混合运算问题,能理解体会计算机处理方法与过程。所有问题都必须在内存中来解决,必须在数字电路上来解决—处理。是不是还要读点数字电路的知识呢、那就看你的要求—理解深度与广度了。在离散量—字符处理中这一点同样需要。在图形处理中这一点同样需要。
用计算机辅助处理—最基本的初等函数问题。
MATLAB语言及其平台
Fortran语言及其平台
Fortran语言是一种编译型的高级程序设计语言,也就是说,先生成*.exe文件再执行。可以有多种人机交互方法—工程项目的模式。
控制台的(DOS-命令行模式)、视窗的模式等。
处理纯数据问题,使用控制台模式(参见自然数、整数、实数、向量、……离散数等的计算机处理)
处理函数问题的性态—图形表达,则需要使用QuickWin模式。外挂一个图形库模块。USE DFLIB。这是由Fortran语言诞生较早,当时的计算机图像处理—硬件/图形显示及其算法软件未成熟。Fortran语言编译平台后嵌入了一个图形处理模块及其视窗显示(借用了windows操作系统的视窗API)。因此,用或看起来有些别扭。其实,C语言也是如此。只有后来的VB、VC++、VC#、JAVA、PYTHON、……等语言的整体性就好多了—无缝衔接。尤其是提供了大量的函数,方便非专业使用者专心处理自己的特定问题。
由于是外挂模块,在控制台编译器的基础上共享Windows的API。需要许多准备工作—设置绘图环境。虽然第一个麻烦,以后就成了标准配置,主要精力就放在所关注的函数图形绘制方面,函数形态与性态方面。
函数的公式法表达
y=a*sin(12*x)+b
y=1.3*x2-0.2x-1.7
函数的Fortran语言表达—其中引用了好多—过程/函数
程序文件*.f90
!Fortran_Graphics.f90--Fortran_Graphics_basic.dsp
useDFLIB !通过use语句引用module模块DFLIB一个公有过程
INTEGERgraph_result,graph_results !变量声明
REALGX,GY,SX,SY,PI !
PARAMETER(PI=3.1415926) !参数初始化
TYPE(XYCOORD) graph_XY !派生类型变量声明
CALLSETVIEWPORT(40,20,1000,800) !调过程、函数-API_Windows操作系统的
graph_result=SETBKCOLORRGB(#f0ffff) !调过程、设置背景色
CALL CLEARSCREEN($GCLEARSCREEN) !调过程、清空窗口区
CALLMOVETO(int2(10),int2(400),graph_XY) !调过程、设置当前绘图点graph_XY基点坐标
CALLSETLINESTYLE(#F2F2) !调过程、设置线型-点画线
graph_result=SETCOLORRGB(#00FF00) !调过程、设置绘制图形的色彩
graph_result=LINETO(20000,300) !绘制直线
graph_result=SETCOLORRGB(#ff0000) !调过程、设置绘制图形的色彩
graph_results=SETWINDOW(.TRUE.,-2.0D0,-2.0D0,2.0D0,2.0D0)
doSX=-60D0,180D0,0.001D0
SY=0.5*SIN(12*SX)+SX
GX=1.3*SX*SX-0.2*SX-1.7
graph_results=SETPIXEL_W(SX,SY)
graph_results=SETPIXEL_W(SX,GX)
ENDDO
graph_result=SETCOLORRGB(#ff00FF) !调过程、设置绘制图形的色彩
CALLSETLINESTYLE(#F2F2) !调过程、设置线型-点画线
graph_result=LINETO(INT2(10),INT2(600))
graph_result=LINETO(40,400)
graph_result=LINETO(600,600)
doSX=-60D0,180D0,0.001D0
Gy=SIN(8*SX)*COS(3*SX)
graph_results=SETPIXEL_W(SX,GY)
ENDDO
end
处理结果
函数的表格法表达
…………
函数的图象法表达—连续函数问题