解决方程数值
符号数学工具箱™提供了数字和符号动力学方程。比较的数字和符号动力学,明白了选择数字或符号解算器。一个方程或方程组可以有多个解决方案。金宝搏官方网站找到这些解决方案数值,使用函金宝搏官方网站数vpasolve
。对多项式方程,vpasolve
返回所有的解决方案。金宝搏官方网站nonpolynomial方程,vpasolve
返回找到的第一个解决方案。这些示例向您展示如何使用vpasolve
找到解决多项式和金宝搏官方网站nonpolynomial方程,以及如何获得高精度这些解决方案。
找到一个多项式函数的根
使用vpasolve
找到所有函数的解决方案金宝搏官方网站
。
信谊f (x)f (x) = 6 * x x ^ ^ 7 - 2 * 6 + 3 * x ^ 3 - 8;索尔= vpasolve (f)
索尔=
vpasolve
返回函数的七根,正如所料,因为是7次多项式函数。
找到0 Nonpolynomial函数使用搜索范围和起点
函数的一个阴谋 揭示了周期性的零,零分,随着斜坡 增加。
信谊xh = fplot (exp (x / 7) * cos (2 * x)[2] 25日);网格在
使用vpasolve
找到一个函数的零f
。请注意,vpasolve
只返回nonpolynomial方程的一个解,即使存在多个解决方案。金宝搏官方网站在重复调用,vpasolve
返回相同的结果。
f = exp (x / 7) * cos (2 * x);为k = 1:3 vpasolve (f (x)结束
ans =
ans =
ans =
找到多种解决方案,设置选项金宝搏官方网站“随机”
来真正的
。这使得vpasolve
随机选择的起点。信息的算法,选择随机起始点,看到的算法在vpasolve
页面。
为k = 1:3 vpasolve (f, x,“随机”,真正的)结束
ans =
ans =
ans =
找到一个接近为零
,设置起始点10
。
vpasolve (f, x, 10)
ans =
找到一个接近为零
,设置起始点1000年
。
vpasolve (f, x, 1000)
ans =
找到一个零的范围
,设置搜索范围25 [15]
。
vpasolve (f, x,[15] 25日)
ans =
找到多个零范围25 [15]
,你不能叫vpasolve
多次因为它返回相同的结果在每次调用,正如前面所示。相反,设置搜索范围和设置“随机”
来真正的
。
为k = 1:3 vpasolve (f, x, 25 [15],“随机”,真正的)结束
ans =
ans =
ans =
因为“随机”
随机选择的起点,同样的解决方案可能是在连续的调用。
找到所有零在指定的搜索范围
创建一个函数findzeros
系统地找到所有0f
在一个给定的搜索范围,在一个指定的错误宽容。函数从输入的搜索范围和调用vpasolve
找到一个零。然后,它将搜索范围分为两个在零值和递归地调用自身新的搜索范围作为输入来找到更多的零。
函数是一段一段的解释。
声明函数的三个输入和一个输出。第一个输入函数,第二个输入范围,可选的第三个输入允许您指定错误之间的零和更高的生成和下界。
函数索尔= findzeros (f,范围,犯错)
如果你不指定可选的参数错误宽容,findzeros
集犯错
来0.001
。
如果输入参数个数< 2呃= 1 e - 3;结束
找到一个零在搜索范围使用vpasolve
。
索尔= vpasolve (f,范围);
如果vpasolve
没有找到一个零,退出。
如果(isempty (sol))返回
如果vpasolve
发现一个零,把搜索范围分割成上下两个搜索范围的零。
其他的lowLimit = sol-err;highLimit =溶胶+犯错;
调用findzeros
与较低的搜索范围。如果findzeros
返回0,的值复制到数组,把他们的解决方案。
temp = findzeros (f,[范围(1)lowLimit], 1);如果~ isempty(临时)溶胶=排序([索尔临时]);结束
调用findzeros
与更高的搜索范围。如果findzeros
返回0,的值复制到数组,把他们的解决方案。
temp = findzeros (f, highLimit范围(2),1);如果~ isempty(临时)溶胶=排序([索尔临时]);结束返回结束结束
整个函数findzeros
如下。保存这个函数findzeros.m
在当前文件夹。
函数索尔= findzeros (f,范围,犯错)如果输入参数个数< 3呃= 1 e - 3;结束索尔= vpasolve (f,范围);如果(isempty (sol))返回其他的lowLimit = sol-err;highLimit =溶胶+犯错;temp = findzeros (f,[范围(1)lowLimit], 1);如果~ isempty(临时)溶胶=排序([索尔临时]);结束temp = findzeros (f, highLimit范围(2),1);如果~ isempty(临时)溶胶=排序([索尔临时]);结束返回结束结束
调用findzeros
与搜索范围25 [15]
找到所有范围为0f (x) = exp (x / 7) * cos (2 * x)
在默认的错误宽容。
信谊f (x)f (x) = exp (x / 7) * cos (2 * x);索尔= findzeros (f,[15] 25日)”
索尔=
获得任意精度的金宝搏官方网站解决方案
使用数字
设置返回的精度的解决方案金宝搏官方网站vpasolve
。默认情况下,vpasolve
返回一精密32位金宝搏官方网站有效数字解决方案。
f = exp (x / 7) * cos (2 * x);vpasolve (f)
ans =
使用数字
增加有效数字精确到64。当修改数字
,确保你保存它的当前值,这样你就可以恢复它。
digitsOld =数字;数字(64)vpasolve (f)
ans =
接下来,改变解决方案16个有效数字的精确性。金宝搏官方网站
数字(16)
解多元方程使用搜索范围
考虑以下方程组。
方程的一个阴谋
和
显示三个表面相交于两点。为了更好地可视化情节,使用视图
。规模colormap值,使用caxis
。
信谊xyzeqn1 z = = = 10 * (cos (x) + cos (y));eqn2 z = = = x x ^ 2 + y ^ 2 - 0.1 * * y;eqn3 = x + y - 2.7 = = 0;公式= [eqn1 eqn2 eqn3];fimplicit3(方程)轴([0 0 2.5 2.5 -20年10])标题(“多元方程组”(69年,28)caxis)视图(-15 [10])
使用vpasolve
找到一个地方表面相交。这个函数vpasolve
返回一个结构。访问x
- - - - - -,y
- - - - - -,z
解决方案的价值,索引结构。
索尔= vpasolve(方程);(溶胶。x索尔。y索尔。z]
ans =
搜索解空间的一个区域,指定搜索范围的变量。如果你指定范围
和
,然后vpasolve
搜索函数有界区域所示。
使用vpasolve
找到一个解的搜索范围。省略一个搜索范围
,第三个搜索范围(南南)
。
var = [x y z];范围= [0 1.5;1.5 - 2.5;南南);索尔= vpasolve(方程、var、范围);(溶胶。x索尔。y索尔。z]
ans =
找到多种解决方案,设置金宝搏官方网站“随机”
选项真正的
。这使得vpasolve
使用随机起点上连续运行。的“随机”
选项可用于结合搜索范围vpasolve
使用一个搜索范围内随机起始点。因为“随机”
随机选择的起点,同样的解决方案可能是在连续的调用。调用vpasolve
重复以确保你找到这两个解决方案。金宝搏官方网站
清晰的索尔范围= [0 3;0 3;南南);为k = 1:5 temp = vpasolve(方程,var,范围,“随机”,真正的);索尔(k, 1) = temp.x;索尔(k, 2) = temp.y;索尔(k, 3) = temp.z;结束索尔
索尔=
绘制方程。重叠点的解决方案作为一个散点图,金宝搏官方网站黄色X
标记使用scatter3
。为了更好地可视化情节,使两个表面的透明使用α
。规模colormap情节值使用caxis
使用,改变视角视图
。
vpasolve
找到解决方案金宝搏官方网站的交点方程形成的表面如图所示。
clf ax =轴;h = fimplicit3(方程);h (2)。FaceAlpha = 0;h (3)。FaceAlpha = 0;轴([0 0 2.5 2.5 -20年10])在scatter3 (sol(: 1)溶胶(:,2),索尔(:,3),600年,“黄色”,“X”,“线宽”2)标题(“随机发现的解决方案在指定搜索范金宝搏官方网站围”)cz = ax.Children;caxis(20[0])视图(69年28)从
最后,恢复旧的价值数字
进行进一步的计算。
数字(digitsOld)