其中,参数  称为松弛因子,0< <2。当  >1时,上式称为逐次超松弛迭代法;当  =1时,上式为Gauss-Seidel迭代法;当0<  <1时,上式称为低松弛迭代法。

对于松弛因子的选取,应根据如下公式

其中μ=ρ(B)是Jacobi矩阵的最大谱半径。

C语言算法实现如下:

/*****************************

c.txt
4 -2 -4 10
-2 17 10 3
-4 10 9 -7

******************************/

#include<stdio.h>
#include<math.h>
#define M 3
main()
{
    FILE *f;
    double a[M][M],b[M];
    double x[M]={0,0,0};
    double y[M];
    int i,j,k,n=100;
    f=fopen("c.txt","r");
    for(i=0;i<M;i++)
    {
        for(j=0;j<M;j++)
            fscanf(f,"%lf",&a[i][j]);
        fscanf(f,"%lf",&b[i]);
    }
    fclose(f);
    double s,max,eps=0.0001,w=1.46;
    k=1;
    while(k<n)
    {
        max=0;
        for(i=0;i<M;i++)
        {
            s=0;
            for(j=0;j<M;j++)
                if(j!=i)
                    s+=a[i][j]*x[j];
                    /// 下面的部分高斯迭代法的做法。
                    ///用一个数组就行了,没必要加个y[M]数组。
                y[i]=(b[i]-s)/a[i][i];
                y[i]=(1-w)*x[i]+w*y[i];
                if(max<fabs(x[i]-y[i])) max=fabs(x[i]-y[i]);
                x[i]=y[i];
        }
        if(max<eps) break;
        printf("k=%d \n",k);
        for(i=0;i<M;i++)
            printf("x[%d]=%lf  \n",i,x[i]);
        k++;
    }
    if(k==n)
    {
    printf("ERROR!\n");
    return 0;
    }
    printf("k=%d \n",k);
    for(i=0;i<M;i++)
        printf("x[%d]=%lf  \n",i,x[i]);
}
上述代码转载自:https://blog.csdn.net/fenger_c/article/details/78713172

超松弛迭代法(C语言实现)相关推荐

  1. 超松弛迭代法解线性方程组c语言,超松弛迭代法解线性方程组.doc

    PAGE PAGE 2 姓名:___________________________ 设计题目:超松弛迭代法解线性方程组 专业: 摘要 本文是在matlab环境下熟悉的运用计算机编程语言并结合超松弛变 ...

  2. 超松弛迭代法求解二维电磁场有限差分方程(附Matlab代码)

    二维电磁场泊松方程差分格式 由泰勒公式: 以及: 两式做和,截断于项,得到二阶差商: 二维场域内泊松方程为: ​​​​​​​        ​​​​​​​        ​​​​​​​         ...

  3. matlab的超松弛迭代法,基于MATLAB的超松弛迭代法的电位研究

    一.引言 随着计算机技术.实验研究技术的迅速发展,电磁场学科在教研.工程上的应用也在逐步加深.而经典电磁学理论作为电磁技术发展的理论基础,其核心麦克斯韦方程组的重要性不言而喻.因此在工程上求解电磁场的 ...

  4. MATLAB用超松弛迭代法求接地金属槽内的电位分布

    工程电磁场仿真实验-用超松弛法求接地金属槽内电位分布 一.实验目的 1.熟悉利用超松弛法描绘出接地金属槽的电位分布情况: 2.学会使用MATLAB进行数值计算,并绘出相应的图形: 二.实验原理 1.有 ...

  5. 数值分析-超松弛迭代法

    超松弛迭代法 [简介-源自百度百科] D. M. Young于20世纪70年代提出逐次超松弛(Successive Over Relaxation)迭代法,简称SOR方法,是一种经典的迭代算法.它是为 ...

  6. 超松弛迭代法求方法组的解(Python实现)

    数值分析题目 求方程组 {5x1+2x2+x3=−12−x1+4x2+2x3=202x1+−3x2+10x3=2\left\{ \begin{array}{c} 5x_1+2x_2 + x_3 = - ...

  7. 牛顿迭代法c 语言程序,牛顿迭代法 c语言实现

    #include #include double func(double x) //函数 { return x*x*x*x-3*x*x*x+1.5*x*x-4.0; } double func1(do ...

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

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

  9. 超松弛迭代法(SOR)的Python实现

    在Gauss-Seidel迭代法中M=D-L的基础上,我们令M=(1/w)(D-wL),B=I-M的逆A,f=M的逆b,其中w为可选择的松弛因子,要求w>0 于是M的逆=w((D-wL)的逆), ...

最新文章

  1. 通过代码自定义cell(cell的高度不一致)
  2. 生产环境故障处理之nginx缓存权限问题
  3. 音叉晶体振荡器-32.768Hz
  4. mongodb学习篇
  5. HDU5511 : Minimum Cut-Cut
  6. simulink仿真及代码生成技术入门到精通_Simulink仿真零基础入门到精通实用教学教程 自学全套...
  7. CSS3 创建简单的网页动画 – 实现弹跳球动
  8. 全网最好懂的Spring AOP原理
  9. 77种互联网盈利创新模式(7)
  10. c 语言编程文档下载,C语言编程规范
  11. VUE 身份证号验证
  12. 谷歌浏览器如何安装crx插件
  13. 桌面运维成功考证HCIP,我是如何下定决心改变的
  14. SpringMVC使用websocke
  15. 亚马逊网络关联是什么
  16. Django实现adminx后台识别用户身份的内容编辑与显示
  17. 图像卡通化生成(Image Cartoonization):最新最全19篇汇总
  18. 数据结构:八大数据结构分类及图解
  19. Tushare财经数据接口(五)案例——优质基本面的股票池创建
  20. 支付宝 android 指纹支付,指纹支付教程放出!支付宝支持指纹支付!

热门文章

  1. Java用户定义对象的LinkedList
  2. div元素显示隐藏切换,点击空白位置消失
  3. CentOS7 开机自启动脚本 chkconfig方式
  4. 让input标签的range属性显示数值
  5. Github如何更新Fork的仓库
  6. C#LeetCode刷题之#674-最长连续递增序列( Longest Continuous Increasing Subsequence)
  7. ssh框架配置文件流程_通过配置文件和安排增强您的工作流程
  8. sass导入sass_如何使用Sass Mixins和Loops
  9. Java一只青蛙每次跳3米_行测丨青蛙跳5米下滑3米?怎么办!
  10. python 元类 详解_Python 元类详解 __new__、__init__、__call__、__metacalss__