算法介绍(迭代法介绍):

代码C语言实现;

# include<stdio.h>
# include<math.h>
# define N 6
/*
*使用雅可比迭代法和高斯-赛德尔迭代法 求解线性方程组
*/
main(){
float NF2(float *x,float *y);
float A[N][N],b[N],sum=0;
float x[N],y[N]={0},x0[N];
int i,j,n=0;
//输入系数矩阵
for(i=0;i<N;i++){
for(j=0;j<N;j++){
scanf("%f",&A[i][j]);
}
}
//输入常数矩阵
for(i=0;i<N;i++){
scanf("%f",&b[i]);
}
//输入解的初值
for(i=0;i<N;i++){
scanf("%f",&x0[i]);
}
//输出系数矩阵
printf("输出该方程组的系数矩阵:\n");
for(i=0;i<N;i++){
for(j=0;j<N;j++){
printf("%3.1f    ",A[i][j]);
}
printf("\n");
}
//输出成数矩阵
printf("输出该方程组的常数矩阵:\n");
for(i=0;i<N;i++){
printf("%3.1f\n",b[i]);
}
//输出解的迭代初值
printf("解该方程组的的迭代初值是:\n");
for(i=0;i<N;i++)
{
printf("%3.1f\n",x0[i]);
}
/*
*利用雅可比迭代法求解线性方程组
*/
for(i=0;i<N;i++)
{
x[i]=x0[i];
}
for(n=0;;n++){
//计算下一个值
for(i=0;i<N;i++){
sum=0;
for(j=0;j<N;j++){
if(j!=i){
sum=sum+A[i][j]*x[j];
}
}
y[i]=(1/A[i][i])*(b[i]-sum);
//sum=0;
}
//判断误差大小
if(NF2(x,y)>0.01){
for(i=0;i<N;i++){
x[i]=y[i];
}
}
else
break;
}
printf("经过%d次雅可比迭代解出方程组的解:\n",n+1);
for(i=0;i<N;i++){
printf("%f      ",y[i]);
}
/*
*利用高斯-赛德尔迭代法求解线性方程组
*/
for(i=0;i<N;i++)
{
x[i]=x0[i];
y[i]=0;
}
for(n=0;;n++){
//计算下一个值
for(i=0;i<N;i++){
sum=0;
for(j=0;j<i;j++){
sum=sum+A[i][j]*y[j];
}
for(j=i+1;j<N;j++){
sum=sum+A[i][j]*x[j];
}
y[i]=(1/A[i][i])*(b[i]-sum);
//sum=0;
}
//判断误差大小
if(NF2(x,y)>0.01){
for(i=0;i<N;i++){
x[i]=y[i];
}
}
else
break;
}
printf("\n经过%d次高斯-赛德尔迭代解出方程组的解:\n",n+1);
for(i=0;i<N;i++){
printf("%f      ",y[i]);
}
}
//求两个向量差的二范数函数
float NF2(float *x,float *y){
int i;
float z,sum1=0;
for(i=0;i<N;i++){
sum1=sum1+pow(y[i]-x[i],2);
}
z=sqrt(sum1);
return z;
}

