共轭梯度法求解线性方程组
生活随笔
收集整理的這篇文章主要介紹了
共轭梯度法求解线性方程组
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
function [k,x]=Conjugate_gradient(A,b,x0,esp)
% x0為給定初值向量
% esp為終止誤差
% 輸出參數
% k為迭代次數
% x為線性方程組的解矩陣
%% 共軛梯度法主程序
n=size(A,1); ?% 定義維數
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位技術專家面對面20年技術見證,附贈技術全景圖
%% 參數說明% 采用共軛梯度算法求解線性方程組
% 輸入參數% A為線性方程組系數矩陣
% b為線性方程組值矩陣
% x0為給定初值向量
% esp為終止誤差
% 輸出參數
% k為迭代次數
% x為線性方程組的解矩陣
%% 共軛梯度法主程序
n=size(A,1); % 定義維數
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系數矩陣
% b為線性方程組值矩陣% x0為給定初值向量
% esp為終止誤差
% 輸出參數
% k為迭代次數
% x為線性方程組的解矩陣
%% 共軛梯度法主程序
n=size(A,1); ?% 定義維數
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位技術專家面對面20年技術見證,附贈技術全景圖
總結
以上是生活随笔為你收集整理的共轭梯度法求解线性方程组的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Jetpack 】
- 下一篇: libsvm 训练后,模型参数详解