matlab解多元非线性方程组,要求整数解

2025-01-04 01:37:23
推荐回答(1个)
回答1:

1.solve
格式:(1)Y = solve(eqns,vars)
(2)[y1,...,yN] = solve(eqns,vars)
先解释两个参数吧,
①eqns就是你的方程组,方程组里面的各个方程是组织为一个数组的。

所以你可以直接使用 [方程1,方程2,。。。。,方程n] 对应于eqns输入参数。
也可以后面会将到,将eqns声明为一个数组,然后带入eqns输入即可,这样方便编辑。

②vars就是你想要返回的求得的未知变量,如果你不明确指定,那他就会按照sym的对应。

③返回值,有两种。Y代表一个结构体,将返回的变量通通放入结构体Y里面,然后访问和C语言的结构体一样,假设Y下面有两个成员,y1,y2,
你直接Y不会显示里面的值,要Y.y1 Y.y2才能显示。
[y1,y2,...,yN]就是直接对应于vars里面你直接想要求得的值,如果没有明确指定vars就按默认对应。

注:(1)vars如果你不明确指定的话,在参数少的时候也容易分清返回自己想要的,但是如果参数过多还是最好明确指定自己想要的参数。
(2)Y和[y1,y2,...,yN]两种返回赋值方式各有优缺点,Y你访问里面的元素的话比较麻烦,
[y1,y2,...,yN]这种情况如果N有几十个,你这样输入很烦,而这个时候全部存入Y中,再用一个for循环遍历就能存入一个向量中了。

(3)然而突然发现,在结构体中的元素并不能使用下标来遍历,目前还在纠结中。。。

2.sym
先讲下这个函数用来干什么的,在matlab中,你可以直接用变量,但是你必须要赋值。
比如你想要输入a=b+c;
你的a和b首先要初始化,即b和c是要有值的。
那么问题就来了,我求解方程的时候就是不知道未知数才求解,如何赋值呢?
这个时候就需要使用sym声明符号变量了。它声明的未知量不用赋值。

格式:A = sym('a',[m,n])

这个的意思就是说,生成一个m,n维的矩阵A,然后它的每一个元素用a来标识。

注意:用a的标识是它标识矩阵内部的元素,你要使用该未知量还是需要按照正常的矩阵元素访问方法,比如A(1,2)这样。
环境:matlab2015a
函数:Symbolic Math Toolbox里面的sym和solve函数。其中sym在第一个红框中,solve在第二个红框中。