matlab的共轭梯度法
生活随笔
收集整理的這篇文章主要介紹了
matlab的共轭梯度法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
????????共軛梯度法屬于求解線性方程組的一種迭代法,其計算速度不算很快,但是在一些復雜的問題下,也有比較好的下效果,因為科研需要,根據理論編寫了一下共軛梯度法的程序,特此分享:
1、原理步驟如下:
2、 編程的流程如下:
3、程序如下:
function [x] = CG_solver(A,b,x0,kmax) %使用共軛梯度法求解 A · X = b線性方程組 % A方程組系數矩陣 b系數項 X0是迭代的初值(0向量就可以) kmax最多迭代次數 % wrote by Han JIale in 2022.07.04 xk=x0; %附上初值 r0=b-A*xk; k=0; rk=r0; rk_1=rk; rk_2=rk_1; pk_1=r0;while sqrt(sum(rk.^2))>=10^(-5) && (k<kmax) %停機準則,可以修改k=k+1;rk_2=rk_1;rk_1=rk;pk_2=pk_1;xk_1=xk;if k==1pk_1=r0;elsebetek_2=(rk_1'*rk_1)/(rk_2'*rk_2);pk_1=rk_1+betek_2*pk_2;endalphak_1=(rk_1'*rk_1)/(pk_1'*A*pk_1);xk=xk_1+alphak_1*pk_1;rk=rk-alphak_1*A*pk_1;end x=xk; end?
總結
以上是生活随笔為你收集整理的matlab的共轭梯度法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java comparator排序顺序_
- 下一篇: 【Unity3D插件】PUN 2插件分享