计算机语言运用--数值计算9-方程的计算机处理97(3)_C#vs
计算机:电子线路组成的计算机器。人与计算机则是通过计算机语言-符号系统说给计算机听而交流。
计算机语言有低级语言-机器语言、汇编、高级语言-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,或,
或
……、……
计算机如何处理这些问题呢?,问题的描述是什么样子的,才能充分利用计算机呢?
当然是代数形式的。便于计算机发挥特长,便于程序软件的重用性。通过用户交互,决定将什么样的具体问题交给计算机进行数值处理。
方程的计算机处理
MATLAB语言及其平台、Fotran语言平台 C语言平台v6 C语言平台vs C++语言平台v6 C++语言平台vs
C#语言平台vs
对于任何一个计算机语言来说,X+a=b型的方程也需要进行改造:
成为----X=b-a的样式;
计算机是进行数值计算的好帮手,因此需要对a,b预先赋值,再进行计算;
那么对于二元一次方程呢?也是如此。当然,最好是用求解方程的两个解的公式来进行处理—也就是,用它们作为计算机语言描述的基础。当然,需要计算机语言描述判别分母为零。这样,便有了方程处理的前期工作,手工处理。
有数学家推导的求根公式可以直接利用
从数学问题的自然语言表述到数学问题的计算机语言表述
二元一次方程组求解
求解的计算机语言表达分析,可以简单说明如下
算法说明:
方程的一般形式:a1x+b1y=c1; a2x+b2y=c2 或者
粗糙的给出求解的一般形式
;
求解的注意事项:需要判断① a1≠0;b1≠0; a2≠0; b2≠0;
对计算机语言的表述形式来说:需要声明和定义的变量有 a1;x;b1;y;c1; a2;x;b2;y;c2;
需要定义的计算语句有变量赋值语句
数值计算语句 ;
判断语句和格式 if then end if
接下来是说:C#是编译型语言,因此需要将所做工作用计算机语言编制程序,再交给计算机来处理。作为静态数据的模式,需要对计算的数据—数值或代数预先声明变量,以便申请到内存来放置。
用C#语言编写为文件形式,接着编译成*.exe文件,再运行—人机交互。
程序文件
//二元一次方程组--linearequation
using System;
using System.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
using System.IO;
namespace LinearEquation2_1
{
class Program
{
static void Main(string[] args)
{
int N;
float a1, b1, c1, a2, b2, c2;
double Q0, x, y;
string Fout_name;
/*标准输入-键盘*/
Console.Write("请确定你的计算次数,输入1个整数 N:\n");
N = int.Parse(Console.ReadLine());
for (int i = 0; i < N; i++)
{
Console.Write("请输入第1个方程的系数,3个实数,各自回车确认\n");
a1 =float.Parse(Console.ReadLine());
b1 =float.Parse(Console.ReadLine());
c1 =float.Parse(Console.ReadLine());
Console.Write("请输入第2个方程的系数,3个实数,各自回车确认\n");
a2 =float.Parse(Console.ReadLine());
b2 =float.Parse(Console.ReadLine());
c2 =float.Parse(Console.ReadLine());
//数据处理过程
Q0 = a1 * b2 - b1 * a2;
if (Q0 != 0)
{
x = (b2 * c1 - b1 * c2) /Q0;
y = (a1 * c2 - a2 * c1) /Q0;
//标准IO_键盘显示器
Console.Write("方程的解是两解: ");
Console.Write("\n");
Console.Write("x={0:f}", x);
Console.Write("\n");
Console.Write("y={0:f}", y);
Console.Write("\n");
//信息存储-硬盘操作--文件IO
Console.WriteLine("数据处理完毕,请输入保存文件名,格式为:*.txt \n");
Fout_name =Console.ReadLine();
StreamWriter sw = newStreamWriter(Fout_name, true, Encoding.Default);
sw.WriteLine("键盘输入的用户数据 \n");
sw.WriteLine("键盘输入的二元一次方程系数为:a1=" + a1 + ", b1=" + b1 + ", c1=" + c1 +",\n");
sw.WriteLine("键盘输入的二元一次方程系数为:a2=" + a2 + ", b2=" + b2 + ", c2=" + c2 +",\n");
sw.WriteLine("\n");
sw.WriteLine("计算机求解方程的结果如下,两个解:\n");
sw.WriteLine("x={0:f}", x);
sw.WriteLine("y={0:f}", y);
sw.WriteLine("\n");
sw.Close();
Console.Write("计算机处理结果被保存为" + Fout_name + " 请检查!\n");
}
else
Console.Write("该方程组没有解!\n");
}
Console.Write("按回车键-结束。\n");
Console.ReadKey();
}
}
}
求解过程
请确定你的计算次数,输入1个整数 N:
2
请输入第1个方程的系数,3个实数,各自回车确认
2
4
7
请输入第2个方程的系数,3个实数,各自回车确认
4.4
6.6
8.8
方程的解是两解:
x= -2.50
y= 3.00
数据处理完毕,请输入保存文件名,格式为:*.txt
2.txt
计算机处理结果被保存为 2.txt 请检查!
请输入第1个方程的系数,3个实数,各自回车确认
5.6
7.8
9
请输入第2个方程的系数,3个实数,各自回车确认
3.4
-7
9.8
方程的解是两解:
x= 2.12
y= -0.37
数据处理完毕,请输入保存文件名,格式为:*.txt
2.txt
计算机处理结果被保存为 2.txt 请检查!
按回车键-结束。
求解结果
咱不是要说明实际数学问题怎么变成计算机处理吗!就是数学方程的预先处理问题、计算机语言描述问题嘛。
在C、C++、C#、Fortran等语言中,你能看到复数的处理问题与描述。
感觉咋样?什么是方程的计算机处理—算法及其描述,运行及其人机交互。