MATLAB中balance函数用法

devtools/2024/9/22 10:46:02/

目录

语法

说明

示例

局限性


        balance函数的功能是对角线缩放以提高特征值准确性。

语法

[T,B] = balance(A)
[S,P,B] = balance(A)
B = balance(A)
B = balance(A,'noperm')

说明

        [T,B] = balance(A) 返回相似变换矩阵 T 以使 B = T\A*T 和 B 具有尽可能接近的、近似相等的行列范数。T 是对角矩阵的置换矩阵,其元素是 2 的整数次幂,可防止引入舍入误差。如果 A 是对称的,则 B == A 和 T 是单位矩阵。

        [S,P,B] = balance(A) 单独返回缩放向量 S 和置换向量 P。变换矩阵 T 和平衡矩阵 B 是使用 T(:,P) = diag(S) 和 B(P,P) = diag(1./S)*A*diag(S) 从 A、S 和 P 求得的。

        B = balance(A) 仅返回平衡矩阵 B。

        B = balance(A,'noperm') 缩放 A,而不会置换其行和列。

示例

此示例说明基本思路。矩阵 A 右上角的元素较大,左下角的元素较小。该矩阵非常不对称。

A = [1  100  10000; .01  1  100; .0001  .01  1]
A =1.0e+04 *0.0001    0.0100    1.00000.0000    0.0001    0.01000.0000    0.0000    0.0001

        平衡处理会生成一个对角矩阵 T(包含是 2 的幂的元素)和一个平衡矩阵 B(比 A 更对称)。

[T,B] = balance(A)
T =1.0e+03 *2.0480         0         00    0.0320         00         0    0.0003
B =1.0000    1.5625    1.22070.6400    1.0000    0.78130.8192    1.2800    1.0000

        要查看特征向量的作用,请先计算 A 的特征向量,如此处的 V 的列所示。

[V,E] = eig(A); V
V =
0.9999        -0.9999            -0.9999          
0.0100         0.0059 + 0.0085i   0.0059 - 0.0085i
0.0001         0.0000 - 0.0001i   0.0000 + 0.0001i

        请注意,所有三个向量的第一个分量都是最大的。这说明 V 的条件不当;实际上 cond(V) 为 8.7766e+003。然后,查看 B 的特征向量。

[V,E] = eig(B); V
V =
0.6933        -0.6993            -0.6993          
0.4437         0.2619 + 0.3825i   0.2619 - 0.3825i
0.5679         0.2376 - 0.4896i   0.2376 + 0.4896i

        现在,特征向量将正常运行,并且 cond(V) 为 1.4421。条件不当数在缩放矩阵中进行了压缩;cond(T) 为 8192。

        本示例较小且并未进行大幅缩放,因此,计算的 A 和 B 的特征值在舍入误差界限内一致;平衡几乎不会对计算结果产生任何影响。

局限性

        平衡可能会破坏某些矩阵的属性;请谨慎使用。如果矩阵含有由于舍入误差产生的小元素,平衡可能对其放大,使其与原矩阵中的其他元素一样有效。

提示

  • 非对称矩阵可包含条件不当的特征值。矩阵中的细微扰动(例如,舍入误差)可导致特征值发生巨大扰动。特征向量矩阵的条件数,

    cond(V) = norm(V)*norm(inv(V))

    其中

    [V,T] = eig(A)

            将矩阵扰动大小与特征值扰动大小相关联。请注意,A 自身的条件数与特征值问题不相关。

            平衡是尝试将任何条件设置错误的特征向量矩阵集中到对角线缩放。平衡处理通常无法将非对称矩阵转换为对称矩阵;它仅尝试使各行的范数等于相应列的范数。

    注意

            MATLAB® 特征值函数 eig(A) 在计算特征值之前自动平衡 A。使用 eig(A,'nobalance') 关闭平衡。


http://www.ppmy.cn/devtools/84858.html

相关文章

数据结构:栈

文章目录 1. 栈的概念和结构2. 栈的顺序存储实现2.1 初始化2.2 入栈2.3 判断栈是否为空2.4 出栈2.5 取栈顶数据2.6 获取栈中有效元素个数2.7 打印栈中的数据2.8 销毁 3. 栈的链式存储实现3.1 初始化3.2 判断栈是否为空3.3 入栈3.4 出栈3.5 取栈顶元素3.6 获取栈中有效元素个数3…

《企业实战分享 · CodeGeeX 初体验》

📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗 🌻 CSDN入驻不久,希望大家多多支持,后续会继续提升文章质量,绝不滥竽充数…

Java面试八股之什么是声明式事务管理,spring怎么实现声明式事务管理?

什么是声明式事务管理,spring怎么实现声明式事务管理? 声明式事务管理是一种编程范式,它允许开发人员通过声明性的配置或注解,而不是硬编码事务处理逻辑,来指定哪些方法或类应该在其上下文中执行事务。这种方法将事务…

Vue学习---vue 防抖处理函数,是处理什么场景

Vue防抖处理函数是用来处理在快速连续操作中,只执行最后一次操作的情况。 例如,在输入框输入时,我们可能希望只在用户完成输入后进行处理,而不是在每次键入时都处理。(n秒后触发一次) 以下是一个简单的Vue防抖处理函数的例子&am…

LeetCode206 反转链表

前言 题目: 206. 反转链表 文档: 代码随想录——反转链表 编程语言: C 解题状态: 有了思路以后没敢尝试 思路 需要注意的是创建指针不会申请额外的内存空间。 代码 方法一: 双指针法/迭代 我的理解是创建了三个指针…

深入理解二叉搜索树:定义、操作及平衡二叉树

引言 二叉搜索树(Binary Search Tree,BST)是一种特殊的二叉树结构,每个节点的左子树节点值小于根节点值,而右子树节点值大于根节点值。二叉搜索树在计算机科学中有着广泛的应用,尤其在动态查找表和优先队列…

关于iphone不能下载三方软件

iPhone 不能下载第三方软件的原因主要是因为苹果公司严格控制其应用生态系统,确保所有应用都通过其官方的 App Store 分发。这有几个主要原因: 安全性:苹果公司希望通过这种方式减少恶意软件的传播,保护用户的隐私和数据安全。所…

使用集成线性 LED 驱动器替代分立 LED 电路设计

在转向灯、刹车灯和尾灯等汽车照明中,LED 电路设计通常采用分立元件,如双极结晶体管 (BJT)。分立元件之所以突出有几个常见原因:它们简单、可靠且便宜。然而,随着 LED 数量和项目要求的增加,重新考虑离散设计可能是值得…