代码运行输入输出结果;

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

  1. 雅可比(Jacobi)及高斯-塞德尔(Gauss_Seidel)迭代法求解线性方程组的matlab现实

    雅可比迭代法的实现代码: function X=Jacobi(A,B,P,delta,max1) %Input -A is a X*N nosingular matrix % -B is a N*1 ...

  2. 高斯—赛德尔(Gauss - Seidel)迭代法解线性方程组(Matlab程序)

    %---高斯-赛德尔迭代法----- %---Gauss - Seidel iteration method clear;clc; % A=[10,-1,-2;-1,10,-2;-1,-1,5]; % ...

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

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

  4. MATLAB实现雅可比与高斯塞德尔迭代

    概述 用MATLAB编程实现,形成m函数文件.输入A,b矩阵,无返回值,解得x向量直接显示在命令行窗口,同时绘制出x向量的收敛曲线. A = [ 2 − 1 1 1 1 1 1 1 − 2 ] b = ...

  5. 计算方法:列主元消去法,LU分解法, 雅可比迭代法,高斯塞德尔迭代法 解线性方程(C++)

    Matrix.h包括矩阵类Matrix的定义,Matrix.cpp包括该类成员函数的实现,LinearEqu.h包括线性方程类LinearEqu的定义,继承自Matrix类,其中solve()方法为列 ...

  6. [计算机数值分析]高斯-塞德尔迭代公式解线性方程组

    在雅可比迭代公式的基础上,对于收敛的迭代过程,所求出的"新值"常比"老值"更准确些,因此可以用它替代老值作进一步的计算,这样的思想就是著名的高斯-塞德尔迭代公式 ...

  7. 基于高斯塞德尔方法的超松弛迭代法MATLAB实现

    概述 用MATLAB编程实现,形成m函数文件.输入A,b矩阵,与松弛因子 ω \omega ω,无返回值.设置精度要求 ε = 1 0 − 4 \varepsilon=10^{-4} ε=10−4.所 ...

  8. 方程组求解matlab实现(朴素高斯求解、LU分解、雅可比迭代方法、高斯-塞德尔方法、连续过松弛(SOR))

    朴素高斯求解 function x= oridinarygauss(a,b) n=length(b); for j=1:n-1for i=j+1:nmult=a(i,j)/a(j,j);for k=j ...

  9. 高斯-赛德尔(Gauss-Seidel)解线性方程组的Matlab实现

    高斯-赛德尔(Gauss-Seidel)解线性方程组的Matlab实现 代码 运行 手算例题 迭代法解线性方程组的基本思想是构造一串收敛到解的序列,即建立一种从已有近似解计算新的近似解的规则,有不同的 ...

最新文章

  1. android studio插入数据表中没有_学Java能拿高薪吗 Java中常见排序算法有哪些
  2. 搭建Telnet服务器
  3. IMP-00002: 无法打开 D:\orcldat\test_20111024.dmp 进行读取,rman备份
  4. 【优达学城测评】SQLite 安装(2)
  5. 神奇!只用标签名称就可以做文本分类
  6. 固态硬盘linux提升,分析如何提升Linux的固态硬盘使用率?
  7. 在Vista系统中,Flash渲染功能无法使用,咋办?
  8. sqli-labs(29-31)
  9. Spring Data Jpa 复合主键
  10. django实现利用邮箱进行登录
  11. mysql gh ost 对比_GitHub开源MySQL Online DDL工具gh-ost参数解析
  12. 男人和女人是怎样吹牛的
  13. 超市管理系统-2(数据库代码以及数据库逻辑)
  14. 万字长文详解华为方舟编译器的荣光和使命
  15. 太原工业学院计算机实训中心,法学实训实验中心
  16. python画钢铁侠标志_pyecharts绘制复联超级英雄战斗力
  17. Android 解析软件包时出现问题
  18. PHPMyWind教程:增加上传类型
  19. 淘宝618列车/京东618叠蛋糕活动 自动领喵币/金币脚本
  20. SSL数字证书之CA根证书、CA中间证书和SSL证书

热门文章

  1. Gentoo无线网卡安装之broadcom-sta(wl)篇(三)
  2. 视觉能力提升112%!李飞飞团队让AI进入社会,学会了“骗”标注…
  3. 平台接口权益分享源码
  4. Hello World---kodu少儿编程第四天
  5. 【图像超分辨率重建】——RCAN论文精读笔记
  6. 制作帮助文档的好助手- WORD2CHM WORD2HTML
  7. 五一劳动节致全体技术同胞书
  8. SAP-MM科目自动分配解析-(4-1)- 物料的配置影响
  9. 微信支付 postman_支付宝微信刷脸支付系统搭建服务商平台怎么做
  10. 什么是迭代器(Iterator)