计算矩阵函数 exp(A)

module m
contains
!****************************************************************************
! 计算矩阵函数 exp(A)
! author: LI xingwang, Chang''an university, China.
! email : lixingwang@chd.edu.cn
!****************************************************************************
subroutine matrixFunExp(a, res, eps)
implicit none
real, intent(in):: a(:,:)
real,intent(inout):: res(:,:)
real,optional, intent(in):: eps
real, allocatable:: b(:,:)
real e, c
integer k
e = merge(eps,1.0e-7,present(eps))
allocate(b,source=a)
res = a + reshape([1,0,0,0,1,0,0,0,1],shape(a))
k = 1; c = 1.0
do
k = k + 1
c = c / k
b = matmul(b,a)
res = res + c*b
if(all(abs(c*b)<e)) exit
end do
end subroutine
end module
program test
use m
implicit none
real a(3,3), b(3,3), t
integer i
t = 0.5
a = reshape([-1,1,-4,0,2,0,1,0,3],shape(a))
call matrixFunExp(a*t, b) !计算 exp(A*t)
print*,'数值解'
do i = 1, size(b,1)
print*,b(i,:)
end do
print*,'解析解'
a(:,1) =[exp(t)-2*t*exp(t),-exp(2*t)+exp(t)+2*t*exp(t),-4*t*exp(t)]
a(:,2) =[0.0,exp(2*t),0.0]
a(:,3) =[t*exp(t),exp(2*t)-exp(t)-t*exp(t),2*t*exp(t)+exp(t)]
do i = 1, size(b,1)
print*,a(i,:)
end do
print*,'误差'
do i = 1, size(b,1)
print*,a(i,:)-b(i,:)
end do
pause
end

...全文
相关推荐
矩阵理论指数函数的计算
矩阵指数函数用数学符号表达为exp(A),其中A是一个给定的矩阵。当A是n×n维的时,exp(A)也同样是n×n维的。
大模型面试题3:如何计算exp(A) ,其中A为一个矩阵。
矩阵类型推荐方法核心优势乘几次就变全零(幂零矩阵)直接级数求和不用算无限项,一步到位能变成对角矩阵(大部分矩阵)相似对角化步骤清晰,手动算可行高阶矩阵(3阶以上)数值方法(软件算)高效精确,不用手动计算。
方阵的函数: fA=fsm(fx,A): 给定: f(x)= x 的函数,A= 方阵。 求:f(A)=这个矩阵A的函数。-matlab开发
标题提到的“fA=fsm(fx,A)”是一个概念,它表示将一个作用在标量上的函数f(x)扩展到作用在矩阵A上,从而得到新的矩阵f(A)。这种扩展对于数值计算和科学建模具有重要意义。
MATLAB 刘卫国实验答案
函数定义MATLAB 允许用户定义自己的函数,例如,实验一(3)中定义了匿名函数 `z3=(exp(0.3*a)-exp(-0.3*a))/2.
exp2_matlab_
在本项目"exp2_matlab_"中,我们将重点探讨MATLAB中的向量、矩阵、数组的创建与操作,以及基本的数学函数和字符串处理。1.


