解代数方程组
本主题向您展示如何使用符号数学工具箱™符号化地解决方程组。此工具箱提供数值和符号方程求解器。有关数值和符号求解器的比较,请参见选择数字或符号求解器.
的输出解决
假设你有这个系统
你想解的是 而且 .首先,创建必要的符号对象。
信谊xy一个
的输出有几种方法解决
.一种方法是使用双输出调用。调用返回以下内容。
[solx,soly] = solve(x^2*y^2 == 0, x-y/2 == a)
solx =
我还=
将第一个方程修改为 .新系统有更多的解决方案。万博 尤文图斯产生了四种不同的解。万博 尤文图斯
[solx,soly] = solve(x^2*y^2 == 1, x-y/2 == a)
solx =
我还=
因为你没有指定因变量,解决
使用symvar
来确定变量。
分配输出的方法解决
对于“小型”系统非常成功。例如,如果您有一个10乘10的方程组,输入以下内容既笨拙又耗时。
[x1,x2,x3,x4,x5,x6,x7,x8,x9,x10] = solve(...)
为了克服这个困难,解决
可以返回字段为解的结构。万博 尤文图斯例如,解方程组U²- v²= a²
,U + v = 1
,A ^2 - 2* A = 3
.求解器返回包含在结构中的结果。
信谊uv一个S =解决(u v ^ ^ 2 - 2 = = ^ 2, u + v = = 1 ^ 2 - 2 * 3 = =)
S =带字段的结构:A: [2x1 sym] u: [2x1 sym] v: [2x1 sym]
的解决方万博 尤文图斯案一个
居住在"一个
场”,年代
.
s.a.
ans =
类似的注释适用于的解决方案万博 尤文图斯u
而且v
.结构年代
现在可以由字段和索引操作以访问解决方案的特定部分。例如,要检查第二个解决方案,可以使用下面的语句提取每个字段的第二个组件。
s2 = [S.a(2),S.u(2),S.v(2)]
s2 =
下面的语句创建解矩阵米
它的行组成了系统的不同解。万博 尤文图斯
M = [S.a,S.u,S.v]
M =
清晰的solx
而且我还
供进一步使用。
清晰的solx我还
解一个线性方程组
线性方程组也可以用矩阵除法求解。例如,解这个方程组。
清晰的uvxy信谊uvxy= [x + 2*y == u, 4*x + 5*y == v];S = solve(eqns);sol = [S.x;S.y]
索尔=
[A,b] = equationsToMatrix(eqns,x,y);z = A\b
z =
因此,索尔
而且z
产生相同的解决方案,尽管结果分配给不同的变量。
返回一个方程组的完全解
解决
不会自动返回方程的所有解。万博 尤文图斯若要返回所有解以及解中的参数万博 尤文图斯和解上的条件,请设置ReturnConditions
选项真正的
.
考虑下面的方程组:
想象方程组使用fimplicit
.将x轴和y轴的值设置为π
,得到轴处理使用轴
在一个
.创建符号数组年代
价值观2 *π
来2 *π
每隔π/ 2
.将刻度设置为年代
,使用XTick
而且YTick
的属性一个
.要设置x轴和y轴的标签,请进行转换年代
到字符向量。使用arrayfun
应用字符
到每一个元素年代
返回T
.设置XTickLabel
而且YTickLabel
的属性一个
来T
.
信谊xyEqn1 = sin(x)+cos(y) = 4/5;Eqn2 = sin(x)*cos(y) = 1/10;A =坐标轴;fimplicit (eqn1(2 * 2π*π)“b”);持有在网格在fimplicit (eqn2(2 * 2π*π)“米”);L = sym(-2*pi:pi/2:2*pi);a.XTick = double(L);a.YTick = double(L);M = arrayfun(@char, L,“UniformOutput”、假);a.XTickLabel = M;a.YTickLabel = M;标题(“方程组图”)传说(sin(x)+cos(y) = 4/5',sin(x)*cos(y) = 1/10,...“位置”,“最佳”,“自动更新”,“关闭”)
解在两个万博 尤文图斯图的交点处。这表明系统有重复的周期解。万博 尤文图斯要求解这个方程组的全解集,请使用解决
并设置ReturnConditions
选项真正的
.
S = solve(eqn1,eqn2,“ReturnConditions”,真正的)
S =带字段的结构:X: [2x1 sym] y: [2x1 sym] parameters: [z z1] conditions: [2x1 sym]
解决
返回一个结构年代
在田野里S.x
为了解决x
,S.y
为了解决y
,S.parameters
对于解决方案中的参数,和S.conditions
对于解的条件。中相同索引的元素S.x
,S.y
,S.conditions
形成一个解。因此,S.x (1)
,S.y (1)
,S.conditions (1)
写出方程组的一个解。中的参数S.parameters
可以出现在所有解中。万博 尤文图斯
索引年代
返回解、参数和条件。万博 尤文图斯
S.x
ans =
S.y
ans =
S.parameters
ans =
S.conditions
ans =
在一定条件下解方程组
要在条件下解方程组,在输入中指定条件到解决
.
解上面考虑的方程组x
而且y
在这段时间2 *π
来2 *π
.将解叠加在图上使用万博 尤文图斯散射
.
Srange = solve(eqn1, eqn2, -2* < x, x < 2*, -2* < y, y < 2*,“ReturnConditions”,真正的);散射(Srange.x Srange.y,“k”)
处理返回的解决方案、万博 尤文图斯参数和条件解决
返回的解、参数和条件万博 尤文图斯解决
在一段时间内或在万博 尤文图斯附加条件下找到解。本节与前一节的目标相同,在搜索范围内求解方程组,但采用不同的方法。而不是直接放置条件,它展示了如何使用返回的参数和条件解决
.
对于完整解年代
求方程组的值x
而且y
在这段时间2 *π
来2 *π
通过解题万博 尤文图斯S.x
而且S.y
对于参数S.parameters
在这个区间内S.conditions
.
在解x
而且y
在区间中,假设条件为S.conditions
使用假设
使返回的解满足条件。万博 尤文图斯假设第一个解的条件。
假设(S.conditions (1))
在S.x
而且S.y
.
paramx = intersect(symvar(S.x),S.parameters)
paramx =
paramy = intersect(symvar(S.y), s.s parameters)
paramy =
求解第一个解x
对于参数paramx
.
solparamx(1) =解决(S.x(1) > 2π,S.x(1) < 2 *π,paramx)
solparamx =
类似地,求解的第一个解y
为paramy
.
solparamy(1) =解决(S.y(1) > 2π,S.y(1) < 2 *π,paramy)
solparamy =
清除由设置的假设S.conditions (1)
使用假设
.调用asumptions
检查假设是否正确。
假设(S.parameters“清楚”)假设
ans =空sym: 1乘0
假设第二个解的条件。
假设(S.conditions (2))
解第二个解x
而且y
对于参数paramx
而且paramy
.
solparamx(2) =解决(S.x(2) > 2 *π,S.x(2) < 2 *π,paramx)
solparamx =
solparamy(2) =解决(S.y(2) > 2 *π,S.y(2) < 2 *π,paramy)
solparamy =
第一行paramx
而且paramy
形成方程组的第一个解,第二行形成第二个解。
求的值x
而且y
对于这些值paramx
而且paramy
,使用潜艇
代替paramx
而且paramy
在S.x
而且S.y
.
solx(1) =潜艇(S.x (1) paramx, solparamx (1:));solx(2,:) = subs(S.x(2), paramx, solparamx(2,:)))
solx =
还(1)=潜艇(S.y (1) paramy, solparamy (1:));soly(2,:) = subs(S.y(2), paramy, solparamy(2,:)))
我还=
请注意,solx
而且我还
这两组解是万博 尤文图斯x
和y
.方程组的完整解是由中值的所有可能组万博 尤文图斯合所形成的两组点solx
而且我还
.
用散射
.把它们覆盖在方程的图形上。正如预期的那样,解出现在两个方程的万博 尤文图斯图的交点处。
为I = 1:length(solx(1,:))为j = 1:长度(我还(1:))散射(solx(我)还(j),“k”solx(2,i), soly(2,j),“k”)结束结束
将符号结果转换为数值
符号计算提供精确的精度,而数值计算是近似值。尽管会损失精度,但您可能需要将符号结果转换为数值近似值,以便在数值计算中使用。方法提供的变精度算法可用于高精度转换vpa
函数。为了标准精度和更好的性能,转换为双精度使用双
.
使用vpa
转换符号解万博 尤文图斯solx
而且我还
变成数字形式。
vpa (solx)
ans =
vpa(还)
ans =
简化复杂的结果,提高性能
如果结果看起来很复杂,解决
卡住了,或者如果你想提高性能,从solve函数解决方程问题万博 尤文图斯.