用MATLAB计算常规矩阵函数 eAt sinA

2023-05-16

矩阵指数

计算和比较 A 的指数和 A 的矩阵指数。

A = [1 1 0; 0 0 2; 0 0 -1];
exp(A)
ans = 3×3

    2.7183    2.7183    1.0000
    1.0000    1.0000    7.3891
    1.0000    1.0000    0.3679

expm(A)
ans = 3×3

    2.7183    1.7183    1.0862
         0    1.0000    1.2642
         0         0    0.3679

请注意,两种结果的对角线元素相等,这对于任何三角矩阵都是如此。非对角线元素(包括对角线下方的元素)则不相同。

funm

计算常规矩阵函数

语法

F = funm(A,fun)
F = funm(A,fun,options)
F = funm(A,fun,options,p1,p2,...)
[F,exitflag] = funm(...)
[F,exitflag,output] = funm(...)

说明

F = funm(A,fun) 计算在方阵参数为 A 时用户定义的函数 funF = fun(x,k) 必须接受向量 x 和整数 k,返回大小相同的 x 的向量 f,其中 f(i) 是在 x(i) 条件下计算的函数 fun 的第 k 个导数。fun 表示的函数必须包含具有无限收敛半径的泰勒级数,被视为特殊情况的 fun = @log 除外。

您也可以使用 funm 计算下表中列出的特殊函数在 A 处的值。

函数

计算矩阵 A 处的函数的语法

exp

funm(A, @exp)

log

funm(A, @log)

sin

funm(A, @sin)

cos

funm(A, @cos)

sinh

funm(A, @sinh)

cosh

funm(A, @cosh)

对于方阵根,请改用 sqrtm(A)。对于矩阵指数,expm(A) 和 funm(A, @exp) 哪一个更准确取决于矩阵 A

fun 表示的函数必须包含具有无限收敛半径的泰勒级数。例外是被视为特殊情况的 @log。参数化函数 解释如何在必要情况下向函数 fun 提供其他参数。

F = funm(A,fun,options) 将算法的参数设置为结构体 options 中的值。

下表列出了 options 的字段。

字段

说明

options.Display

显示级别

'off'(默认值)、'on''verbose'

options.TolBlk

阻止 Schur 表的容差

正标量。默认值为 0.1

options.TolTay

计算对角线块的泰勒级数的终止容差

正标量。默认值为 eps

options.MaxTerms

泰勒级数项的最大数目

正整数。默认值为 250

options.MaxSqrt

计算对数时,逆缩放和二乘法中计算的最大平方根数。

正整数。默认值为 100

options.Ord

指定 Schur 表 T 的排序方式。

长度为 length(A) 的向量。options.Ord(i) 是 T(i,i) 所放置到的块的索引。默认值为 []

F = funm(A,fun,options,p1,p2,...) 向函数传递额外的输入 p1,p2,...

[F,exitflag] = funm(...) 返回用于描述 funm 的退出条件的 exitflagexitflag 可以具有下列值:

  • 0 - 算法成功。

  • 1 - 一次或多次泰勒级数计算未收敛,在使用对数的情况下,需要的平方根太多。但是,F 的计算值可能仍然正确。

[F,exitflag,output] = funm(...) 返回包含以下字段的结构体 output

字段

说明

output.terms

一个向量,其中 output.terms(i) 是在计算第 i 个块时所使用的泰勒级数的项数,或者在使用对数的情况下,维度大于 2 的矩阵的平方根数。

output.ind

重新排序的 Schur 因子 T 的 (i,j) 块为 T(output.ind{i}, output.ind{j}) 的元胞数组。

output.ord

传递到 ordschur 时对 Schur 表排序

output.T

重新排序的 Schur 表

如果 Schur 表为对角线,则 output = struct('terms',ones(n,1),'ind',{1:n})

示例

示例 1

以下命令计算 3×3 幻方矩阵的矩阵正弦值。


