雅可比迭代法——高赛迭代法
求解线性方程组的解
(1)雅可比迭代法
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
const int maxn=1000;
const double e=0.5*1e-5;
int n;
double a[maxn][maxn];
double x[maxn],y[maxn];
double flag;
//雅可比
void show()
{cout<<endl;for(int i=0;i<n;i++){printf("%lf ",y[i]);}cout<<endl;return;
}void die_dai(int cur)
{//迭代//迭代的终止条件double tmp=0;for(int i=0;i<n;i++){double sum=a[i][n];for(int j=0;j<n;j++){if(i!=j){sum-=a[i][j]*x[j];}}//cout<<sum<<" "<<endl;y[i]=sum/a[i][i];tmp=max(tmp,fabs(y[i]));}for(int i=0;i<n;i++)x[i]=y[i];if(fabs(tmp-flag)>e){show();flag=tmp;die_dai(cur+1);// show();}else{cout<<endl<<cur;show();return ;}
}int main()
{cin>>n;for(int i=0;i<n;i++)for(int j=0;j<=n;j++)cin>>a[i][j];//初始x带入for(int i=0;i<n;i++)x[i]=0;//flag=0;//无穷范数die_dai(1);return 0;
}
/*
3
10 -1 -2 7.2
-1 10 -2 8.3
-1 -1 5 4.2*/
(2)高斯赛德尔
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
const int maxn=1000;
const double e=0.5*1e-5;
int n;
double a[maxn][maxn];
double x[maxn];
double flag;
//高赛
void show()
{cout<<endl;for(int i=0;i<n;i++){printf("%lf ",x[i]);}cout<<endl;return;
}void die_dai(int cur)
{//迭代//迭代的终止条件double tmp=0;for(int i=0;i<n;i++){double sum=a[i][n];for(int j=0;j<n;j++){if(i!=j){sum-=a[i][j]*x[j];}}//cout<<sum<<" "<<endl;x[i]=sum/a[i][i];tmp=max(tmp,fabs(x[i]));}if(fabs(tmp-flag)>e){show();flag=tmp;die_dai(cur+1);// show();}else{cout<<endl<<cur;show();return ;}}
int main()
{cin>>n;for(int i=0;i<n;i++)for(int j=0;j<=n;j++)cin>>a[i][j];//初始x带入for(int i=0;i<n;i++)x[i]=0;//flag=0;//无穷范数die_dai(1);return 0;
}
/*3
1 6 -2 1
2 -2 5 2
4 1 -1 3
3
10 -1 -2 7.2
-1 10 -2 8.3
-1 -1 5 4.2
*/
雅可比迭代法——高赛迭代法相关推荐
- 如何利用MATLAB求解线型方程组--雅可比迭代法、高斯赛德尔迭代法
文章目录 前言 1 直接法 2 迭代法 小结 前言 今天我们要说的就是数值微积分,赶紧看看他和高等数学中的微积分有什么区别吧.本文是科学计算与MATLAB语言专题六第2小节的学习笔记,如果大家有时间的 ...
- 雅可比(Jacobi)迭代法解线性方程组的Matlab实现
雅可比(Jacobi)迭代法解线性方程组的Matlab实现 代码 运行 代码 迭代法解线性方程组的基本思想是构造一串收敛到解的序列,即建立一种从已有近似解计算新的近似解的规则,有不同的计算规则得到不同 ...
- 二分法+牛顿迭代法+简化牛顿迭代法+牛顿下山法解方程的近似值
1.二分法 //求方程 2*x*x*x-4*x*x+3*x-6 的根 /* 二分法*/ #include<stdio.h> #include<math.h> #define E ...
- 数值分析线性方程组迭代法之SOR迭代法详解及其C语言算法实现
SOR迭代法,又名逐次超松弛迭代法,与Jacobi迭代法和Guass-Seidel迭代法相比,收敛速度更快其原理如下(想详细了解,可以点击这里数值分析(东北大学)): 1.构造迭代式时,要加上一个大于 ...
- 牛顿迭代法python_python 牛顿迭代法
使用牛顿迭代法求方程 在x附近的一个实根. 赋值X,即迭代初值:用初值x代入方程中计算此时的f(x)=(a * x * x * x + b * x * x + c * x + d)和f'(x)=(3 ...
- matlab 高斯迭代法求解,高斯迭代法matlab算例
Matlab 线性方程组的迭代解法 Gauss-Seidel 迭代法 Matlab 线性方程组的迭代解法 Gauss-Seidel 迭代法实验报告 1.熟悉 Gauss-Seidel 迭代法,并编写 ...
- matlab用雅可比迭代法,如何利用MATLAB求解线型方程组--雅可比迭代法、高斯赛德尔迭代法...
文章目录 前言 1 直接法 2 迭代法 小结 前言 今天我们要说的就是数值微积分,赶紧看看他和高等数学中的微积分有什么区别吧.本文是科学计算与MATLAB语言专题六第2小节的学习笔记,如果大家有时间的 ...
- matlab用雅可比(Jacobi)迭代法求解方程组
function x=myjacob(A,b,x0) myeps=0.0001; n=length(b); err0=1; while err0>myepsx1=zeros(n,1);for i ...
- 迭代法解方程:牛顿迭代法、Jacobi迭代法
牛顿迭代公式 设已知方程f(x)=0的近似根x0 ,则在x0附近f(x)可用一阶泰勒多项式 近似代替.因此, 方程f(x)=0可近似地表示为p(x)=0.用x1表示p(x)=0的根,它与f(x)=0的 ...
最新文章
- linux mysql 5.7.12_Linux环境mysql5.7.12安装教程
- php 接口测压,PHP API接口测试小工具
- android 列表倒计时,Android利用RecyclerView实现列表倒计时效果
- JavaScript id_好程序员web前端分享Javascript中函数作为对象
- Bash on Windows 抢鲜测试 -- 介绍及安装
- Asp.net--DropDownList控件绑定数据库数据
- java中有关文件流的操作
- vector,list deque三种容器对比
- 转载:jillzhang的文章索引 包括(Nhiberate,WCF,WPF,项目管理等内容)
- 5 python 页面说明_Python爬虫爬取网易云的音乐
- LayaAir Sprite 容器添加子节点
- linux网络子系统分析(三)—— 设备无关层
- 20200709每日一句
- ucinet三天写论文!QAP分析实战
- Windows环境搭建Red5流媒体服务器
- 2021-10-12 CHIP类PCB封装的创建
- 肖飒:币圈新“口袋罪”?
- 项目管理心得体会(一)
- Postman~做接口测试
- 谷歌浏览器密码导入导出