共轭梯度法求解线性方程组
生活随笔
收集整理的這篇文章主要介紹了
共轭梯度法求解线性方程组
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
function [k,x]=Conjugate_gradient(A,b,x0,esp)
% x0為給定初值向量
% esp為終止誤差
% 輸出參數(shù)
% k為迭代次數(shù)
% x為線性方程組的解矩陣
%% 共軛梯度法主程序
n=size(A,1); ?% 定義維數(shù)
x=x0;
r=b-A*x; ? ? % 定義初始搜索方向
d=r;
for k=0:n-1
? ? alpha=(r'*r)/(d'*A*d);
? ? x=x+alpha*d;
? ? r1=b-A*x;
? ? if (norm(r1)<=esp | (k==n-1))
? ? ? ? x;
? ? ? ? break;
? ? end?
? ? ? ? beta=norm(r1)^2/norm(r)^2;
? ? ? ? d=r+beta*d;
end 與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖
%% 參數(shù)說明% 采用共軛梯度算法求解線性方程組
% 輸入?yún)?shù)% A為線性方程組系數(shù)矩陣
% b為線性方程組值矩陣
% x0為給定初值向量
% esp為終止誤差
% 輸出參數(shù)
% k為迭代次數(shù)
% x為線性方程組的解矩陣
%% 共軛梯度法主程序
n=size(A,1); % 定義維數(shù)
x=x0;
r=b-A*x; % 定義初始搜索方向
d=r;
for k=0:n-1 ?
alpha=(r'*r)/(d'*A*d); ?
x=x+alpha*d; ?
r1=b-A*x; ?
if (norm(r1)<=esp | (k==n-1)) ?
x; ?
break; ?
end ?
beta=norm(r1)^2/norm(r)^2; ?
d=r+beta*d;
end系數(shù)矩陣
% b為線性方程組值矩陣% x0為給定初值向量
% esp為終止誤差
% 輸出參數(shù)
% k為迭代次數(shù)
% x為線性方程組的解矩陣
%% 共軛梯度法主程序
n=size(A,1); ?% 定義維數(shù)
x=x0;
r=b-A*x; ? ? % 定義初始搜索方向
d=r;
for k=0:n-1
? ? alpha=(r'*r)/(d'*A*d);
? ? x=x+alpha*d;
? ? r1=b-A*x;
? ? if (norm(r1)<=esp | (k==n-1))
? ? ? ? x;
? ? ? ? break;
? ? end?
? ? ? ? beta=norm(r1)^2/norm(r)^2;
? ? ? ? d=r+beta*d;
end 與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖
總結(jié)
以上是生活随笔為你收集整理的共轭梯度法求解线性方程组的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Jetpack 】
- 下一篇: libsvm 训练后,模型参数详解