利用追赶法来求解方程Ax=b的C++程序
来源:互联网 发布:女生性幻想对象 知乎 编辑:程序博客网 时间:2024/06/08 19:28
在写程序之前需要完成矩阵的输入操作,在这个地方我们是通过在txt文件上对矩阵输入,创建一个txt文件并且输入下面的内容:
-------------------------------------------------------
%矩阵行数:
5
%矩阵列数:
6
%矩阵的元素:
2 1 0 0 0 1
1 4 1 0 0 -2
0 1 4 1 0 2
0 0 1 4 1 -2
0 0 0 1 2 1
--------------------------------------------------------
1.注意的是矩阵式增广矩阵
2.矩阵的行数和列数也是对增广矩阵的描述
源程序:
//追赶法求解矩阵
#include<stdio.h>
#include<iostream>
using namespace std;
void zhugan();
int main()
{
zhugan();
return 0;
}
void zhugan()
{
FILE *stream=fopen("data2.txt","r");
float Mar[50][50];
int row,col;
char msg[50];
fscanf(stream,"%s",msg);
cout<<msg<<endl;
fscanf(stream,"%d",&row);
cout<<row<<endl;
fscanf(stream,"%s",msg);
cout<<msg<<endl;
fscanf(stream,"%d",&col);
cout<<col<<endl;
fscanf(stream,"%s",msg);
cout<<msg<<endl;
for(int i=0;i<row;i++)
{
for(int j=0;j<col;j++)
{
fscanf(stream,"%f",&Mar[i][j]);
cout<<Mar[i][j]<<" ";
}
cout<<endl;
}
fclose(stream);
cout<<"------------------------------"<<endl;
//对元素进行追赶法求解
float gk=-Mar[0+1][0]/Mar[0][0];
Mar[0+1][0]=Mar[0+1][0]+Mar[0][0]*gk;
Mar[1][1]=Mar[1][1]+Mar[0][1]*gk;
Mar[1][col-1]=Mar[1][col-1]+Mar[0][col-1]*gk;
int j1=1;
for(int i1=1;i1<row;i1++)
{
gk=-Mar[i1+1][j1]*1.0/Mar[i1][j1];
Mar[i1+1][j1+1]=Mar[i1+1][j1+1]+Mar[i1][j1+1]*gk;
Mar[i1+1][j1]=Mar[i1+1][j1]+Mar[i1][j1]*gk;
if(Mar[i1+1][j1]<0.00001)
{
Mar[i1+1][j1]=0;
}
Mar[i1+1][col-1]=Mar[i1+1][col-1]+Mar[i1][col-1]*gk;
j1++;
}
for(int i2=0;i2<row;i2++)
{
for(int j2=0;j2<col;j2++)
{
cout<<Mar[i2][j2]<<" ";
}
cout<<endl;
}
float X[50];
X[0]=Mar[row-1][col-1]*1.0/Mar[row-1][col-2];
int k=1;
for(int i3=row-2;i3>=0;i3--)
{
X[k]=(Mar[i3][col-1]-Mar[i3][col-1-k]*X[k-1])/Mar[i3][col-2-k];
k++;
}
cout<<"-----------------------------"<<endl;
//对x的值进行排序
float XX[50];
for(int k1=0;k1<row;k1++)
{
XX[k1]=X[row-1-k1];
}
cout<<"利用追赶法求出解为:"<<endl;
for(int k2=0;k2<row;k2++)
{
cout<<"X["<<k2<<"]= "<<XX[k2]<<endl;
}
}
- 利用追赶法来求解方程Ax=b的C++程序
- 求解方程Ax=b的通用程序
- eigen求解方程Ax=b
- 高斯消元法解方程Ax=b的C源代码实现
- 如何解Ax = b的方程
- C语言求解线性方程组AX=b
- 连载 | 理解线性代数04 利用行列式求解 Ax = b
- 求解三对角方程组的追赶法(Matlab程序)
- 高斯消元法解向量方程Ax=b
- J解方程Ax=b
- AX=B型方程思考
- 基于C++的n阶线性方程组Ax=b求解
- 求解Ax=b:可解性和解的结构
- 基于C++的n阶线性方程组Ax=b求解
- 给定三维空间里的任意三个点来确定一个平面方程Ax+By+Cz+D=0的求解过程及伪代码的实现
- 求出方程ax^2+bx+c=0的实根
- 追赶法解方程
- 求不定方程初始解{ax+by=c,a,b,c∈Z…
- 1020. 月饼 (25)
- codeforces 412 impelment、greedy
- Android环境的搭建
- Mac Netbeans快捷键
- mybatis执行批量更新batch update 的方法(oracle,mysql)
- 利用追赶法来求解方程Ax=b的C++程序
- 一个servlet处理多个请求
- android中用Spannable在TextView中设置超链接、颜色、字体
- C语言开发总结(十三)
- jQuery通过Ajax向PHP服务端发送请求并返回JSON数据
- STM8L051低功耗模式测试文档
- 重复拉丁矩阵
- Powershell&TFS_Part 1
- TCP的长连接、短连接、keepalive及心跳