zoukankan      html  css  js  c++  java
  • 雅可比迭代法

     1 //  如下程序中的for语句未修改前为:for(j=0;j!=i&&j<6;j++) ,输出结果为5次迭代而不是正确的27次,j!=i放在for语句中则会减少迭代次数从而产生误解
     2 #include<iostream>
     3 
     4 #include<cmath>
     5 
     6 using namespace std;
     7 double fanshu(double x[], double y[], int n)
     8 {
     9     double sums = 0;
    10     for(int p = 0; p < n; p++)
    11         sums += (y[p] - x[p]) * (y[p] - x[p]);
    12     return sqrt(sums);
    13 }
    14 void main()
    15 {
    16     double A[6][6] = {4, -1, 0, -1, 0, 0, -1, 4, -1, 0, -1, 0, 0, -1, 4, -1, 0, -1, -1, 0, -1, 4, -1, 0, 0, -1, 0, -1, 4, -1, 0, 0, -1, 0, -1, 4};
    17     double b[6] = {0, 5, -2, 5, -2, 6};
    18     double x[6] = {0, 0, 0, 0, 0, 0}; //设置X初值全为0;
    19     double y[6] = {0, 0, 0, 0, 0, 0};
    20     int N = 50;
    21     int k, i, j, l;
    22     double e;
    23     for(k = 0; k < N; k++)
    24     {
    25         for(i = 0; i < 6; i++)
    26         {
    27             double sum = 0;
    28             for(j = 0; j < 6; j++)
    29                 if(j != i)
    30                 {
    31                     sum += A[i][j] * x[j];
    32                 }
    33             y[i] = (b[i] - sum) / A[i][i];
    34         }
    35         e = fanshu(x, y, 6);
    36         if(e < 0.0001)
    37         {
    38             break;
    39         }
    40         for(l = 0; l < 6; l++)
    41             x[l] = y[l];
    42     }
    43     cout << "迭代次数为:" << k << endl;
    44     cout << "结果为: ";
    45     for(int h = 0; h < 6; h++)
    46         cout << y[h] << " ";
    47     cout << endl;
    48 }
  • 相关阅读:
    自动安装rpm依赖
    goroutine上下文contxt语法
    goroutine 上下文用法
    Template Method 模式
    设计模式2--设计原则
    centos7关机自动进行远程服务器备份
    实用工具使用
    剑指offer python版 滑动窗口的最大值
    剑指offer python版 左旋转字符串
    剑指offer python版 翻转单词顺序
  • 原文地址:https://www.cnblogs.com/allenben/p/3663072.html
Copyright © 2011-2022 走看看