F=funm(magic(3), @sin)

F =

   -0.3850    1.0191    0.0162
    0.6179    0.2168   -0.1844
    0.4173   -0.5856    0.8185  

示例 2

以下语句


S = funm(X,@sin);
C = funm(X,@cos);  

在舍入误差内生成与下面相同的结果


E = expm(i*X);
C = real(E);
S = imag(E);
  

在任一情况下,结果都满足 S*S+C*C = I,其中 I = eye(size(X))

示例 3

要使用一个对 funm 的调用计算函数 exp(x) + cos(x) 在 A 处的值,请使用


F = funm(A,@fun_expcos)
  

其中 fun_expcos 是以下函数。


function f = fun_expcos(x, k)
% Return kth derivative of exp + cos at X.
        g = mod(ceil(k/2),2);
        if mod(k,2)
           f = exp(x) + sin(x)*(-1)^g;
        else
           f = exp(x) + cos(x)*(-1)^g;
        end	  

 A=\bigl(\begin{smallmatrix} 2&1 & -1\\ 1& 3 &-1 \\ 1& 2& 0 \end{smallmatrix}\bigr)_e{At},_e{A},sin{A}

A=[2 1 -1
    1 3 -1
    1 2 0];
A = sym(A);
syms t;
expm(A.*t)
expm(A)
funm(A, @exp)

 

