计算机语言运用--数值计算3-实数的计算机处理313_jdk14_java
计算机:电子线路组成的计算机器。人与计算机则是通过计算机语言-符号系统说给计算机听而交流。
计算机语言有低级语言-机器语言、汇编、高级语言-C/C++/C#/VB/PASCAL/LISP/JAVA/PYTHON/……成百上千种之多。
作为一种计算机器—可以协助人类处理各种事情—数值计算问题、文字处理问题、图形图像处理问题、事务问题……。自从有了数字计算的计算机器,几乎所有的可以交给计算机的事情,都交给计算机来处理—是辅助处理—按照人们的要求—事先安排的模式进行处理。
数值计算
代数的计算、初等函数的计算、代数方程的求解、解析几何与微分几何的求解、矢量-张量与场论的求解、抽象代数-空间及泛函分析、级数与变换、特殊函数问题、概率统计与随机过程分析计算、误差分析与实验数据处理、最优化方法分析、有限单元法求解、数论分析、集合论及其计算、拓扑学分析与计算、组合数学的计算、图结构处理、数理逻辑分析与处理、……、……
或者说:
自然数的计算、整数的计算、实数的计算、复数的计算、矢量-向量的计算、矩阵的计算、函数的计算、代数方程的计算、函数方程的计算、微分的计算、积分的计算、常微分-一元微分方程的计算、偏微分-多元微分方程的计算、连续数量的计算、离散数量的计算、集合的计算、组合数学的计算、……、……
或者说:科学与工程技术应用中的数值计算、……、……
实数的计算—从整数中引入负数而再引入分数-小数扩展
在实数的范围内—实数计算结果仍然为实数。可以加减乘除-连加连减连乘连除-四则混合运算!--不能随意开方—会遇到负数开平方,这就不是实数的封闭问题。
实数构成连续量的基础,。也就是说,任意两个实数量之间可以再插入一个实数-无限可加。这是自然数、整数所没有的特性。据此就说,自然数、整数是离散数。
因此,引出实数的计算方法与自然数、整数有很大的不同。实数的表达就不是用语言能简洁说清楚的。那么,用什么形式来表达呢?图形—线(直线、曲线、……,一维、二维、三维、)--因为点与点之间可以无限再加无限多个点。
当然,复杂的还有面(平面、规则平面、不规则平面、空间曲面、……)
当然,复杂的还有体(规则体、不规则体、单体与组合体、……)
由此催生了计算机图形学—一个依靠点素-像素来表达图形的知识系统及其计算机算法与语言表述。……。内容之丰富让人们乐此不疲。
当然,就有了函数的概念、应用、表达、运算、……。
当然,连续性概念就出现了、微积分概念就出现了、……。
当然,各种方程(代数、微积分、……)就出现了。
当然,计算机语言表述就丰富多彩了,复杂性带来技术挑战,……。
自然数、整数、实数的兼容-混合使用
数与数的间隔—步长可以任意设置。不像自然数或整数只能取整数
实数的计算机生成:算法为i=0,i=n,ans=i循环
实数的连加:算法为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=11.3-2*4.5/5+3/32*8+456.78/32-5-0.78+123
相同的实数的连加:算法为ans=a*n
相同的实数的连减:算法为ans=?
相同的实数的连乘:算法为i=4,ans=4n
相同的实数的连除:算法为ans=?
三角函数可以计算了、初等函数的计算可以了、……
函数的连续性使得微积分得以通行无阻,函数变换、泛函、……太多的实际问题—科学的、工程技术的、经济的、……得以建立数学模型,进行量化分析、评估决策等。
……、……
实数的计算机处理:负数开平方可能出现的不封闭—其结果不再是实数域的数
%实数的计算-四则混合运算、初等函数及其复杂函数、微积分-方程等的计算
mix=R*cos(3*I)+8.8/N-7.32*N+7*5.55+I/R-1.3*N*sin(45.6)
MATLAB语言及其平台 Fortran语言及其平台 C语言及其平台V6 C语言及其平台VS C++语言及其平台V6 C++语言及其平台VS C#语言及其平台VS VB语言及其平台V6 VB语言及其平台VS VC++语言及其平台V6 VC++语言及其平台VS VC#语言及其平台VS
java语言及其平台JDK-14
实数-real
实数的生成及其表达
实数的简单计算—四则混合运算、连加、连减、连乘、连除、……运算的优先级
实函数的简单计算—初等函数的计算、……、简单方程—代数方程
实函数的复杂计算—微积分及其方程(连续量及其连续变化问题)
……
自然数、整数、实数的兼容-混合使用
使用MATLAB语言及其平台的好处是,可以简单地获得数值输出与图形输出,以便理解实数的计算规则其及其数值特征。当然,使用VB、VC++、VC#等也可以方便的获得图形表达,但其操作与编程还是比较繁琐,因为它们不是专为数学问题而设计的语言。虽然计算机(计算机器)完全需要数值计算处理作为最终硬件运行-软件运行的机理,但这里说的数值计算不是硬件-最底层的二进制计算问题。Fortran、C、C++、C#、VB等语言好要处理文字、图形、事务等问题。
%实数的计算-连加、连减、连乘、连除、加减乘除及初等函数混合计算// Real_Nums.java
import java.io.*;
import java.util.*;
import java.text.DecimalFormat;
public class Real_Nums //
{
//classvariables
staticdouble initDC = 88888.88888D;
staticint i,j,N;
static int[]Iarray = new int[10];
staticfloat[] Farray = new float[10];
staticdouble add,subtr,mult,divi,mix,seqenN,seqenI,seqenR,mAngle;
staticint[] file_in = new int[10];
staticString FsaveName;
public staticvoid main(String[] args) //
{
//localvariables
String m_str="this is an ordinary orlocal variable!";
int m_initIA=111;
floatm_initFB=222.2222f;
doublem_initDC=333333.33333D;
// int[] Iarray = new int[10];
//Promptinformation output
System.out.println("This is an Builtin information. Chinese Cannot used! English Yes!");
System.out.println(m_str);
System.out.println("Thisis an class variable!");
System.out.println(initDC);
//datainput
Scanner inKey = new Scanner(System.in);
System.out.println("pleaseinput Maximum natural number: N");
N=inKey.nextInt();
System.out.println("check int "+N);
System.out.println("pleaseinput 10 integers: ");
for(i=0;i
{
Iarray[i]=inKey.nextInt();
}
System.out.println("pleaseinput 10 reals: ");
for(i=0;i
{
Farray[i]=inKey.nextFloat();
}
System.out.println(Arrays.toString(Iarray));
System.out.println(Arrays.toString(Farray));
System.out.println("checkthe data : ");
System.out.println("inputthe Angle value of trigonometric function.: ");
mAngle = inKey.nextInt();
//input filedata
//dataprocessing
//addition
add=0;
for(j=0;j<=N;j++)
{
add=add+0.3*j;
}
System.out.println(add);
//subtraction
subtr=31.7;
for(j=1;j<=N;j++)
{
subtr=subtr-1.2*j;
}
System.out.printf("%.4f\n",subtr);
//multiplication
i=1;
mult=1;
while(i<=N)
{
mult=mult*i+1.3;
i++;
}
System.out.printf("%.4f\n",mult);
//division
divi=123.4;
for(j=1;j<=N;j++)
{
divi=divi/(0.7*j);
}
System.out.println("Thisis a division : ");
System.out.println(String.format("%.6f",divi));
//hybrid-mix
mix=add+subtr-mult*divi/0.3;
System.out.println(String.format("mix = %.6f",mix));
//seqen //seqenN,seqenI
intseqenI=0;
for(j=1;j
for(i=0;i
if(Iarray[i]
{
seqenI=Iarray[i];
Iarray[i]=Iarray[i+1];
Iarray[i+1]=seqenI;
}
System.out.println(Arrays.toString(Iarray));
//seqen //seqenR
floatseqenR=0.0f;
for(j=1;j
for(i=0;i
if(Farray[i]>Farray[i+1])
{
seqenR=Farray[i];
Farray[i]=Farray[i+1];
Farray[i+1]=seqenR;
}
System.out.println(Arrays.toString(Farray));
System.out.println("generating natural or integer. Next: ");
//generatingnatural integer Reals
j=-10;
while(j<=N)
{
System.out.println(j*2);
j++;
}
System.out.println("generating Real. Next: ");
i=-10;
while(i<=N)
{
System.out.printf("%.2f\n",i*1.3-0.7);
//System.out.println(i*1.3-0.5);
i++;
}
//Calculating trigonometric function -- Math class
doublemFun_Sin =Math.sin(mAngle*Math.PI/180.0);
doublemFun_Cos =Math.cos(mAngle*Math.PI/180.0);
doublemFun_Tan =Math.tan(mAngle*Math.PI/180.0);
System.out.printf("%.4f%.4f%.4f\n",mFun_Sin,mFun_Cos,mFun_Tan);
//Fileoutput--save file
ScanneroutKey = new Scanner(System.in);
System.out.println("PleaseEnter an FileName,form Save E:\\*.txt");
FsaveName= outKey.nextLine();
try {
FilewriteName = new File(FsaveName);
if(!writeName.exists()) {
writeName.createNewFile();
}
FileWriter writer = new FileWriter(writeName);
BufferedWriter Fw = new BufferedWriter(writer);
DecimalFormat Fwf = newDecimalFormat("#.00");
DecimalFormat FwTri = newDecimalFormat("#.0000");
Fw.write("Save Data to File \n");
Fw.write("User input N= "+N);
Fw.write("\r\n");
Fw.write("Continued addition 1 to N,add="+Fwf.format(add));
Fw.write("\r\n");
Fw.write("Continued subtraction 1 to N,sum="+Fwf.format(subtr));
Fw.write("\r\n");
Fw.write("Continuous multiplication 1 to N,products="+Fwf.format(mult));
Fw.write("\r\n");
Fw.write("Continued division 1 toN,divi= "+Fwf.format(divi));
Fw.write("\r\n");
Fw.write("Continuous multiplication 1 toN \n");
j=-8;
while(j<=N)
{
Fw.write("products="+Fwf.format(2.3*j)+" \n");
j++;
}
Fw.write("\r\n");
Fw.write("Sorting of "+N+" numbers is : \n");
Fw.write(Arrays.toString(Iarray));
Fw.write("\r\n");
Fw.write(Arrays.toString(Farray));
Fw.write("\r\n");
Fw.write("angle value ="+Fwf.format(mAngle)+" \n");
Fw.write("sin(angle)="+FwTri.format(mFun_Sin)+" \n");
Fw.write("cos(angle)="+FwTri.format(mFun_Cos)+" \n");
Fw.write("tan(angle)="+FwTri.format(mFun_Tan)+" \n");
Fw.write("\r\n");
Fw.flush();
Fw.close();
} catch(IOException e1) {
e1.printStackTrace();
}
}
}
程序较长,阅读费劲,大脑昏沉,看来确实需要分解为若干个方法比较好。模块清晰,便于重用。
作为实数集,一般说来是有无数个数据—实数之间还可以有实数。这时候,借用几何学的办法—图形来表达是可取的、科学的、实际的。
当然,随着计算机技术的扩展、硬件、软件、数学算法等因素促使了计算机图形学的应用与扩展。C语言是早期的语言之一,早期的编译平台没有图形处理功能—当然_图形处理功能与字符(数字、文字、……)处理功能的技术大不相同。各种原因使得C的原有编译平台不能直接编译处理图形问题。若要用C语言,可以外挂一个GUI图形处理程序包。这样就可以处理图形问题了。C++语言也是如此。
当然,可以直接使用VC++还有VB、VC#等语言及其编译平台。