Re: [問題] ODE解法器的的停止機制已回收
分開寫比較簡單,寫再同一個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
MATLAB 近期熱門文章
PTT數位生活區 即時熱門文章