小编hba*_*ega的帖子

如何在OS X上安装MacVim?

我使用的是OS X 10.9.1(Mavericks).

在Mac OS中安装到Gvim或MacVim的系统步骤是什么?如果使用1,2,3,......编写步骤,则很容易理解.

我必须承认我无法理解MacVim页面上提供的所有说明.其他谷歌搜索的网页不澄清.例如

什么是$VIMRUNTIME?我应该为我的操作系统安装什么版本的vim?

现在不知怎的,我已经在我的系统中安装了MacVim(我不相信系统).我可以看到我有一个文件夹/Applications/gvim.app/MacVim.app/.

现在,当我从MacVim打开文本文件时,MacVim已经使用vi-editor编写,但MacVim无法识别它.此外,vi无法识别MacVim中写的任何内容!

我该如何解决这个问题?

macos vim macvim

121
推荐指数
4
解决办法
15万
查看次数

如何消除 Fortran 打印输出中不需要的空格?

这看起来像是一个微不足道的问题,但我无法通过谷歌搜索找到任何答案。我有这个小程序:

Program Test_spacing_print
  Integer:: N
  Real:: A,B

  N=4; A=1.0; B=100.0

  print*,'N =',N

  print*,'A =',A,' B =',B
  print '(2(A3,F8.2,1X))' ,'A =',A,' B =',B
  print 20, A,B
  20 format('A =',F8.2,x,'B =',F8.2)

End Program Test_spacing_print
Run Code Online (Sandbox Code Playgroud)

这给了我输出:

     N =           4
 A =   1.00000000      B =   100.000000
A =    1.00  B   100.00
A =    1.00 B =  100.00
Run Code Online (Sandbox Code Playgroud)

我想去掉=符号后得到的不需要的空格,即我想要的输出应该如下所示(后 1 个空格=):

 N = 4
 A = 1.00000000 B = 100.000000
 A = 1.00 B = 100.00
 A = 1.00 B = …
Run Code Online (Sandbox Code Playgroud)

format fortran fortran90 output

6
推荐指数
1
解决办法
7564
查看次数

fortran 90中矩阵的最大大小避免了分段错误

1)fortran 90代码中NxN矩阵中N的最大值是多少,这样就不会出现分段错误?

例如,当我使用大小为2 ^ 8 x 2 ^ 8的矩阵并将它们用于乘法(使用内在的'matmul'函数)时,我没有任何问题.

但是,当我使用2 ^ 12 x 2 ^ 12矩阵时,我没有发现任何编译错误,但是我在程序中间出现了分段错误.

我是否耗尽了内存分配,或者我的代码中可能存在错误?

我使用了动态分配,我使用64位RedHat OS和64 GB RAM.

2)最大大小也取决于编译器或系统配置?

提前致谢.

[除非真的需要回答,否则请不要让我粘贴.我相信我的问题很笼统.]

fortran matrix fortran90

5
推荐指数
1
解决办法
7395
查看次数

我们真的可以在所有情况下都避免 goto 吗?

Fortran 90 及更高版本强烈建议不要使用goto语句。

但是,我仍然觉得必须在以下两种情况下使用它:

情况 1 -- 指示重新输入输入值,例如

      program reenter   
10    print*,'Enter a positive number'
      read*, n

      if (n < 0) then
      print*,'The number is negative!'
      goto 10
      end if

      print*,'Root of the given number',sqrt(float(n))

      stop
      end program reenter
Run Code Online (Sandbox Code Playgroud)

案例 2 —— 注释程序的一个大的连续部分(相当于/* ... */C 中的)。例如。

       print*,'This is to printed'
       goto 50
       print*,'Blah'
       print*,'Blah Blah'
       print*,'Blah Blah Blah'   
 50    continue
       print*,'Blahs not printed'
Run Code Online (Sandbox Code Playgroud)

goto在 Fortran 90 中的上述两种情况下,如何摆脱 using语句并使用一些替代方案?

fortran goto fortran90

5
推荐指数
1
解决办法
515
查看次数

LAPACK给了我不正确的特征值

我正在使用LAPACK库中的DSYEV和DSYEVD来查找特征值和特征向量(编译语法:gfortran -llapack).但是,我找到-0.44,0.35,0.88了特定矩阵的错误特征值().出了什么问题?

可以很容易地看出矩阵具有零行列式,因此至少一个特征值必须为零.

