数值分析、数值代数之追赶法
数值分析、数值代数之追赶法
- MATLAB 中,diag 函数用法
- 追赶法推导过程
- 代码运行过程
MATLAB 中,diag 函数用法
在 MATLAB 中,diag 函数用于处理矩阵的对角线元素或创建对角矩阵。以下是其常见的用法:
1.提取矩阵的对角线元素
2.创建对角矩阵
3.提取指定偏移量的对角线元素
4.创建指定偏移量的对角矩阵
追赶法推导过程
参考链接: https://zhuanlan.zhihu.com/p/699939103.
代码运行过程
function [x]=tridiag_chase(A,f)% 追赶法解三对角方程组% 输入: 适用的三对角矩阵A, 右端向量f% 输出: 解,列向量的形式 xn = length(A);% 将三对角提取出来b = diag(A,0); a = diag(A,-1); c = diag(A,1);% 处理一下角标 a是从a_2开始, l从l_2 开始a = cat(1,[0],a); % a = [0, diag(A,-1)]u = zeros(1,n);l = zeros(1,n);u(1) = b(1);for i = 2:1:nl(i) = a(i)/u(i-1);u(i) = b(i)-l(i)*c(i-1);end% Ly = by = zeros(1,n);y(1) = f(1);for i =2:1:ny(i) = f(i)-l(i)*y(i-1);end% Ux= yx = zeros(n,1);x(n) = y(n)/u(n);for i =n-1:-1:1x(i) = (y(i) - c(i)* x(i+1))/u(i);end
end
参数
clc,clear all;
n = 10; % 方程组的阶数 10 100 500 1000
A = diag(2*ones(n,1)) + diag(-1*ones(n-1,1),1) + diag(-1*ones(n-1,1),-1);
f = (1:n)';
t1 = tic;
x1 = tridiag_chase(A,f)
toc(t1);
输出