如何求解非线性联立方程组(在Matlab,Python或Fortran中)

时间:2012-05-02 05:29:53

标签: math numerical-methods nonlinear-functions

我正在研究非线性联立方程组。两个变量是u> 0且b> 0。如何在Matlab,Python或Fortran中解决这个问题?感谢。

Nonlinear simultaneous equations

2 个答案:

答案 0 :(得分:2)

老实说,我不确定这个问题真的属于这里。但理论上解决方案很简单。对于作为u的函数的b,等式1求解等式1。替换为等式2,其中b只出现在一个地方。

现在,您可以在新等式2上使用rootfinder,求解满足该关系的u的值。给定u的值,您可以使用自适应数值求积程序来进行积分。在MATLAB中,这就像quadgk。 (不要打扰ODE解算器,因为它们提供的信息比你需要的更多。你只需要整体积分。)

实际上,该集成中的内核是变量t的简单多项式,并且u ^ 10因子不在积分中。因此,第一学期的微积分将手工完成整合,虽然它需要一些铅笔和纸。或者,符号工具箱就足够了。一个单行调用解决就足够了,虽然这将是一个很长的路线,而且我觉得懒得写它。

说完所有这些之后,请注意数值积分都会有点问题,因为你的数字很讨厌而且数量很大,指数相当大。因此,这也意味着您非常希望以符号方式执行解决方案。

真的,这个答案的重点是,在问题上抛出一个数值解算器是一个不好的想法,特别是当象征工具箱(或铅笔和纸!)等工具足够和可用时。

答案 1 :(得分:0)

通过将#1解为b,可以轻松地消除其中一个方程式。然后用它来解决你的问题#。

你将不得不使用迭代方法来做到这一点:猜测解决方案,计算估计值,与猜测进行比较,调整并重复直到收敛为止。

我会使用数值积分(5阶Runge-Kutta或其他东西)来计算积分。