数值分析、数值代数之追赶法

数值分析、数值代数之追赶法

MATLAB 中,diag 函数用法

在 MATLAB 中,diag 函数用于处理矩阵的对角线元素或创建对角矩阵。以下是其常见的用法:

1.提取矩阵的对角线元素

2.创建对角矩阵

3.提取指定偏移量的对角线元素

4.创建指定偏移量的对角矩阵


追赶法推导过程

参考链接: https://zhuanlan.zhihu.com/p/699939103.



代码运行过程

matlab 复制代码
function [x]=tridiag_chase(A,f)
    % 追赶法解三对角方程组
    % 输入:  适用的三对角矩阵A,  右端向量f
    % 输出:  解,列向量的形式 x
   
    n = 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:n
        l(i) = a(i)/u(i-1);
        u(i) = b(i)-l(i)*c(i-1);
    end
    % Ly = b
    y = zeros(1,n);
    y(1) = f(1);
    for i =2:1:n
        y(i) = f(i)-l(i)*y(i-1);
    end
    % Ux= y
    x = zeros(n,1);
    x(n) = y(n)/u(n);
    for i =n-1:-1:1
        x(i) = (y(i) - c(i)* x(i+1))/u(i);
    end
end

参数

matlab 复制代码
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);

输出

相关推荐
golang学习记9 小时前
Zed 新特性:AI 还在跑,电脑可以不睡了
人工智能·vscode·电脑·zed
威嵌神州12 小时前
10.1 寸 RK3588 电子手册加固平板|国产化轻薄加固平板选型解析
电脑
李永奉14 小时前
日常使用的锂电池上,新、旧锂电池的差异分析
单片机·嵌入式硬件·物联网·智能手机·电脑
思维新观察16 小时前
三星 Galaxy Tab S12 系列:大屏 AI 平板,兼顾轻薄与生产力
数据结构·人工智能·电脑
chhttty17 小时前
Stateflow状态机建模:数据
matlab·simulink
Matlab程序猿17 小时前
【MATLAB源码-第459期】基于matlab的D-H模型与阻尼最小二乘逆运动学的六自由度机械臂五次轨迹规划及动力学前馈PD控制仿真。
人工智能·算法·matlab·d-h建模·六自由度串联机械臂
bj_bluewei_tech18 小时前
拯救者开合屏幕就闪屏,是什么问题?
电脑·笔记本电脑
小幂同学20 小时前
Windows电脑怎么录屏?先看全屏、区域和仅录音的区别
电脑·录屏·录屏软件·电脑录屏·录制·区域录屏
wangDer_me1 天前
将mac电脑变成一个虚拟打印机
macos·电脑
摸鱼 特供版1 天前
一款边录边标注的轻量截图录屏工具
windows·学习·电脑·音视频·软件需求