矩阵求和并在Fortran中添加虚部

时间:2014-03-04 17:51:04

标签: matrix numbers fortran

我有一个简单的问题要问你。我想构建一个在Fortran中计算F矩阵的子程序。你能救我吗?

F =( - (W ^ 2)*(M + A))+(虚部(I)* W * B)+ C

w,M,A,B,C都是已知的。 w是实数。 M,A,B,C是大小为m * m的矩阵。我想将所有B矩阵元素转换为虚数。例如,其元素453将变为453i(复数)。 M,A,C没什么特别的。所以我希望你能帮助我找到这个F矩阵。

亲切的问候。 SalimTamer

! w is frequency
! M is mass matrix, size(m,n)
! a is added-mass matrix, size(m,n)
! b is damping matrix, size(m,n)
! c is restoring matrix, size(m,n)
! X is excitation force divided by wave length, size(m,1)
! m=n =) (or not invertible)

implicit none
integer :: m,n,i,j
real :: w
real(8) :: M(m,n), a(m,n), , c(m,n), X(m),
complex(8) ::b(m,n)
do i=1,m
   do j=1,n
    C(i,j)=-(w^2)*(M(i,j)+a(i,j))(imaginariy*b(i,j)*w)+c(i,j)+c(i,j)
   enddo
enddo

1 个答案:

答案 0 :(得分:1)

Fortran没有特定的虚构类型,但 i 可以表示为(0._kind, 1._kind)

您的代码b虽然复杂,但我认为是真的。有两种可能性

C(i,j)=-(w**22)*(M(i,j)+a(i,j)) + CMPLX(0._8, b(i,j))*w +c(i,j)+c(i,j)
!                               ^^^^^^^^^^^^^^^^^^^

C(i,j)=-(w**22)*(M(i,j)+a(i,j)) + (0._8, 1._8)*b(i,j))*w +c(i,j)+c(i,j)
!                               ^^^^^^^^^^^^^

我已经使用8作为类型,遵循您的代码,但通常您会想要便携式的东西。同样,如果我的真实假设是正确的,你就会知道F的实部和虚部,这样你就可以整理。

但是,您似乎没有计算F,而C本身正在更新,但希望您有这个想法。