| 10 | 1/1 | 返回列表 |
| 查看: 3365 | 回復(fù): 9 | ||
夜月丨噩夢(mèng)金蟲(chóng) (初入文壇)
|
[求助]
為什么Fortran調(diào)試無(wú)錯(cuò)誤運(yùn)行不出結(jié)果 已有2人參與
|
|
program main parameter n=600 double precision u(0:n),u1(0:n),x0,x1,x,t0,t1,h,dett,lambda,y(0:n) integer i,j x0=0.0d0 x1=6.0d0 t0=0.0d0 lambda=0.3d0 t1=0.5d0 h=0.01d0 dett=0.003d0 x=x0 !do i=0,n,1 !if(i<=250)then !y(i)=1.0 !else ! y(i)=0 !end if ! end do do i=0,n,1 if(x>=1 .and. x<=3) then u(i)=1.0d0 else u(i)=0.0d0 end if x=x+h end do open(1,file="yingfeng.dat" ![]() t=t0+dett x=x0 do while(t<=t1) x=x0+h do j=1,n,1 u1(j)=u(j)-3*lambda*(u(j)-u(j-1)) if(abs(t-0.5)<=0.0001)then write(1,*)x,u1(j),y(j) end if x=x+h end do do j=1,n-1 u(j)=u1(j) u(0)=1 u(1)=0 end do t=t+dett end do stop end 求大神指導(dǎo),為啥這個(gè)程序運(yùn)行后yingfeng.dat文件里面啥數(shù)據(jù)都沒(méi)有 |
木蟲(chóng) (正式寫(xiě)手)

木蟲(chóng) (正式寫(xiě)手)
|
經(jīng)過(guò)測(cè)試,可以生成yingfeng.dat文件的,文件和程序在相同的目錄下,估計(jì)你沒(méi)有運(yùn)行,或運(yùn)行了但是找錯(cuò)了文件夾 發(fā)自小木蟲(chóng)Android客戶(hù)端 |

金蟲(chóng) (初入文壇)
|
你的程序中最重要的部分如下: double precision ...t0,t1,...,dett... t0=0.0d0 t1=0.5d0 dett=0.003d0 ... t=t0+dett do while(t<=t1) ... if(abs(t-0.5)<=0.0001) then write(1,*)x,u1(j),y(j) endif ... 可以看到,這個(gè)程序能否向yingfeng.dat中寫(xiě)入數(shù)據(jù)的關(guān)鍵是:t的數(shù)值相距0.5的差值是否小到0.0001以?xún)?nèi),和其它問(wèn)題完全無(wú)關(guān)。 如果分析我給出的這些語(yǔ)句的話(huà),就會(huì)發(fā)現(xiàn)問(wèn)題所在: t從0.003開(kāi)始累加,要和0.5比???能達(dá)到相差小于0.0001的程度么? 相當(dāng)于500/3,得到的余數(shù)是多少? 條件達(dá)不到,當(dāng)然不會(huì)輸出。程序在邏輯上是沒(méi)錯(cuò)的。 希望樓主能再審視一下相應(yīng)的條件,讓程序輸出你要的結(jié)果。 另外,希望樓主能注意以下幾個(gè)方面: 1 t1和t0都是雙精度,但是t卻沒(méi)有定義。。!按照默認(rèn)的I-N規(guī)則,t是單精度型,可能會(huì)引起誤差,從而引起不必要的麻煩哦。 2 open之后沒(méi)有對(duì)應(yīng)的close語(yǔ)句,這點(diǎn)很不好!很不好!很不好!樓主目前寫(xiě)的是小程序不覺(jué)得,程序一大,很容易搞混的,到時(shí)候想寫(xiě)這個(gè)文件卻寫(xiě)到那個(gè)文件去了,或者想寫(xiě)卻發(fā)現(xiàn)文件沒(méi)打開(kāi)之類(lèi)的。而且這種錯(cuò)誤會(huì)很難調(diào)試。 3 stop語(yǔ)句一般只用在這樣兩個(gè)方面:調(diào)試程序 或 出錯(cuò)后的強(qiáng)行停止。不建議用stop來(lái)結(jié)束程序,讓程序自己運(yùn)行完畢后停止豈不更好? 4 前面有program xxx的話(huà),最后建議用end program xxx結(jié)束。這樣構(gòu)造一個(gè)封閉的block,今后也會(huì)很容易讀代碼,便于維護(hù)管理。 5 樓主的程序使用了默認(rèn)的I-N規(guī)則,建議使用Implicit None,取消默認(rèn)規(guī)則,使每個(gè)變量都要定義類(lèi)型(和C一樣強(qiáng)類(lèi)型)。使用默認(rèn)規(guī)則的話(huà),一旦有什么問(wèn)題都是非常隱蔽極難調(diào)試的。 最后,樓主如果有程序方面的問(wèn)題,歡迎移步“程序語(yǔ)言”版塊提問(wèn)。 |

