1在fsolve迭代:新的x和
11视图(30天)
显示旧的评论
我想用fsolve只使用一个迭代:雅可比矩阵,完成x1和。然而当测试下面的代码,它试图找到0 x ^ 2,我看到下面的:
迭代0 2功能评估:似乎f (x0)和1有限差分
迭代1、2功能评估:似乎f (x1)和1有限差分
我不希望最后两个评估。这是可能的吗?
我的意思是,这一倍计算时间,但它毫无用处。特别是报道的雅可比矩阵的雅可比矩阵x0(不是在x1)。如果它至少会给我雅可比矩阵在x1作为输出,我可以自己计算下一个迭代。
解决方案项目类似的例程,但是我,而用fsolve(例如我还想用JacobPattern)。
清晰的所有;
clc;
fun_res = @ (xx) xx。^ 2;
x0 = 1;
ex_fl = -10;
iter = 0;
而ex_fl < 1 & & iter < 100
iter = iter + 1;
1),% [xx_it (iter res (iter, 1), ex_fl, ~,江淮(iter 1)] = fsolve (x0, fun_res optimoptions (@fsolve,“显示”,“通路”,“MaxIterations”, 1));
[xx_it (iter, 1), ~, ex_fl] = fsolve (x0, fun_res optimoptions (@fsolve,“显示”,“通路”,“MaxIterations”1));
x0 = xx_it (iter);
结束
接受的答案
马特·J
2021年3月9日
编辑:马特·J
2021年3月9日
一种选择是使用fsolve让雅可比矩阵,然后生成x1自己。这使您可以访问权
JacobPattern
和所有其他的雅可比矩阵计算fsolve提供的功能。
为此,取代你的目标函数
f (x)
与
f (x) - f (x0),
在哪里
x0
thte初始点。请注意,这并不改变雅可比矩阵。因为
x0
是一个根的修改目标,
fsolve
将返回
x0
及其雅可比矩阵作为输出0迭代。例子:
有趣= @ (x) x ^ 2/2;
选择= optimoptions (@fsolve,“麦克斯特”1);
x0 =兰德(5、1);
f0 =乐趣(x0);
[x, fval ef,统计,JacobianNumerical] = fsolve (@ (x)乐趣(x) - f0, x0,选项);
JacobianNumerical,
JacobianAnalytical =诊断接头(x0)
同时,它将没有额外的雅可比矩阵的计算,从,
统计数据
答案(1)
马特·J
2021年3月9日
解决方案项目类似的例程,但是我,而用fsolve(例如我还想用JacobPattern)。
你也可以使用现有的常规文件交换,像这一个,
不会这么难适应的日常工作
JacobPattern
。