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

题目:

和直接法不同,迭代法是一种逐次逼近的方法,将复杂问题简单化,求比较大的方程组时一般都不会用直接法。迭代法有好几种,这里使用了Jacobi迭代与Gausse_Seidel迭代法。

使用VS2017,代码如下:

//使用Jacobi迭代法与Gausse_Seidel迭代法计算线性方程组

#include "stdafx.h"

#include#include "math.h"

//根据用户输入的行列数,生成二维矩阵A L U D 向量 b x y ,并全部初始化为0

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

double calculate_e = 0.0001;//默认精度为10^-4

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;

}

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

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

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

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

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

D[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; jget_add)? fabs(x[i] - y[i]): get_add;

}

if (fabs(get_add) <= calculate_e)

{

printf ("迭代次数为:%d",k + 1);

break;

}

if (k == 99)//失效

{

return false;

}

}

for (int i = 0; i < RANK; i++) //交换xy

{

double temp;

temp = x[i];

x[i] = y[i];

y[i] = temp;

}

printf("求解x,解得:\n");

for (int i = 0; iget_add) ? (x[i] - y[i]) : get_add;

}

if (fabs(get_add) <= calculate_e)

{

printf("迭代次数为:%d", k + 1);

break;

}

if (k == 99)//失效

{

return false;

}

}

printf("求解x,解得:\n");

for (int i = 0; i

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

可以看到,通过不断迭代可以达到非常高的精度。

c语言如何计算出迭代次数,计算方法——C语言实现——迭代法求解线性方程组...相关推荐

  1. 数值计算方法(六)——迭代法求解线性方程组

    雅克比迭代公式 公式: 代码实现: 双重循环实现迭代过程 /***@name Jacobi_iteration:雅克比迭代方法求解向量*@param1 x:初始解向量x*@param2 x1:迭代结果 ...

  2. 【计算方法】雅克比迭代法-高斯赛德尔迭代法求解线性方程组(c语言实现)

    计算方法–用雅克比迭代法和高斯赛德尔迭代法求解线性方程组 AX = b 雅克比迭代法的数学基础 x = Gx + b x = (A ^ -1) b A = L + D + U(L是一个下三角阵,他的对 ...

  3. 分别用雅可比(Jacobi)迭代法和高斯—塞德尔(Gauss—Seidel)迭代法求解线性方程组(转载)

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/yyywww666/article/details/42805071 算法介绍(迭代法介绍): 代码C ...

  4. 分别用雅可比(Jacobi)迭代法和高斯—塞德尔(Gauss—Seidel)迭代法求解线性方程组

    算法介绍(迭代法介绍): 代码C语言实现; # include<stdio.h> # include<math.h> # define N 6 /* *使用雅可比迭代法和高斯- ...

  5. 学会c语言开发出很多,学会了C语言可以开发出很多东西吗?

    C语言相比其他高级语言,就像内功和剑法一样.只会C语言可能并不能写出一个看起来就很厉害的程序,但C语言是你学好其他一切语言的基础.有了C语言的底子,再学别的语言就很容易上手了. 你能想到的,C语言都能 ...

  6. C语言编程计算差商表,计算方法C语言编程计算方法C语言编程.doc

    计算方法C语言编程第二章2已知方程在区间[1,2]内有一根,试问用二分法求根,使其具有5位有效数字至少应二分多少次?[程序设计]#includemain(){int n=0; float x1=1.0 ...

  7. c语言找出成绩的最大,C语言 求每个学生、每门课的平均成绩并找出最大值

    C语言 求每个学生.每门课的平均成绩并找出最大值 for(i=0;i { y=0; for(j=0;j { y=y+a[j][i]; } c[i]=y/3; printf("第%d门课的平均 ...

  8. c语言寄出知识txt,三级C语言.txt

    三级C语言.txt 玛丽莲梦兔 987次浏览 2020年08月02日 08:13 最佳经验 本文由作者推荐 喊口令技巧-日晷怎么读常量: 整型: 100 25 -3 0 长整型: 65000 25 1 ...

  9. c语言调试出错误怎么改,C语言调试常见错误及修改方法(附习题)

    <C语言调试常见错误及修改方法(附习题)>由会员分享,可在线阅读,更多相关<C语言调试常见错误及修改方法(附习题)(12页珍藏版)>请在人人文库网上搜索. 1.1.调试C程序时 ...

最新文章

  1. 怎么帮java转换成类图_有把java代码直接转成uml类图的工具吗 – 手机爱问
  2. CCR源码分析-CCR架构
  3. .NET Core很酷,你不得不知
  4. 如何让MFC程序关闭按钮失效,也无法右击任务栏关闭窗口来关闭?
  5. 平行空间怎么设置32位_高低床怎么设置不占空间
  6. linux at模块,使用kgdb调试linux内核及内核模块
  7. 纵观 30 年 5000 多部国产电视剧,豆瓣评分最低的演员原来是……
  8. No portmap or rpcbind service is running on this host
  9. static在实例Extends、Overload中理解
  10. bp神经网络模型的优缺点,bp神经网络缺点及克服
  11. 中台战略:企业数字化转型利器
  12. 渝粤题库 陕西师范大学 《中国古代文学(四)》作业
  13. 关于no ‘read’ permission
  14. Tiled2Unity报错处理办法
  15. Annotation 介绍
  16. 计算机开机界面图片怎么修改,怎么修改Win7开机登录界面壁纸 Win7开机登录界面壁纸修改图文教程...
  17. QMI8658 - 姿态传感器学习笔记 - Ⅰ
  18. 计算机的击键方法教学教案,初中七年级信息技术上册教案:键盘操作与练习
  19. BeautifulSoup类的使用-爬取电影票房排行
  20. 让数据使用自由而安全,安华金和“三驾马车”驱动数据安全治理

热门文章

  1. 我的linux系统怎么输入pv,如何在Linux系统中使用pv命令
  2. python机器学习实战一:入门
  3. Canal源码分析deployer模块
  4. 完全免费一级域名强注册地址 免费二级域名注册地址
  5. Q版本 安卓手机录制系统声音
  6. 使用时间序列分解模型预测商品销量
  7. 网络摄像头RTSP直播方案(三)
  8. NumPy 学习 第三篇:矢量化和广播
  9. 谷歌今年在中国新招200人 应届毕业生占50%
  10. Android 获取手机存储空间