回 帖 发 新 帖 刷新版面

主题:矩阵求逆.i.也会出错?

.i. operation has generated error message from low-level routines
这是程序给出的错误信息。我的程序里确实涉及到了很多个矩阵求逆的问题,

 t1=(.i.(energy-t0.x.t1-t1.x.t0)).x.(transpose(t0**2))

这样表达会出错吗?

回复列表 (共13个回复)

沙发

先看.i.里的表达式有无意义
.i.不能对接近奇异的矩阵求逆

ps:lz的代码风格不好,分行写吧,行数少<>效率高

板凳

看運行時的提示,應該是矩陣奇異。。。

3 楼

矩阵奇异,是不是说矩阵为0了?为0了就不能求逆了?是吧?

4 楼

[quote]矩阵奇异,是不是说矩阵为0了?为0了就不能求逆了?是吧?[/quote]

当然啦!

5 楼

在调试程序过程中发现一个问题,在imsl里,.i.可以用来矩阵求逆。
但是我运行到下面这个语句:
t0=e1-h0
t0=.i.t0

时候让我:
please enter the path for OPERATION_I.F90

怪不得会出错呢。可能系统不识别.i.,还是因为我系统上装了ivf+imsl6.0?
我现在用vf6.6算的,不会受到ivf+imsl6.0的影响吧?因为cvf6.6有自身带的imsl

6 楼

难道要自己编程做逆运算?
论坛上有人这么说:
.ix.不能做广义逆的

7 楼

[quote]在调试程序过程中发现一个问题,在imsl里,.i.可以用来矩阵求逆。
但是我运行到下面这个语句:
t0=e1-h0
t0=.i.t0

时候让我:
please enter the path for OPERATION_I.F90

怪不得会出错呢。可能系统不识别.i.,还是因为我系统上装了ivf+imsl6.0?
我现在用vf6.6算的,不会受到ivf+imsl6.0的影响吧?因为cvf6.6有自身带的imsl[/quote]

重装一遍cvf6.6,不是难事吧?!

8 楼

IMSL的.i*.系列肯定不支持廣義逆。。。

9 楼

[quote][quote]在调试程序过程中发现一个问题,在imsl里,.i.可以用来矩阵求逆。
但是我运行到下面这个语句:
t0=e1-h0
t0=.i.t0

时候让我:
please enter the path for OPERATION_I.F90

怪不得会出错呢。可能系统不识别.i.,还是因为我系统上装了ivf+imsl6.0?
我现在用vf6.6算的,不会受到ivf+imsl6.0的影响吧?因为cvf6.6有自身带的imsl[/quote]

重装一遍cvf6.6,不是难事吧?![/quote]

\重装一遍还是老错误。

做了一个小程序试验了下:

program exammm
use imsl
implicit none
 real h(4,4),h0(4,4)
 real v
 integer i
 v=2.0
 h=0.0
 do i=1,3                !看这里,3,不是4
  if(mod(i,2)==0) then      
        h(i,i-1)=v
    else       
        h(i,i+1)=v        
    end if
 end do
 h0=.i.h
 write(*,*) h0
 end
这个程序会出现同样的问题,说明循环终值有问题。 do i=1,4就通过了。检查程序吧


10 楼

4通过?

我来回复

您尚未登录,请登录后再回复。点此登录或注册