Re: [問題] FindRoot 找不到後的後續工作
看板Mathematica作者chungyuandye (養花種魚數月亮賞星星)時間12年前 (2012/11/29 23:20)推噓0(0推 0噓 0→)留言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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
Mathematica 近期熱門文章
PTT數位生活區 即時熱門文章