计算方法——C语言实现——高斯消元法求解线性方程组

最近在上计算方法这门课,要求是用MATLAB做练习题,但是我觉得C语言也很棒棒啊~

题目:

计算方法——C语言实现——高斯消元法求解线性方程组_第1张图片
高斯消元法是线性方程组的直接解法,可能会造成很大的失真,尤其是下面用的高斯顺序消元法。代码都是上上个星期写的,暂时就不注释了……
使用VS2017,代码如下:

//使用高斯顺序消元法求解线性方程组
#include "stdafx.h"
#include
#include "math.h"

double **A, *b, *x;
unsigned int RANK = 4;
unsigned int makematrix()
{
	unsigned int r, c;

	printf("请输入矩阵行列数,用空格隔开:");
	scanf_s("%d %d", &r, &c);

	A = (double**)malloc(sizeof(double*)*r);//创建一个指针数组,把指针数组的地址赋值给a ,*r是乘以r的意思
	for (int i = 0; i < r; i++)
	A[i] = (double*)malloc(sizeof(double)*c);//给第二维分配空间
	for (int i = 0; i < r; i++) {
		   for (int j = 0; j < c; j++)
			A[i][j] = 0.0;		
	}

	b = (double*)malloc(sizeof(double)*r);
	for (int i = 0; i < r; i++)
	{
		b[i] = 0.0;
	}
	x = (double*)malloc(sizeof(double)*c);
	for (int i = 0; i < c; i++)
	{
		x[i] = 0.0;
	}

	return r;//一般都是输入方阵,返回行数也阔以
}

void getmatrix(void)//输入矩阵并呈现
{
	printf("请按行从左到右依次输入系数矩阵A,不同元素用空格隔开\n");
	for (int i = 0; i < RANK; i++)
	{
		for(int j = 0;j

按设计的提示老老实实 输入题目的系数矩阵和常数向量后,得到运行结果:
计算方法——C语言实现——高斯消元法求解线性方程组_第2张图片
可以看出来,X4其实就是0,但是显示不是0,这并不是程序有问题,而是这就是方法上失真的体现。

你可能感兴趣的:(计算方法,计算方法,C语言,高斯消元法)