2012年12月11日 星期二

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

作者: chungyuandye (養花種魚數月亮賞星星) 看板: Mathematica
標題: Re: [問題] FindRoot 找不到後的後續工作
時間: Thu Nov 29 23:20:21 2012

※ 引述《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

沒有留言:

張貼留言