使用fsolve没有找到解决方案,我该怎么办?

4视图(30天)
我试图解决非线性系统有六个方程和六个未知数(基本上是试图找到一个映射的不动点 )。
我写了下面的小实验:
tempx = 1;
p0 = 0.5 * (1,6);
fsub = @ (p) ComputeCCP (tempx p);
[trueccp阵线,ext] = fsolve (fsub p0);
需要很长时间运行这段代码,最后,它返回“没有发现解决方案”。这些函数融入到fsolve叫做fsub, p的函数。它是使用一个函数构造称为ComputeCCP当其第一个参数tempx固定在1。我附加ComputeCCP这个问题。评估是缓慢的,因为我使用了100万模拟在这个函数来计算二重积分(给出概率)和高精度。
为什么fsolve并不在这里工作?我找到一个解决这个系统吗?提前谢谢!

接受的答案

约翰D 'Errico
约翰D 'Errico 2022年11月3日
编辑:约翰D 'Errico 2022年11月3日
一个简单的规则是fsolve假设函数你喂它表现好。这意味着诸如连续性。可微的。至少,这意味着如果你评价函数在连续两次相同的值,它将产生相同的结果。
格式长g
fsub (5 * 1 (1,6))
ans =
1到3
0.096333 0.302968 0.30198
4到6
0.10278 0.319573 0.318503
fsub (5 * 1 (1,6))
ans =
1到3
0.096683 0.30191 0.301975
4到6
0.102587 0.319008 0.318855
你看到什么有趣的东西吗?当评估在连续两次完全相同的时候,你的函数不一致,返回相同的结果。这意味着尤其连续性和可微性是完全不可能的。
如果我看着你的代码:
z11 = normrnd (0, 3);
z12 = normrnd (0, 3);
z21 = normrnd (0, 3);
z22 = normrnd (0, 3);
e11 = normrnd (0, 3);
e12汽油= normrnd (0, 3);
e21 = normrnd (0, 3);
e22 = normrnd (0, 3);
这似乎是一个仿真。是会产生明确的功能我说fsolve要求?不。
我很抱歉。不管你多么希望使用fsolve,你不能这样做。
11日评论
的尸
的尸 2022年11月10日
@Torsten 嗨Torsten,抱歉延迟反应和谢谢你的帮助。我解决了我的问题中提到这个问题通过模拟值作为参数使用超大仿真样本大小。解决方案万博 尤文图斯也证实。

登录置评。

更多的答案(0)

类别

找到更多的在非线性方程组帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!