这是我的代码(希望它不是太大):

    Program Real_Eigenvec
    implicit none

    integer, parameter:: n=3
    integer:: i,j, flag
    real*8:: A(n,n),X(n,n) 
    real*8:: lambda(n)
    real*8, parameter:: p=0.5d0/dsqrt(2.d0), q=1.d0-1.d0/dsqrt(2.d0)


    Print*,'Enter flag: 0 for DSYEV, 1 for DSYEVD'
    Read*, flag


    A= transpose(reshape((/ 0.d0, 1.d0, 0.d0, p, q, p, 0.5d0, 0.0d0, 0.5d0 /), shape(A)))


    print*,'Dimension of the matrix, n=',int(sqrt(float(size(A))))

    Print*,'A matrix in full form:'
    Do i=1,n
      print 100, (A(i,j),j=1,n)
    End Do

    call Eigen(A,lambda,X,n,flag)

    !    Print the eigenvalues and eigenvectors.

    PRINT 200
    DO i  = 1, n
      PRINT …
Run Code Online (Sandbox Code Playgroud)

fortran matrix eigenvalue lapack

5
推荐指数
1
解决办法
1369
查看次数

定义返回数组的函数

我有以下代码:

    Program function_as_an_array
    implicit none
    integer:: i
    integer, parameter:: N=10
    real*8:: x(N),y(N),f(N)

    do i=1,N
      x(i)=float(i)
    end do

    call func(f,N,x)

    open(unit=20, file='test.dat')
    do i=1,N
      y(i)=f(i)
      write(20,*) x(i),y(i) 
    end do
    close(20)
    Stop 
    End Program function_as_an_array


    Subroutine func(f,N,x)
    implicit none
    integer i,N
    real*8:: x(N),f(N) 

    do i=1,N
       f(i)=x(i)**2
    end do

    end Subroutine func
Run Code Online (Sandbox Code Playgroud)

我想让程序确实用于"作为arrray的功能",即我想替换Subroutine funcby function f和得到相同的结果(在主程序中,我希望保持一个声明y=f(x,N)).我怎样才能做到这一点?

谢谢.

arrays fortran function fortran90

4
推荐指数
1
解决办法
307
查看次数

Fortran 修剪或调整在使用两次时不起作用

我正在尝试将trim/adjustl用于以下代码。似乎我得到了X_eq_ 10.0.dat或者X_eq_10.0 .dat作为输出文件的名称,我期望它是X_eq_10.0.dat(没有空格)。有什么补救办法吗?

           Program Test
           double precision:: X
           character (len=10) :: tag
           character (len=100) :: outfile

           X=10.0

           write(tag,'(f10.1)') X
           print*,'tag=',tag

           outfile='X_eq_'//trim(tag)//'.dat'
           print*,'Output file: ',outfile

           outfile='X_eq_'//trim(tag)//trim('.dat')
           print*,'Output file: ',outfile

           outfile='X_eq_'//adjustl(trim(tag))//adjustl(trim('.dat'))
           print*,'Output file: ',outfile

           End Program Test
Run Code Online (Sandbox Code Playgroud)

我曾经gfortran作为编译器使用过。

fortran trim fortran90

4
推荐指数
1
解决办法
495
查看次数

同一条语句中多个变量的相同值分配

有没有一种方法可以为不同的变量分配相同的值,而无需在单个语句中构造数组?

例如,如果我有变量a,b,c,de,我可以分配类似

a=b=c=d=e=10.0 
Run Code Online (Sandbox Code Playgroud)

我知道我可以单行执行:

a=10.0; b=10.0; c=10.0; d=10.0; e=10.0
Run Code Online (Sandbox Code Playgroud)

但这不是我想要的,因为如果以后我想将值10.0更改为其他值,则必须在各处进行更改。

有什么帮助吗?

fortran fortran95

3
推荐指数
1
解决办法
2696
查看次数

离散值的Fortran循环

可能是一个愚蠢的问题,但有没有办法为变量的离散值运行循环?最新版本怎么样?

就像是

for i in 1  5 9 11  31 77 
Run Code Online (Sandbox Code Playgroud)

在Unix shell脚本中使用?

谢谢.

fortran fortran95

2
推荐指数
1
解决办法
1045
查看次数

Fortran:从矩阵中提取列和行并将它们用作乘法的一维数组

假设我有矩阵A并且B都有大小 nxn 。现在我想把A的每一列当作一个列矩阵ColA(i)[i=1,n],把B矩阵的每一行当作一个行矩阵RowB(j)[j=1,n]。

现在我可以使用matmul函数来构造一个新矩阵,称为C其元素是通过将所有可能的 i 和 j 值乘以 ColA 和 RowB 来找到的吗?就像是

do i = 1, n
 do j= 1, n
    C(i,j) = matmul( ColA(i), RowB(j) ) 
 end do
end do
Run Code Online (Sandbox Code Playgroud)

arrays fortran matrix fortran90

2
推荐指数
1
解决办法
3325
查看次数

标签 统计

fortran ×9

fortran90 ×6

matrix ×3

arrays ×2

fortran95 ×2

eigenvalue ×1

format ×1

function ×1

goto ×1

lapack ×1

macos ×1

macvim ×1

output ×1

trim ×1

vim ×1