该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
我想写一个自定义函数(比如f(x)),然后用FindRoot来求这个函数的零点,但是我想不到如何实现我想要的效果。具体如下。
第一个问题。我想要让FindRoot在每一步迭代都print出目前的x和目前函数f(x)的值,这样我能清晰地看出寻根的进程究竟如何,不然的话我只能一直等待漫长的求解过程而且还不知道是不是求解遇到了什么困难。
我看到FindRoot有个选项EvaluationMonitor有类似的效果,但这个选项只能在方程求解完毕后才输出x的变化,所以应该满足不了我的需求。
同样的问题放在Matlab上,就很容易解决。只需要写一个函数文件,在这个函数文件内部加上display(x)和display(f(x))就可以了。但是我不清楚MMA如何实现这个功能。因为MMA给我的印象一直都是函数式编程,我不太清楚在MMA中如何写出灵活的程序实现我的需求。
第二个问题。我先贴上我的代码:
Clear["Global`*"];
Clear[Derivative];
$MaxPrecision=Infinity;
$MinPrecision=25;
$Assumptions=L>0&&L<1;
\[Alpha]=1`25;
J[L_]:={ {0,-L-I Sqrt[1-L^2],0},{I/2,-\[Alpha],-(I/2)},{0,-L+I Sqrt[1-L^2],0}};
zStar[L_]:=I L-Sqrt[1-L^2];
zbarStar[L_]:=-I L-Sqrt[1-L^2];
T[L_]:=Mo