解决非线性方程系统的问题,请参阅Matlab

时间:2017-02-25 17:27:01

标签: matlab

我需要使用Matlab解决算法问题。为此,我提出了一个包含9个变量的6个非线性方程组,因此系统具有无限解。 当使用 solve()函数时,我得到的唯一结果(因为我只得到一个解决方案)具有有理数,当它们都应该是整数时。事实上,我已经验证并且有一个整数的解决方案,但我无法弄清楚如何使用该功能获得该解决方案。
当我尝试使用 solve()和整数变量( syms x integer )希望强迫程序找到我正在寻找的解决方案时,Matlab不是能够找到系统的解决方案。 这是我使用的代码:

syms a b c d e f g h i integer;
ecuacion = solve(a*b*c==vertical(1),d*e*f==vertical(2),g*h*i==vertical(3),a*d*g==horizontal(1),b*e*h==horizontal(2),c*f*i==horizontal(3),a,b,c,d,e,f,g,h,i);
solucion = eval([ecuacion.a ecuacion.b ecuacion.c;ecuacion.d ecuacion.e ecuacion.f;ecuacion.g ecuacion.h ecuacion.i]);

我有什么功能可以帮助我解决这个问题吗?或者我做错了什么? 如果您想查看算法,请在此处链接到我原来的西班牙语帖子:https://es.stackoverflow.com/posts/51725/edit

1 个答案:

答案 0 :(得分:0)

由于所有方程都是 b c = d的形式,或许你应该考虑先取对数:A = log(a),B = log(b),C = log(c ),使A + B + C = log(d)。这会将您的问题转化为线性问题。