數值計算解線性方程組

2021-10-18 19:44:10 字數 2323 閱讀 2259

高斯消元法

function x=solvegauss(a,b)

n=size(a,1);

x=zeros(n,1);

for j=1:n-1

for i=j+1:n

mul=a(i,j)/a(j,j);

a(i,:)=a(i,:)-mul*a(j,:);

b(i)=b(i)-mul*b(j);

endendfor i=n:-1:1

sum=0;

for j=n:-1:i+1

sum=sum+x(j)*a(i,j);

endx(i)=(b(i)-sum)/a(i,i);

endend

最快梯度下降法

function [x,k]=solveg(a,b,x0,rtol,itermax)

x=x0;

k=0;

r0=b-a*x;

r=r0;

while norm(r,2)>rtol&& k共軛梯度法,這是在最快下降法的基礎上優化的

function [x,k]=solvecg(a,b,x0,rtol,itermax)

k=0;

x=x0;

r1=b-a*x0;

p=r1;

while norm(r1)>rtol && k用tic,toc來表示計算過程所花的時間

tic;

clear;

r=0.02;b=0.3;h=0.3;

nodes=[0 0;b/3 0;2*b/3 0;b 0;

0 h/3;b/3 h/3;2*b/3 h/3;b h/3;

0 2*h/3;b/3 2*h/3;2*b/3 2*h/3;b-r*sin(pi/6) h-r*cos(pi/6);

b h-r;b-r*cos(pi/6) h-r*sin(pi/6);0 h;b/3 h;

b/2 h;b-r h];

elements=[1 2 6 5;2 3 7 6;3 4 8 7;5 6 10 9;6 7 11 10;11 7 12 14;

7 8 13 12;9 10 16 15;10 11 17 16;11 14 18 17];

dbc=[1 600;2 600;3 600;4 600;

12 300;13 300;14 300;18 300];

sysmat=zeros(18,18);rhs=zeros(18,1);

for n=1:size(elements,1)

[elemat,elevec] = evaluate_stat(nodes(elements(n,:),:),gx2dref(2),gw2dref(2));

[sysmat,rhs] = assemble(elemat,elevec,sysmat,rhs,elements(n,:));

end[sysmat,rhs] = assigndbc(sysmat,rhs,dbc);

k=; tic;

t=sysmat\rhs;

k(1)=toc;

tict=solvegauss(sysmat,rhs);

k(2)=toc;

tict=solveg(sysmat,rhs,zeros(size(rhs)),1e-7, 1000);

k(3)=toc;

tict=solvecg(sysmat,rhs,zeros(size(rhs)),1e-7, 1000);

k(4)=toc;

% quadplot(nodes,elements,t)

% shading interp; grid on

% colormap(hot);

% colorbar

toc;

題目後面還有一問就是用構造出來的函式去解方程,把題目給的矩陣用matlab構造出來,然後直接解方程就可以了

s=[10.0, 6.0, 5.1, 5.01, 5.001, 5.00001, 5.0000001, 5.000000001, 5.00000000001];

v=s(1,1)*ones(1,300);

a=-2*ones(1,299);

a1=diag(v);

a2=diag(a,-1);

a3=diag(a,1);

a=a1+a2+a3;

a(1,1)=1;

b=ones(300,1);

tic;

x=solvegauss(a,b);

%x=solvecg(a,b,x0,1e-7,10000)

%x=solveg(a,b,x0,1e-7,10000)

t=toc;

MATLAB解線性方程組

rref 函式 把矩陣換為行最簡形 可以用來解線性方程組,求矩陣的秩,求矩陣行最簡形 每行首元所在的列只有它乙個是1 首元所在的列數。例如 我們知道乙個方程組 a x b 中 a 係數矩陣 和b列向量 a 2 2 2 6 2 1 2 4 3 1 4 4 1 1 1 3 b 16 10 11 12 u...

Eigen解線性方程組

一.矩陣分解 矩陣分解 decomposition,factorization 是將矩陣拆解為數個矩陣的乘積,可分為三角分解 滿秩分解 qr分解 jordan分解和svd 奇異值 分解等,常見的有三種 1 三角分解法 triangular factorization 2 qr 分解法 qr fact...

數值計算 線性方程組求解(0)

本專題將講述以多種方式求解線性方程組,也作為本人在 數值計算與優化 課程中學到知識的總結與具體 實現。主要用到資料為 數值計算方法 第3版 解線性代數組是科學研究與工程計算中經常遇到的問題。此專題討論以下n階線性方程組 a 11x1 a12x2 a 1nxn b1a 21x1 a22x2 a 2nx...