Re: [問題] ODE解法器的的停止機制已回收

看板MATLAB作者 (ggyy￾NN N )時間16年前 (2008/09/04 11:19), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串1/1
分開寫比較簡單,寫再同一個mfile還要在其他的function用法 以下三個程式可以作一個停止ode的簡單示範 主程式: $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ clear clc x0=10; tspan=[0 20]; options=odeset('events','evntfcn'); [t,y]=ode45(@testode ,tspan , x0 , options ); $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ 副程式 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ function [ value , isterminal , direction ] = evntfcn( t , x ) value = x - 1; %讓state到1的時候停止 isterminal = 1; direction = 0; $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ 副程式 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ function dx = testode( t , x ) dx = -x; $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ※ 引述《eric19861025 (log(樓))》之銘言: : ※ 引述《eric19861025 (log(樓))》之銘言: : ODE解法器 : 可以設定我們要解的時間範圍 : 但如果我今天停止解法器的機制是 : "位置"呢? : 譬如說當particle跑到某個位置時我就要停止 : 所以理論上我根本不知道實際會花的時間 : 那麼在這種狀況下我該怎麼寫出停止機制融入 : ODE45(或者其他相同語法之解法器)當中呢? : 感謝回答的熱心大大^^ : Events - Locate events [ function ] : To detect events, set this property to the event function. : 他只有如下的介紹 : 阿還有我的matlab是6.5版的 : 我查了一本matlab 7 和官網上的資料 : http://www.mathworks.com/access/helpdesk/help/techdoc/index.html?/access/helpdesk/help/techdoc/math/f1-662913.html&http://www.mathworks.com/cgi-bin/texis/webinator/search_spt?db=MSS&prox=page&rorder=750&rprox=750&rdfreq=500&rwfreq=500&rlead=250&sufs=0&order=r&is_summary_on=1&pr=SPT&cq=1&collection=1&ResultCount=10&query=ODE&x=0&y=0 : 兩邊對於event的寫法還不大一樣 : 不過大致上都有 : [value, isterminal, direction] =........ : 這樣的指令 : 官網資料是把event這個涵式和ode45所要處理的涵式分開 : 而書上則是合在一起 : 不過分開的方式我的主程式好像只能讀到ODE的子函式 : 不能讀到event子函式 : 這些是否跟版本有關係呢? : 還有個小問題 : 我在同一個檔案視窗內為什麼不能寫入兩個以上的function : 我看很多matlab程式都這樣寫 : 這部份不知問題出在哪~~~~~~~~~~~~ : 以上,有點混亂了XD : 不知 "gbl" 熱心人士有這樣的經驗跟解決方法嗎? : 謝謝^^ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.64.0.78

09/15 23:01, , 1F
恩謝謝你^^
09/15 23:01, 1F
文章代碼(AID): #18lrEggj (MATLAB)
文章代碼(AID): #18lrEggj (MATLAB)