.

实数域的一元方程一元变量多项式问题数

国内成立最早的白癜风医院 http://baidianfeng.39.net/a_yyxw/130325/4147947.html

百家号-计算机语言学什么、怎么学7

从计算机语言学什么、怎么学开始,在1.《计算机语言的标准格式比较》、2.《多种计算机语言的标准格式与标准IO比较》、3.《数学规则遵守、计算机算法分析、三个基本结构及多语言描述实现》、4.《实数计算、阅读程序、理解算法、从一种语言代码转另一种代码》、5.《实数域除法计算遇到分母接近于0的检测控制问题》、6.《实数域负数开平方规则的特殊限制与判定-程序格式模版-语言无关性》等6讲中,想贯彻这样一个想法:计算机语言的语言和平台无关性思想、方法、技术、操作等一般性概念与方法。有了渔不怕没有鱼。

因为平台检测-重复抄袭!?不得不使用不同的名称。其实是连续的整体的怎么学的1-6讲。所以浏览者、阅读者需要连续浏览1-6讲。这是第7讲。

在这一讲,俺们遇到一个问题。

是继续沿着计算机语言的方向朝着多功能、多函数、多类、多文件走。还是沿着简单的数学问题自然语言描述的方向朝着代数、函数、方程、微积分、变分法、矩阵、集合论、概率统计、人工智能、……还是沿着实际应用物理、化学、生物、工程技术、科学研究、前沿科技、市场需求、高薪就业、事务处理、大数据、云计算、……

尤其是米国对软件行业-几乎是全行业全方位的脱钩、禁止、制裁、……。必将引发基础软件(鸿蒙系统)、中间件、通用件(编译工具)、……,各种CAD的自主化开发发展。计算机技术与软件工程技术等行业就业普遍会好过预期。

鉴于本人只是个业余爱好者。尤其喜欢计算机辅助工作。仅仅一台电脑便可游戏人生。

因此想分开说。一说数学进阶,二说物理到工程技术应用,三说程序软件进阶。可平台监测,没法在一篇文章里说-抄袭、旧闻、……影响声誉!那就分开说,是一个连续剧。其实,由于表达方式的串行模式。也只能先按下计算机语言进阶不表,说说数学进阶。

实数域的一元方程、一元变量x的多项式问题

实数域四则混合运算除法分母为0问题、或接近于0问题、负数不能开平方-像一元二次方程的情况。都可以用一个模版来表达-算法分析与语言表述的问题。计算的检测、控制、提示、测试-变量声明-顺序、分支、循环三种基本结构实现了。

也就是说,用同样的程序结构模式,只要换上一元二次方程的数学规则,就可以了。

实数计算遇到的问题—从一种语言转换成另一种语言,没有什么困难了-不需要新的知识与技术。

那么?数学方面加大难度可以描述吗?

那下面就来看一看:

1.学什么

…………

2.怎么学-7

参考本号的《计算机语言自学过程提纲》。也可以顺便浏览一下其他的文章。因为本号是按照连续讲述的方式进行的。缺少了就可能造成某个知识或技术环节的遗漏。

2.2从实际问题开始

2.2-1从数学基础开始

可以编辑、编译、调试、运行、测试了。

问题:从一元二次方程求解扩展延伸到一元多项式-非线性方程。

二次与三次方程求解通式

非线性方程求解的数值法之一

前面有了实数计算的MATLAB实现、Fortran实现、C实现、C++实现。现在接着比较一下C#实现

看看如何用C#语言实现

通过阅读C、C++程序获得计算机算法流程,用算法流程重新写C#语言代码。

C++:的一个模版,在此基础上扩充

#include"iostream.h"需要头文件-定义了标准IO函数-供调用

intmain(intargc,char*argv[])

{

floata1,b1,Subtrac;需要变量声明

……

return0;

}

添加进处理一元二次方程的语言描述即可。

一元二次方程的数学求解规则是:数学家推导的求根公式可以直接利用

一元二次方程的求解通式

由于负数的开平方问题,需要判断b2-4ac=0的问题。也就是:两个不相等的实根或两个相等的实根;

下面就是算法分析:先求出q=b2-4ac的值,进行判断。再按照两种计算式分别进行计算。

x1=(-b+开平方q)/2a与x2=(-b-开平方q)/2a

对了,还得确认输入的a不是0;

由于要用开平方计算,就得调用头文件math提供的函数sqrt()。

C++语言V6平台人机交互模式

由上面的模版扩充-添加专用代码,参见《实数域负数开平方规则的特殊限制与判定-程序格式模版-语言无关性》。再转换成C#语言描述应该问题不大。单从表面上看,C#是完全的面向对象方法的语言,与面向过程的语言差异较大。其实,差别较大—主要在关于面向对象的语言描述事务处理问题。在数值计算这种过程特征明显的数学计算中,差别倒不大-都只用到计算机语言低层的词汇、语句、结构(主结构与三个基本结构)。在面向对象方法的语言里,只是计算过程被包裹在一个类中的函数里。这里用了主方法-主函数可能更专业一点。

