2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > c语言数学追赶法编程 计算方法——C语言实现——追赶法求解非线性方程

c语言数学追赶法编程 计算方法——C语言实现——追赶法求解非线性方程

时间:2018-11-04 07:25:29

相关推荐

c语言数学追赶法编程 计算方法——C语言实现——追赶法求解非线性方程

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

题目:

一般三对角线性方程组的求解用这个方法,三对角线性方程组也称为带状矩阵,这方法基础上还是LU分解法,只是比LU分解法计算方法上简单一些。

使用VS,代码如下:

//使用追赶法求解线性方程组

#include "stdafx.h"

#include#include "math.h"

double **A, *b, *x, *y,**L,**U;

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;

}

L = (double**)malloc(sizeof(double*)*r);//创建一个指针数组,把指针数组的地址赋值给a ,*r是乘以r的意思

for (int i = 0; i < r; i++)

L[i] = (double*)malloc(sizeof(double)*c);//给第二维分配空间

for (int i = 0; i < r; i++) {

for (int j = 0; j < c; j++)

L[i][j] = 0.0;

}

U = (double**)malloc(sizeof(double*)*r);//创建一个指针数组,把指针数组的地址赋值给a ,*r是乘以r的意思

for (int i = 0; i < r; i++)

U[i] = (double*)malloc(sizeof(double)*c);//给第二维分配空间

for (int i = 0; i < r; i++) {

for (int j = 0; j < c; j++)

U[i][j] = 0.0;

}

y = (double*)malloc(sizeof(double)*c);

for (int i = 0; i < c; i++)

{

y[i] = 0.0;

}

return r;

}

void getmatrix(void)//输入矩阵并呈现

{

printf("请按行从左到右依次输入系数矩阵A,不同元素用空格隔开\n");

for (int i = 0; i < RANK; i++)

{

for (int j = 0; j=0; i--)

{

x[i] = (y[i] - A[i][i+1] * x[i + 1]) / U[i][i];

}

for (int i = 0; i

按设计的提示老老实实 输入题目的系数矩阵和常数向量后,得到运行结果:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。