我试图解决两个耦合代数方程求解耦合在MATLAB非线性方程而不重新缩放
f1(x,y) = 0;
f2(x,y) = 0;
的功能f1
和f2
是10^42
大小的典型顺序。我跑了matlab代码,但它说没有找到解决方案。我认为这个问题是因为涉及的规模非常高。重新调整整个方程是非常繁琐的。我想在delta(f)/f < epsilon(say 1e-6)
时停止根查找功能(fsolve)
。这个条件如何在matlab中实现?任何替代解决方案的扩展问题也是受欢迎的。
我试图解决两个耦合代数方程求解耦合在MATLAB非线性方程而不重新缩放
f1(x,y) = 0;
f2(x,y) = 0;
的功能f1
和f2
是10^42
大小的典型顺序。我跑了matlab代码,但它说没有找到解决方案。我认为这个问题是因为涉及的规模非常高。重新调整整个方程是非常繁琐的。我想在delta(f)/f < epsilon(say 1e-6)
时停止根查找功能(fsolve)
。这个条件如何在matlab中实现?任何替代解决方案的扩展问题也是受欢迎的。
RTFM(友好的课程),https://de.mathworks.com/help/optim/ug/fsolve.html
的选项,你可以提供给求解器包含有默认值1e-6
是对函数值的绝对公差参数TolFun
。显然没有相对公差的规定,所以您需要从初始点或更多全局考虑来计算函数值范围,以设置TolFun = scale * epsilon
。
我试过了。如果函数具有不同的比例,它将无法工作?例如f1〜10^32和f2〜10^14。 – 2015-04-06 16:37:08
双精度浮点数可以取值10^42。 – 2015-04-05 14:59:19