如何处理格式不规范的一元多项式_方程的计算机处理94(2)_Cvs

计算机语言运用--数值计算9-方程的计算机处理94(2)_Cvs

计算机:电子线路组成的计算机器。人与计算机则是通过计算机语言-符号系统说给计算机听而交流。

计算机语言有低级语言-机器语言、汇编、高级语言-C/C++/C#/VB/PASCAL/LISP/JAVA/PYTHON/……成百上千种之多。

作为一种计算机器—可以协助人类处理各种事情—数值计算问题、文字处理问题、图形图像处理问题、事务问题……。自从有了数字计算的计算机器,几乎所有的可以交给计算机的事情,都交给计算机来处理—是辅助处理—按照人们的要求—事先安排的模式进行处理。

数值计算

代数的计算、初等函数的计算、代数方程的求解、解析几何与微分几何的求解、矢量-张量与场论的求解、抽象代数-空间及泛函分析、级数与变换、特殊函数问题、概率统计与随机过程分析计算、误差分析与实验数据处理、最优化方法分析、有限单元法求解、数论分析、集合论及其计算、拓扑学分析与计算、组合数学的计算、图结构处理、数理逻辑分析与处理、……、……

或者说:

自然数的计算、整数的计算、实数的计算、复数的计算、矢量-向量的计算、矩阵的计算、函数的计算、代数方程的计算、函数方程的计算、微分的计算、积分的计算、常微分-一元微分方程的计算、偏微分-多元微分方程的计算、连续数量的计算、离散数量的计算、集合的计算、组合数学的计算、……、……

或者说:科学与工程技术应用中的数值计算、……、……

方程的计算机处理

这里说的方程,是以实数域为计算范围。

这里说的方程:是含有未知数的等式。

可以是a+5=8,或X+A=B,或ax2+bx+c=0,或ax+by=c与dx-ey=f,或ax+bx=c,或,

e86e9889efc81b1cbdbedba63872097e.png

d13fee8d4a6e00f7ed7cc8c6e8a8878a.png

……、……

计算机如何处理这些问题呢?,问题的描述是什么样子的,才能充分利用计算机呢?

当然是代数形式的。便于计算机发挥特长,便于程序软件的重用性。通过用户交互,决定将什么样的具体问题交给计算机进行数值处理。

方程的计算机处理

MATLAB语言及其平台、Fotran语言平台  C语言平台v6 

C语言平台vs

对于任何一个计算机语言来说,X+a=b型的方程也需要进行改造:

成为----X=b-a的样式;

C是编译型语言,因此需要将所做工作用计算机语言编制程序,再交给计算机来处理。作为静态数据的模式,与MATLAB不同,需要对计算的数据—数值或代数预先声明变量,以便申请到内存来放置。

用C语言编写为文件形式,接着编译成*.exe文件,再运行—人机交互。

计算机是进行数值计算的好帮手,因此需要对a,b预先赋值,再进行计算;

那么对于一元二次方程呢?也是如此。当然,最好是用求解方程的两个根的公式来进行处理—也就是,用它们作为计算机语言描述的基础。当然,需要计算机语言描述判别开平方中的虚数—复数根的问题。这样,便有了方程处理的前期工作,手工处理。

有数学家推导的求根公式可以直接利用 

31cca074f39030e23ac4f35984d0e5f5.png

由于负数的开平方问题,需要判断b2-4ac=(>0两个不相等的实根;=0两个相等的实根;<0两个不相等的共轭复数根;三种情况)

程序文件

//一元二次方程--QuadraticEquation.C

#include "stdio.h"

#include  

#include

#include  

 void main()

{

        //variable declaration

       int i,N;

       float a,b,c;

       double q1,q2,x1,x2,xC;

       FILE *fp;

    char file_z[10];

//input

       printf("请输入希望计算方程的个数,N:\n");

scanf_s("%d",&N);

       for(i=0;i

       {

printf("请输入一元二次方程的系数,用逗号隔开\n");

scanf_s("%f,%f,%f",&a,&b,&c); 

q1=b*b-4*a*c;

if(q1>=0)

{

x1=(-b+sqrt(q1))/(2*a);

x2=(-b-sqrt(q1))/(2*a);

printf("方的解是两个实数根:\n");

printf("%6.2f,%6.2f\n",x1,x2);

//信息存储

printf("请输入要保存的文件名与格式:");

scanf_s("%s",file_z);

if((fp=fopen(file_z,"w+"))==NULL)

{

printf("cannot open file\n");

}

else{

fprintf(fp,"输入值:%6.2f\n",a);//写入

fprintf(fp,"输入值:%6.2f\n",b);

fprintf(fp,"输入值:%6.2f\n",c);

fprintf(fp,"方的解是两个实数根:\n");

fprintf(fp,"计算结果:x1= %7.3f\n",x1);

fprintf(fp,"计算结果:x2= %7.3f\n",x2); 

fclose(fp);//保存

printf("计算结果的文件已保存!文件名为:%s\n",file_z);

}

else

{

       xC=sqrt(-q1)/(2*a);

       q2=(-b)/(2*a);

printf("方程有共轭复根\n");

printf("x1= %6.2f +%6.2fi \n",q2,xC);

printf("x2= %6.2f -%6.2fi \n",q2,xC);

//信息存储

printf("请输入要保存的文件名与格式:");

scanf_s("%s",file_z);

if((fp=fopen(file_z,"w+"))==NULL)

{

printf("cannot open file\n");

}

else

{

fprintf(fp,"输入值:%6.2f\n",a);//写入

fprintf(fp,"输入值:%6.2f\n",b);

fprintf(fp,"输入值:%6.2f\n",c);

fprintf(fp,"方程的解是一对共轭复数根:\n");

fprintf(fp,"计算结果:x1= %7.3f +%6.2fi\n",q2,xC);

fprintf(fp,"计算结果:x2= %7.3f -%6.2fi\n",q2,xC);

fclose(fp);//保存

printf("计算结果的文件已保存!文件名为:%s\n",file_z);

}

}

}

       system("pause");

}

看看运行过程

请输入希望计算方程的个数,N:

3

请输入一元二次方程的系数,用逗号隔开

2,3,4

方程有共轭复根

x1=  -0.75 +  1.20i

x2=  -0.75 -  1.20i

请输入要保存的文件名与格式:1.txt

计算结果的文件已保存!文件名为:1.txt

请输入一元二次方程的系数,用逗号隔开

2.3,-8,1.2

方的解是两个实数根:

  3.32,  0.16

请输入要保存的文件名与格式:2.txt

计算结果的文件已保存!文件名为:2.txt

请输入一元二次方程的系数,用逗号隔开

12,24,4

方的解是两个实数根:

 -0.18, -1.82

请输入要保存的文件名与格式:3.txt

计算结果的文件已保存!文件名为:3.txt

请按任意键继续. . .

人机交互与运行结果:

a1ae00154bf11f5be59655503b26d6f0.png 

感觉咋样?什么是方程的计算机处理—算法及其描述,运行及其人机交互。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值