C#:程序模版

usingSystem.IO;//键盘/显示器-标准IO方法被引入

namespaceCons_arithmetic

{

classProgram

{

需要变量声明-范围-类中

staticvoidMain(string[]args)

{

floata1,b1,Division1;需要变量声明-范围-函数中

Console.Write("请输入1个实数:\n");

a1=float.Parse(Console.ReadLine());

Console.Write("请输入1个实数:\n");

b1=float.Parse(Console.ReadLine());

Division1=a1+b1-a1/b1+a1*b1;

Console.Write("用户两实数四则混合运算结果:"+Division1+"\n");

}

}

}

实数域一元二次方程求解。C语言、C++语言与C#语言在此问题的描述差别不大。

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Linq;

usingSystem.Text;

usingSystem.IO;

usingSystem.Data;

namespaceRealArithmetic

{

classProgram

{

staticvoidMain(string[]args)

{

inti,j,k,N,num=0;

stringChansI;

Console.WriteLine("输入测试次数");

N=int.Parse(Console.ReadLine());

for(i=0;iN;i++)

{

float[]abc=newfloat[3];

doubleRqsqrt,x1,x2;stringChansABC,ChansQ,ChTrigonomX1,ChTrigonomX2;

stringWname;

//键盘输入数据--并进行计算

Console.Write("请输入3个实数,依次是a,b,c,每输入1个回车一次。a不能为0:\n");

for(j=0;j3;j++)

{

abc[j]=float.Parse(Console.ReadLine());

}

//数据处理

if(abc[0]==0)

{

Console.WriteLine("你输入的一元二次方程的二次项系数为0,请重新输入");

else

{

Rqsqrt=abc[1]*abc[1]-4*abc[0]*abc[2];

if(Rqsqrt0)

{

Console.WriteLine("你的一元二次方程没有实数解");

}

else

{

x1=(-abc[1]+Math.Sqrt(Rqsqrt))/2*abc[0];

x2=(-abc[1]-Math.Sqrt(Rqsqrt))/2*abc[0];

ChansABC=string.Format("{00:F4}",abc);

ChansQ=string.Format("{00:F4}",Rqsqrt);

ChTrigonomX1=string.Format("{00:F4}",x1);

ChTrigonomX2=string.Format("{00:F4}",x2);

//键盘输入数据的处理结果

Console.WriteLine("计算机语言处理完毕,请检查结果:");

Console.WriteLine(ChTrigonomX1,"一个实根\r\n");

Console.WriteLine(ChTrigonomX2,"另一个实根\r\n");

Console.Write("请输入计划保存的文件,如F:\\outdata.txt\n");

Wname=Console.ReadLine();

FileStreamfs=newFileStream(Wname,FileMode.Create);

StreamWritersw=newStreamWriter(fs);

sw.Write("计算机处理完毕:\r\n");

sw.Write("根号内的计算结果");

sw.WriteLine(ChansQ,"\r\n");

sw.Write("你的一元二次方程的根,X1=");

sw.WriteLine(ChTrigonomX1,"\r\n");

sw.Write("你的一元二次方程的根,X2=");

sw.WriteLine(ChTrigonomX2,"\r\n");

//清空缓冲区

sw.Flush();

sw.Close();

fs.Close();

Console.WriteLine("计算机语言处理完毕,数据已经保存为:");

Console.WriteLine(Wname);

}

}

num=i+1;

ChansI=num.ToString();

Console.WriteLine("计算机语言处理次数为:");

Console.WriteLine(ChansI);

}

Console.WriteLine("计算机语言处理完毕,请检查数据。");

Console.WriteLine("检查后,请回车结束");

Console.ReadKey();

}}}

C#语言VDS平台人机交互模式

ax3+bx2+cx+d=0

anxn+bn-1xn-1+……+x+a=0

还有标准的求解公式吗?若没有,那怎么办呢?

非线性方程求解的数学知识

有些特殊的高次方程可以通过和差化积来求解-转化成已有方法或求解公式来解决。绝大多数还真的没有求解公式。数学专家们也不行。那计算机怎么做呢?这就是计算机的数值计算-数学家们想出了一个近似的、逐步逼近精确解的办法。总比没有解强多了。

还记得高次方程求解的几何法吗?用描点法在坐标系中画出高次方程的函数曲线,确定高方程的根。计算机也有同样的办法-计算机图形生成技术。也就是数据的可视化技术。

这得用VC#更方便。当然,VB、VC++、MATLAB也行。那C、Fortran、Java、Python、R、等等呢。也行。但就是要得到一个含有坐标的画布,还是编译器提供的好方便。而且,图形生成问题使用点阵像素概念与方法。需要许多图形生成函数、变换函数、等。当然,已经有C、Fortran、Java、Python、R、等的图形包可以用了。可还是觉得VB、VC++、VC#、MATLAB方便。




转载请注明:http://www.abachildren.com/xgyy/1545.html

  • 上一篇文章:
  • 下一篇文章: 没有了