计算矩阵函数 exp(A)

地球屋里老师 2021-09-06 12:06:47

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

 

...全文
900 回复 打赏 收藏 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
内容概要:本文围绕基于电感电容电流环PI与前馈补偿矩阵构造的跟网型储能变流器,开展dq坐标系下的阻抗理论建模与Simulink仿真对比研究。通过建立储能变流器在dq域的数学模型,设计包含电感电流内环、电容电流中间环和电压外环的多环控制结构,并引入前馈补偿矩阵以提升系统的动态响应能力和稳定性。在此基础上,采用小信号分析法推导系统的输出阻抗模型,构建完整的dq域阻抗理论框架,并利用Simulink平台搭建高保真仿真模型进行频域扫频验证,实现理论建模与仿真结果的精确对比,深入分析控制参数对系统阻抗特性的影响规律,揭示其在抑制并网系统振荡、提升稳定性方面的关键作用,为新能源并网系统的稳定性分析与优化设计提供坚实的理论支撑和技术路径。; 适合人群:具备电力电子、自动控制理论基础,从事新能源发电、储能系统、微电网或电力系统稳定性研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①掌握跟网型储能变流器在dq域的阻抗建模方法;②理解多环控制与前馈补偿对系统阻抗特性的影响机制;③实现理论阻抗模型与Simulink仿真扫频结果的对比验证,支撑并网稳定性分析。; 阅读建议:学习者应结合控制理论与电力电子变换器知识,重点关注数学推导与仿真建模的一致性,建议动手复现Simulink仿真模型并进行参数敏感性分析,以深化对阻抗重塑机理的理解。

219

社区成员

发帖
与我相关
我的任务
社区描述
社区旨在便于Fortran编程语言交流学习,同时讨论数值计算、并行计算相关问题,共同发展fortran生态。
社区管理员
  • 地球屋里老师
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

自愿,自律,自强

试试用AI创作助手写篇文章吧