和答案一样

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用MATLAB计算常规矩阵函数 eAt sinA 的相关文章

  • 将 3d 矩阵重塑为 2d 矩阵

    我有一个 3d 矩阵 n by m by t 在 MATLAB 中表示n by m一段时间内网格中的测量值 我想要一个二维矩阵 其中空间信息消失了 只有n m随着时间的推移测量t剩下 即 n m by t 我怎样才能做到这一点 你需要命令r
  • 这是 `min` 和 `nanmin` 之间的区别; Matlab 中的“max”和“nanmax”?

    Matlab描述nanmin and nanmax像这样 NANMIN最小值 忽略NaNs NANMAX最大值 忽略NaNs 但实际上 min and max ignore NaNs too 那我应该使用哪个 根据我的测试 nanmin a
  • 类方法的自定义代码完成?

    在 MATLAB 中 可以定义代码建议和完成 如标题为 的文档页面中所述 自定义代码建议和完成 https www mathworks com help matlab matlab prog customize code suggestio
  • 如何从绘图处理程序中绘图?

    我有绘图的处理程序或图形的处理程序 例子 h plot 1 0 2 10 xx get h xx DisplayName Annotation 1x1 handle Color 0 0 1 LineStyle LineWidth 0 500
  • 傅里叶变换定理 matlab

    我目前正在尝试理解二维傅里叶位移定理 根据我到目前为止所了解到的情况 图像空间中的平移会导致相位差异 但不会导致频率空间中的幅度差异 我试图用一个小例子来演示这一点 但它只适用于行的移位 而不适用于列的移位 这是一个小演示 我只在这里显示幅
  • Matlab Solve():未给出所有解决方案

    我试图找到两条曲线的交点 syms x y g x 20 exp x 30 3 5 1 sol x sol y solve x 22 3097 2 y 16 2497 2 25 y g x x y Real true 它只提供一种解决方案
  • 单元格的 Fieldnames 函数的等效项

    正如标题所说 只是想知道是否有一个函数可以用作字段名 http www mathworks co uk help matlab ref fieldnames html 但适用于单元格 所以如果我有类似的东西 a imread redsqua
  • 如何在Matlab中将世界坐标转换为像素索引

    我有 512x512x313 体积的 dicom 图像 并且我有一个以世界坐标表示的点 57 7475 63 4184 83 1515 我如何在 Matlab 中获得该世界坐标的相应像素坐标 我不想戳破你的幻想 但你所要求的是不可能的 我能
  • 为什么 MATLAB 本机函数 cov(协方差矩阵计算)使用与我预期不同的除数?

    给定一个 M 维和 N 个样本的数据矩阵数据 例如 data randn N M 我可以计算协方差矩阵 data mu data ones N 1 mean data cov matrix data mu data mu N 如果我使用原生
  • 为什么 MATLAB 在打印大量 (.png) 图形时速度会变慢?

    我正在将大量数字打印为 png 文件 每个图都是数据矩阵中的一列图 我获取 png 文件并将它们串在一起形成动画 我的问题是 前几百张图像打印得很快 但创建每个新图形的时间却迅速增加 从前几百个 png 文件的约 0 2 秒到第 800 个
  • 从 imread 返回的 ndims

    我正在从文件夹中选取图像 尺寸为128 128 为此 我使用以下代码行 FileName PathName uigetfile jpg Select the Cover Image file fullfile PathName FileNa
  • 垂直子图的单一颜色条

    我想让下面的 MATLAB 图有一个沿着两个子图延伸的颜色条 像这样的事情 使用图形编辑器手动完成 Note 这与提出的问题不同here https stackoverflow com questions 39950229 matlab t
  • Matlab 图像数据的 hist 函数

    我是 Matlab 新手 我想制作自己的函数 与 imhist 显示图像数据的直方图 完成相同的工作 但我对此完全是新手 我不知道如何做开发这样的功能 我开始做一些东西 但它非常不完整 function output args myhist
  • MATLAB 编译器与 MATLAB 编码器

    两者有什么区别 据我了解 MATLAB Compiler将MATLAB代码包装成 exe文件 这样就可以在不安装MATLAB的情况下使用它 并且只需要MCR 除此之外 MATLAB Builder NE 还可以用于生成与 Net 框架一起使
  • Matlab:条形图中缺少标签

    使用 Matlab 2012 和 2013 我发现设置XTickLabel on a bar图表最多只能使用 15 个柱 如果条形较多 则标签会丢失 如下所示 绘制 15 个条形图 N 15 x 1 N labels num2str x d
  • 如何将数据传递给 MATLAB oncleanup 函数?

    我有一个编译好的 matlab 程序 可以自动调整机器参数 在调整周期结束时 我需要恢复一些原始设置 有时会发生意外错误 有时用户会发现调整算法未正常工作 因此应终止 使用 control C 如果发生可预测的错误 我可以使用 try ca
  • 如何在 MATLAB 编译的应用程序中运行外部 .m 代码? [复制]

    这个问题在这里已经有答案了 我有一个 MATLAB 项目 我使用 MCC 对其进行编译以获得单个可执行文件 然后我想知道外部程序员是否可以在 exe 中执行他的一些 m 文件 而无需重新编译整个项目 重点是提供一个应用程序 其他开发人员可以
  • 在 MATLAB 中绘图后恢复轴

    从文本文件绘制多种方法的输出后 未显示轴的右侧和上侧 我需要拥有它们并将它们加粗 就像当前的轴一样 绘制的数据来自存储每种方法数据的文件 每个数据文件都是一个 256x2 文件 包含 0 1 之间的值 第一列是精度 第二列是召回率 figu
  • 如何选择面积最大的对象?

    我用过bwconvhull检测图像的某个部分 正如您在图像中看到的那样 有许多具有特定质心的对象 我想做的是检测面积最大的物体 左起第一个大物体 并忽略其他物体 我应该遵循哪种方法 我将非常感谢您的帮助 以下是代码 由于我仍在努力 所以写得
  • 在 Matlab 中保存 Kinect 深度图像?

    通过使用 Kinect 我可以获得深度图像 其中每个深度图像像素存储相机和物体之间的距离 以毫米为单位 现在我想保存它们以便以后使用 最好的推荐是什么 我正在考虑将深度图像保存为图像 jpg png等 然而 该值通常是从50毫米到10000

随机推荐