木蟲(chóng) (正式寫(xiě)手)

金蟲(chóng) (初入文壇)
金蟲(chóng) (初入文壇)
|
dett相當(dāng)于步長(zhǎng),t0+dett是初值,0.0001是閾值。 這些都要根據(jù)你要計(jì)算解決的問(wèn)題來(lái)啊。 程序的關(guān)鍵是解決問(wèn)題,所以要先理解透問(wèn)題和你的需求。 按照t<=t1和abs(t-0.5)<=0.0001來(lái)看,你是希望得到最后一步或幾步的結(jié)果。 那么你希望得到哪一步/幾步?這幾步的步長(zhǎng)是希望大一點(diǎn)粗一點(diǎn),還是小一點(diǎn)精一點(diǎn)? 比如,如果其它條件都不變,只是希望得到最后5步的結(jié)果的話(huà),甚至可以步長(zhǎng)設(shè)為0.00002,這樣最后會(huì)有6步的結(jié)果因符合(abs(t-0.5)<=0.0001)的條件而輸出。 但是你要計(jì)算太多遍了,這樣做是否值得? 如果不需要如此精密的話(huà),是否可以修改閾值為(abs(t-0.5)<=0.1),這樣就可以在少算很多的情況下得到結(jié)果? 這些都是你自己需要去考慮的。 |

金蟲(chóng) (初入文壇)
| 10 | 1/1 | 返回列表 |
| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 332求調(diào)劑 +3 | 鳳凰院丁真 2026-03-20 | 3/150 |
|
|---|---|---|---|---|
|
[考研] 0856材料專(zhuān)碩353求調(diào)劑 +3 | NIFFFfff 2026-03-20 | 3/150 |
|
|
[考研] 085601調(diào)劑 358分 +3 | zzzzggh 2026-03-20 | 4/200 |
|
|
[考研] 一志愿西安交通大學(xué)材料工程專(zhuān)業(yè) 282分求調(diào)劑 +7 | 楓橋ZL 2026-03-18 | 9/450 |
|
|
[考研] 346求調(diào)劑[0856] +4 | WayneLim327 2026-03-16 | 7/350 |
|
|
[考研] 材料 336 求調(diào)劑 +3 | An@. 2026-03-18 | 4/200 |
|
|
[考研] 一志愿武理材料305分求調(diào)劑 +6 | 想上岸的鯉魚(yú) 2026-03-18 | 7/350 |
|
|
[考研] 317求調(diào)劑 +8 | 申子申申 2026-03-19 | 13/650 |
|
|
[考研] 一志愿南昌大學(xué),327分,材料與化工085600 +9 | Ncdx123456 2026-03-19 | 9/450 |
|
|
[考研] 304求調(diào)劑 +7 | 司空. 2026-03-18 | 7/350 |
|
|
[考研] 288求調(diào)劑 +16 | 于海海海海 2026-03-19 | 16/800 |
|
|
[考研] 求調(diào)劑,一志愿:南京航空航天大學(xué)大學(xué) ,080500材料科學(xué)與工程學(xué)碩,總分289分 +4 | @taotao 2026-03-19 | 4/200 |
|
|
[考研] 求調(diào)劑 +3 | @taotao 2026-03-20 | 3/150 |
|
|
[考研] 一志愿南理工085701環(huán)境302求調(diào)劑院校 +3 | 葵梓衛(wèi)隊(duì) 2026-03-20 | 3/150 |
|
|
[考研] 281求調(diào)劑(0805) +14 | 煙汐憶海 2026-03-16 | 25/1250 |
|
|
[考研] 0703化學(xué)336分求調(diào)劑 +6 | zbzihdhd 2026-03-15 | 7/350 |
|
|
[考研] 考研調(diào)劑 +3 | 淇ya_~ 2026-03-17 | 5/250 |
|
|
[考研] 070300化學(xué)學(xué)碩求調(diào)劑 +6 | 太想進(jìn)步了0608 2026-03-16 | 6/300 |
|
|
[考研] 288求調(diào)劑 +4 | 奇點(diǎn)0314 2026-03-14 | 4/200 |
|
|
[考研] 289求調(diào)劑 +4 | 這么名字咋樣 2026-03-14 | 6/300 |
|