Re: [問題] FindRoot 找不到後的後續工作

看板Mathematica作者 (養花種魚數月亮賞星星)時間12年前 (2012/11/29 23:20), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《ntust661 (TOEFL_5!)》之銘言: : 我想說FindRoot動作失敗後,想要取而代之改變動作 : 但是我要如何打出當FindRoot失敗後,我改變我的動作 : EX: : A = 1 ; : s = FindRoot[ x^2 + x + A , {x , 1} ] ; : 以下如果找根失敗,我就要停止動作接下來改 A = 2 , 3, 4 ... : 我要怎麼做這個動作@@ : 我看 F1 他說找根失敗,他依舊會找出奇怪的根,我就不知道判斷的依據在哪 : 有請版友幫忙了ˊˋ f[x_,A_]:=x^2+x+A; NestWhile[(temp=x/.Quiet@FindRoot[f[x,#],{x,1}]; Print@{#,Abs[f[temp,#]]}; If[Abs[f[temp,#]]<10^-5,#,#-1])&,10,UnsameQ,2] 不過有警告訊息不表示說是失敗,大部分都是精確度或是newton method的條件 如果不想要這些睛告訊息,FindRoot改成Quiet@FindRoot。 Mathematica的FindRoot這個指令預設是Newton method,所以要求跟的話 最好的方式就是先Plot,找到一個好個initial。 -- 養花種魚數月亮賞星星 http://chungyuandye.twbbs.org -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.173.135.172
文章代碼(AID): #1GjtqwwC (Mathematica)
文章代碼(AID): #1GjtqwwC (Mathematica)