追赶法求解三对角线性方程组的MATLAB程序
2012-07-16 20:42
651 查看
function [M] = after_method(a,b,c,g,tolerance)
%% 追赶法求解三对角矩阵
% a为三对角矩阵左下对角线上的值
% b为三对角矩阵中间对角线上的值
% c为三对角矩阵右上对角线上的值
% g为方程组右端常数项的值
%%
% M为求解的结果
%%
[m,n] = size(g);
if abs(b(1)) < tolerance
disp('除数为0,停止计算');
return;
else
c(1) = c(1) / b(1);
end
%%
for i = 2:n-1
b(i) = b(i) - a(i-1) * c(i-1);
if abs(b(i)) < tolerance
disp('除数为0,停止计算');
return;
else
c(i) = c(i) / b(i);
end
end
b(n)=b(n)-a(n-1)*c(n-1);
%%
g(1) = g(1) / b(1);
for i = 2:n
g(i) = (g(i) - a(i-1) * g(i-1)) / b(i);
end
%%
M(n) = g(n);
for i=n-1:-1:1
M(i) = g(i) - c(i) * M(i+1);
end
end
%%
%% 追赶法求解三对角矩阵
% a为三对角矩阵左下对角线上的值
% b为三对角矩阵中间对角线上的值
% c为三对角矩阵右上对角线上的值
% g为方程组右端常数项的值
%%
% M为求解的结果
%%
[m,n] = size(g);
if abs(b(1)) < tolerance
disp('除数为0,停止计算');
return;
else
c(1) = c(1) / b(1);
end
%%
for i = 2:n-1
b(i) = b(i) - a(i-1) * c(i-1);
if abs(b(i)) < tolerance
disp('除数为0,停止计算');
return;
else
c(i) = c(i) / b(i);
end
end
b(n)=b(n)-a(n-1)*c(n-1);
%%
g(1) = g(1) / b(1);
for i = 2:n
g(i) = (g(i) - a(i-1) * g(i-1)) / b(i);
end
%%
M(n) = g(n);
for i=n-1:-1:1
M(i) = g(i) - c(i) * M(i+1);
end
end
%%
相关文章推荐
- 数值分析 jacobi迭代法求解线性方程组 MATLAB程序实现
- 数值分析 Gauss-Seidel迭代法求解线性方程组 MATLAB程序实现
- 数值分析 追赶法求解三对角线性方程组 MATLAB实现
- 求解三对角方程组的追赶法(Matlab程序)
- 蚁群算法求解TSP问题的matlab程序
- 雅克比(Jacobi)迭代法解线性方程组(Matlab程序)
- Matlab 求解数独的程序
- 雅可比迭代法解线性方程组(matlab程序)
- 按照高等代数的传统解法编写c++程序实现N(N<256)元的线性方程组的求解
- Matlab实现——严格对角占优三对角方程组求解(高斯赛尔德Gauss-Seidel迭代、超松弛)
- 高斯—赛德尔(Gauss - Seidel)迭代法解线性方程组(Matlab程序)
- Matlab - 线性方程组求解
- 逐次超松弛迭代法解线性方程组(Matlab程序)
- MATLAB线性方程组的迭代求解法
- 追赶法解三对角线性方程组(Matlab)
- 共轭梯度法解线性方程组(Matlab程序)
- 矩阵论基础 3.5 用Matlab求解线性方程组
- matlab 求解线性方程组之范数
- 平方根法和改进的平方根法解线性方程组(Matlab程序)
- 基于matlab的Guass-Seidel(高斯--赛德尔) 迭代法求解线性方程组