• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > C语言解3元1次方程组 用初中学的最基本的联合消元法

C语言解3元1次方程组 用初中学的最基本的联合消元法

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了高斯消元法c,高斯消元法c语言,消元法,加减消元法,高斯消元法等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

没学过线性代数,但是很多算法都和矩阵相关,所以就硬着头皮学。
最近就想自己能不能先写个算线性方程组的程序呢?后来就想了这么个方法,暂时只能算3元的,任意元的接下来继续想。有太多硬编码,希望有兴趣的读者可以给点修改建议!

//A的第一个方程分别与2、3个方程联合消去z,得到x,y的两个方程,存入B
double B[2][4];
//B的两个方程联合消去y,得到x
double C[1][4];


void CombineB(int i)//A[0]与A[1]或A[2]消去z
{

 double m0=abs(A[i][2]);
 int b=A[0][2]*A[i][2]>0?-1:1;
 double mi=b*abs(A[0][2]);
 //printf("m0=%lf,mi=%lf\n",m0,mi);//调试用
 for(int j=0;j<4;j++)
 {
  B[i-1][j]=A[0][j]*m0+A[i][j]*mi;
 }


}

void CombineC()//B[0]与B[1]消去y
{

 double m0=abs(B[1][1]);
 int b=B[0][1]*B[1][1]>0?-1:1;
 double m1=b*abs(B[0][1]);

 for(int j=0;j<4;j++)
 {
  C[0][j]=B[0][j]*m0+B[1][j]*m1;
 }


}
//显示4个参数
void Show(double N[][4],int d1)
{
 char W[3]={'x','y','z'};

 for(int i=0;i<d1;i++)
 {
  for(int j=0;j<3;j++)
  {
   printf("%lf * %c + ",N[i][j],W[j]);
  }
  printf("%lf = 0\n",N[i][3]);
 }
 printf("\n\n");
}

int _tmain(int argc, _TCHAR* argv[])
{
 Show(A,3);
 CombineB(1);
 CombineB(2);
 Show(B,2);
 CombineC();
 Show(C,1);

 //得到x后则依次算出其他数字
 x[0]=(0-C[0][3])/C[0][0];
 x[1]=(0-B[0][3]-B[0][0]*x[0])/B[0][1];
 x[2]=(0-A[0][3]-A[0][0]*x[0]-A[0][1]*x[1])/A[0][2];
 //输出结果
 for(int i=0;i<3;i++)
  printf("x[%d]=%lf\t",i,x[i]);
 printf("\n");
 system("pause");
 return 0;
}
</div>

2.截图 

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C语言解3元1次方程组 用初中学的最基本的联合消元法
  • C语言高斯消元法的使用详解

相关文章

  • 2017-05-28C++Primer笔记之顺序容器的使用详解
  • 2017-05-28基于C++中常见内存错误的总结
  • 2017-05-28c++ 类中const成员变量的赋值方法
  • 2017-05-28C++ 中pragma once 与 #ifndef _XXX_H_ #define _XXX_H_的区别
  • 2017-05-28简单介绍C语言中的umask()函数和truncate()函数
  • 2017-05-28深入C++中构造函数、拷贝构造函数、赋值操作符、析构函数的调用过程总结
  • 2017-05-28C语言中使用lex统计文本文件字符数
  • 2017-05-28C语言中的函数指针基础学习教程
  • 2017-05-28C++中简单读写文本文件的实现方法
  • 2017-05-28C++的get()函数与getline()函数使用详解

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C语言中宏定义使用的小细节
    • c++友元函数与友元类的深入解析
    • 举例讲解C语言链接器的符号解析机制
    • 数据结构之堆详解
    • 手把手教你如何优化C语言程序
    • C++十六进制宏的用法详解
    • string与char*转换的使用详解
    • C语言运算符优先级列表(超详细)
    • C++编写简易的飞机大战
    • 深入理解卡特兰数及其应用

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有