看板 Fortran 關於我們 聯絡資訊
副程式的部分是課本上的 應該不會有錯 現在就是在煩惱怎麼寫出主程式~ ~ 需要求20*20矩陣的反矩陣 所以我想先用2*2來跑看看 可以執行但是一直觸發中斷點 應該是我主程式寫錯的關係 有人可以幫看一下主程式哪裡有問題嗎ˊ ˋ" implicit none real a(2,2),kk(2,2) data a/1,3,2,4/ call inver(a,kk) write(*,*)kk pause end subroutine inver(n,ss) real*8 ss,d,tt integer n,i,j,k dimension ss(n,n) do i=1,n d=1.d0/ss(i,i) tt=-d do j=1,n ss(i,j)=ss(i,j)*tt end do do k=1,i-1 tt=ss(k,i) do j=1,i-1 ss(k,j)=ss(k,j)+tt*ss(i,j) end do do j=i+1,n ss(k,j)=ss(k,j)+tt*ss(i,j) end do ss(k,i)=tt*d end do do k=i+1,n tt=ss(k,i) do j=1,i-1 ss(k,j)=ss(k,j)+tt*ss(i,j) end do do j=i+1,n ss(k,j)=ss(k,j)+tt*ss(i,j) end do ss(k,i)=tt*d end do ss(i,i)=d end do end -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.252.47.251
joelife: http://ppt.cc/hopv 這是跳出錯誤的圖 05/20 20:29
Cypresslin:call inver那有問題,請看看副程式,看看要傳入副程式 05/20 22:15
Cypresslin:的是什麼,然後副程式又會傳什麼回來 05/20 22:15
joelife:副程式 SS是矩陣 所以主程式用KK矩陣過去應該沒問題阿.. 05/20 22:22
joelife:但是N的部分應該是指N*N個矩陣 我把主程式的a改成2也是錯 05/20 22:23
joelife:傳回來的應該是SS(i,i) <-反矩陣 (抱歉 還是不太懂ˊ ˋ" 05/20 22:24
terryys:錯誤是說你呼叫副程式的時候用了錯誤的資料形態 05/20 22:49
terryys:所以你就要看看哪一個參數的資料形態錯了 05/20 22:50
terryys:那個錯誤連它需要的和你嘗試傳入的資料形態都寫出來了 05/20 22:51
terryys:應該很容易發現錯在哪裡 05/20 22:51
Cypresslin:你已經很接近讓他可以正常執行的這一步囉~你想想看要 05/20 22:56
Cypresslin:讓副程式算的值要怎麼送進去 05/20 22:57
joelife:2傳到副程式 變成2*2矩陣應該沒錯 KK的部分我實在想不透 05/20 23:02
joelife:要用哪種型態傳到副程式.. 05/20 23:02
terryys:你有傳2到副程式嗎? 05/20 23:07
把呼叫副程式改成 call inver(2,kk) 應該就會把2傳到 subroutine inver(n,ss) 的n吧..
Cypresslin:那換個說法,你說副程式會丟回inv完的陣列ss,那他在運 05/20 23:09
Cypresslin:算時是用什麼值來算呢?又,這些用於運算的值要怎麼來? 05/20 23:09
我把主程式改成 implicit none real kk(2,2) data kk/1,3,2,4/ call inver(2,kk) write(*,*)kk pause end 宣告丟過去的kk是矩陣 資料是 1 3 2 4 還是錯在主程式的第四排 call過去的資料.. ※ 編輯: joelife 來自: 111.252.47.251 (05/20 23:20)
terryys:你有重新編譯嗎?我抄你的程式做你說的修改結果可以運行 05/20 23:43
terryys:但是輸出數值不對 05/20 23:44
有.. 我是ftn95 但是執行之後依然跳出錯誤 http://ppt.cc/ahtR <- 執行畫面.. ※ 編輯: joelife 來自: 111.252.47.251 (05/20 23:50)
gilocustom:錯誤訊息說很清楚是精度不符。 05/21 01:19
gilocustom:還有例圖麻煩大點,這樣看起來有些吃力= = 05/21 01:20
terryys:問題已經解決,謝謝大家幫忙(咦怎麼怪怪的XD) 05/21 10:33
真的已經解決了 感謝大家的幫忙Q_Q 晚點挑戰20*20矩陣 還要CALL TIME ˋ(′_‵||)ˊ ※ 編輯: joelife 來自: 111.252.43.122 (05/21 11:38)
zx212012:如何用imsl直接求反矩陣?? 05/25 15:00
charlesdc:樓上是認真回文嘛!? 05/25 18:48
joelife:就use IMSL 直接.ix.吧 05/26 20:35