当前位置:首页 > 工作计划 > 编写求出所有基本最优解的通用程序 [用C语言编写二个通用计算程序]
 

编写求出所有基本最优解的通用程序 [用C语言编写二个通用计算程序]

发布时间:2019-01-10 04:22:19 影响了:

  摘要:在中学数学教学内容中,应用一元二次方程求根公式计算一元二次方程的根和应用高斯主元素消去法计算线性方程组的解是一部分具有机械计算性的程式化的单元,这使得很适合用C语言编写其计算程序。按照结构化思路设计编写C程序的二个实例。
  关键词:C语言;结构化;计算程序
  中图分类号:TP311文献标识码:A文章编号:1009-3044(2007)18-31611-03
  Compiling two General Computer Programs in C Language
  LIU Xiao-mang
  (Jiangxi College of Applied Technology,Ganzhou 341000,China)
  Abstract:In the middle school"s mathematics curriculum,the calculating of the solution of a quadratic equation with two unknowns with its formula and the calculating of the solution of linear equation with Goss"s eliminating the major elements solution are two units which involves mechanical formula computation. They are suitable for compiling computer programs in C Language. Here are two examples of compiling C program with the perspective of construction.
  Key words:C Language; construction;computing sequence
  
  在中学数学教学内容中,应用一元二次方程求根公式计算一元二次方程的根和应用高斯主元素消去法计算线性方程组的解是一部分具有机械计算性的程式化的单元,这使得很适合用C语言编写其计算程序. 下面即二个实例.
  
  1 用求根公式解一元二次方程的程序
  
  从代数学中知道,应用一元二次方程求根公式计算一般一元二次方程ax2+bx+c=0根的全过程和一元二次方程根的可能情况如下:
  观察判断a和b是否为零.
  如果a=b=0,那么方程为0x2+0x+0=0,无穷多解,或0x2+0x+c=0(c≠0),无解;
  如果a=0,b≠0,那么方程为0x2+bx+c=0,x=-c/b;
  如果a≠0,那么方程为
  ax2+0x+0=0, ax2+0x+c=0, ax2+bx+0=0, ax2+bx+c=0
  之一,可统一为
  (1)若d=b2-4ac0,则有一对相异实根
  简要显示题目和有关信息;设置变量h作为解一元二次方程次数的计数器(亦即题号);由键盘输入一元二次方程的二次项系数、一次项系数和常数项;用一组标记值0 0 0控制解题完毕.
  C程序
  #include"math.h"
  main()
  {int h;
  double a,b,c,d,r,s;
  printf("\n");printf("\n");
  printf("用求根公式解一元二次方程:");
  printf("\n");
  h=0;
  loop:h=h+1;
  printf("\n");printf("\n");
  printf("%d.%14ca b c=?%c",h,"","");
  scanf("%lf%lf%lf",&a,&b,&c);
  printf("\n");
  if(a==0.0&&b==0.0&&c==0.0)printf("%16c完毕.","");
  else{printf("%10c解方程%4.2fx*x","",a);
  if(b=0.0)
  printf("%16cx1=%4.2f+%4.2fi%16cx2=%4.2f-%4.2fi","",r,s,"",r,s);
  if(d==0.0)printf("%16cx1=x2=%4.2f","",r);
  if(d>0.0)printf("%16cx1=%4.2f%16cx2=%4.2f","",r+s,"",r-s);}goto loop;}}
  运行显示
  用求根公式解一元二次方程:
  (1)a b c=? 1 2 1
  解方程1.00x*x+2.00x+1.00=0.00
  x1=x2=-1.00
  (2)a b c=? 1 1 0
  解方程1.00x*x+1.00x+0.00=0.00
  x1=0.00x2=-1.00
  (3)a b c=? 1 2 -3
  解方程1.00x*x+2.00x-3.00=0.00
  x1=1.00x2=-3.00
  (4)a b c=? 4 -4 2
  解方程4.00x*x-4.00x+2.00=0.00
  x1=0.50+0.50ix2=0.50-0.50i
  (5)a b c=? 0 0 2
  解方程0.00x*x+0.00x+2.00=0.00
  无解
  (6)a b c=? 0 0 0
  完毕.
  
  2 用高斯主元素消去法解线性方程组的程序
  
  设线性方程组写成
  其中Ai,k为非奇异实矩阵.
  解线性方程组的高斯主元素消去法如下:
  首先在系数矩阵中找出模最大的元素(主元素),将其所在行与第一行互换,并将其所在列的其它元素消去. 继而对从第二行开始的n-1 行矩阵重复上述变换,直至第n行. 最后, 再将结果次序适当排列即得线性方程组的解.
  例如,给出一线性方程组:
  这里,选择的主元素必须不等于零,否则方程组系数矩阵对应的行列式D=0,方程组无解或有无穷多解,不予讨论.
  上面方法步骤总结归纳成为下面计算算法:
  读入方程组系数和常数项.
  (1)显示方程组;
  (2)设置变量i为消元次数计数器,1=>i;
本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文   *找增广矩阵左下角n-i+1行n列矩阵的主元素,主元素=>t,主元素所在行、列序号=>p、q. 交换i行(主行)与p行(主元素所在行),将主元素所在列其它元素化为0. i+1=>i,若i≤n,则转*;
  (3)去系数并显示方程组的解.
  根据高斯主元素消去法的计算算法,可以在其C程序中划分出显示、消元和求解三个功能函数,按照结构化思路设计编写C程序.
  简要显示题目和有关信息;设置变量h 作为解线性方程组次数的计数器(亦即题号);由键盘输入线性方程组的未知数个数、系数和常数项;用一个标记值0控制解题完毕.
  C程序
  #include"math.h"
  main()
  {void xs(double b[7][8],int n);
  void xy(double b[7][8],int l[7],int n,double u[1]);
  void qj(double b[7][8],int l[7],int n);
  int h,n,i,j,m[7];
  double a[7][8],t[1];
  printf("\n");printf("\n");
  printf("用高斯主元素消去法解线性方程组:");
  printf("\n");printf("\n");
  h=0;
  loop:h=h+1;
  printf("%d.%18c线性方程组的未知数个数 n=?%c",h,"","");
  scanf("%d",&n);
  printf("\n");
  if(n==0)printf("%20c完毕.","");
  else{printf("%20c线性方程组的系数和常数项=?%c","","");
  printf("\n");printf("\n");
  for(i=1;ifabs(u[0]))u[0]=b[j][k],p=j,q=k;
  if(u[0]!=0.0){for(k=1;k 本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文

猜你想看
相关文章

Copyright © 2008 - 2022 版权所有 职场范文网

工业和信息化部 备案号:沪ICP备18009755号-3