主要内容

解决方程数值

符号数学工具箱™提供了数字和符号动力学方程。比较的数字和符号动力学,明白了选择数字或符号解算器。一个方程或方程组可以有多个解决方案。金宝搏官方网站找到这些解决方案数值,使用函金宝搏官方网站数vpasolve。对多项式方程,vpasolve返回所有的解决方案。金宝搏官方网站nonpolynomial方程,vpasolve返回找到的第一个解决方案。这些示例向您展示如何使用vpasolve找到解决多项式和金宝搏官方网站nonpolynomial方程,以及如何获得高精度这些解决方案。

找到一个多项式函数的根

使用vpasolve找到所有函数的解决方案金宝搏官方网站 f ( x ) = 6 x 7 - - - - - - 2 x 6 + 3 x 3 - - - - - - 8

信谊f (x)f (x) = 6 * x x ^ ^ 7 - 2 * 6 + 3 * x ^ 3 - 8;索尔= vpasolve (f)
索尔=

( 1.0240240759053702941448316563337 - - - - - - 0.88080620051762149639205672298326 + 0.50434058840127584376331806592405 - - - - - - 0.88080620051762149639205672298326 - - - - - - 0.50434058840127584376331806592405 - - - - - - 0.22974795226118163963098570610724 + 0.96774615576744031073999010695171 - - - - - - 0.22974795226118163963098570610724 - - - - - - 0.96774615576744031073999010695171 0.7652087814927846556172932675903 + 0.83187331431049713218367239317121 0.7652087814927846556172932675903 - - - - - - 0.83187331431049713218367239317121 )

vpasolve返回函数的七根,正如所料,因为是7次多项式函数。

找到0 Nonpolynomial函数使用搜索范围和起点

函数的一个阴谋 f ( x ) = e ( x / 7 ) 因为 ( 2 x ) 揭示了周期性的零,零分,随着斜坡 x 增加。

信谊xh = fplot (exp (x / 7) * cos (2 * x)[2] 25日);网格

图包含一个坐标轴对象。坐标轴functionline类型的对象包含一个对象。

使用vpasolve找到一个函数的零f。请注意,vpasolve只返回nonpolynomial方程的一个解,即使存在多个解决方案。金宝搏官方网站在重复调用,vpasolve返回相同的结果。

f = exp (x / 7) * cos (2 * x);k = 1:3 vpasolve (f (x)结束
ans =
                  
                   
                    
                     
                      
                       - - - - - -
                      
                       7.0685834705770347865409476123789
                     
                    
                   
                  
ans =
                  
                   
                    
                     
                      
                       - - - - - -
                      
                       7.0685834705770347865409476123789
                     
                    
                   
                  
ans =
                  
                   
                    
                     
                      
                       - - - - - -
                      
                       7.0685834705770347865409476123789
                     
                    
                   
                  

找到多种解决方案,设置选项金宝搏官方网站“随机”真正的。这使得vpasolve随机选择的起点。信息的算法,选择随机起始点,看到的算法vpasolve页面。

k = 1:3 vpasolve (f, x,“随机”,真正的)结束
ans =
                  
                   
                    
                     
                      
                       - - - - - -
                      
                       226.98006922186256147892598444194
                     
                    
                   
                  
ans =
                  
                   
                    
                     98.174770424681038701957605727484
                   
                  
ans =
                  
                   
                    
                     52.621676947629036744249276669932
                   
                  

找到一个接近为零 x = 1 0 ,设置起始点10

vpasolve (f, x, 10)
ans =
                  
                   
                    
                     10.210176124166828025003590995658
                   
                  

找到一个接近为零 x = 1 0 0 0 ,设置起始点1000年

vpasolve (f, x, 1000)
ans =
                  
                   
                    
                     999.8118620049516981407362567287
                   
                  

找到一个零的范围 1 5 x 2 5 ,设置搜索范围25 [15]

vpasolve (f, x,[15] 25日)
ans =
                  
                   
                    
                     21.205750411731104359622842837137
                   
                  

找到多个零范围25 [15],你不能叫vpasolve多次因为它返回相同的结果在每次调用,正如前面所示。相反,设置搜索范围和设置“随机”真正的

k = 1:3 vpasolve (f, x, 25 [15],“随机”,真正的)结束
ans =
                  
                   
                    
                     21.205750411731104359622842837137
                   
                  
ans =
                  
                   
                    
                     21.205750411731104359622842837137
                   
                  
ans =
                  
                   
                    
                     16.493361431346414501928877762217
                   
                  

因为“随机”随机选择的起点,同样的解决方案可能是在连续的调用。

找到所有零在指定的搜索范围

创建一个函数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日)”
索尔=

( 16.493361431346414501928877762217 18.064157758141311121160199453857 19.634954084936207740391521145497 21.205750411731104359622842837137 22.776546738526000978854164528776 24.347343065320897598085486220416 )

获得任意精度的金宝搏官方网站解决方案

使用数字设置返回的精度的解决方案金宝搏官方网站vpasolve。默认情况下,vpasolve返回一精密32位金宝搏官方网站有效数字解决方案。

f = exp (x / 7) * cos (2 * x);vpasolve (f)
ans =
                  
                   
                    
                     
                      
                       - - - - - -
                      
                       7.0685834705770347865409476123789
                     
                    
                   
                  

使用数字增加有效数字精确到64。当修改数字,确保你保存它的当前值,这样你就可以恢复它。

digitsOld =数字;数字(64)vpasolve (f)
ans =
                  
                   
                    
                     
                      
                       - - - - - -
                      
                       7.068583470577034786540947612378881489443631148593988097193625333
                     
                    
                   
                  

接下来,改变解决方案16个有效数字的精确性。金宝搏官方网站

数字(16)

解多元方程使用搜索范围

考虑以下方程组。

z = 10 ( 因为 ( x ) + 因为 ( y ) ) z = x + y 2 - - - - - - 0 1 x 2 y x + y - - - - - - 2 7 = 0

方程的一个阴谋 0 x 2 5 0 x 2 5 显示三个表面相交于两点。为了更好地可视化情节,使用视图。规模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])

图包含一个坐标轴对象。标题为多元方程组的坐标轴对象包含3 implicitfunctionsurface类型的对象。

使用vpasolve找到一个地方表面相交。这个函数vpasolve返回一个结构。访问x- - - - - -,y- - - - - -,z解决方案的价值,索引结构。

索尔= vpasolve(方程);(溶胶。x索尔。y索尔。z]
ans =
                  
                   
                    
                     
                      (
                     
                      
                       
                        
                         
                          2.369747722454798
                        
                       
                       
                        
                         
                          0.3302522775452021
                        
                       
                       
                        
                         
                          2.293354376823228
                        
                       
                      
                     
                     
                      )
                    
                   
                  

搜索解空间的一个区域,指定搜索范围的变量。如果你指定范围 0 x 1 5 1 5 y 2 5 ,然后vpasolve搜索函数有界区域所示。

使用vpasolve找到一个解的搜索范围。省略一个搜索范围 z ,第三个搜索范围(南南)

var = [x y z];范围= [0 1.5;1.5 - 2.5;南南);索尔= vpasolve(方程、var、范围);(溶胶。x索尔。y索尔。z]
ans =
                  
                   
                    
                     
                      (
                     
                      
                       
                        
                         
                          0.9106266172563336
                        
                       
                       
                        
                         
                          1.789373382743666
                        
                       
                       
                        
                         
                          3.964101572135625
                        
                       
                      
                     
                     
                      )
                    
                   
                  

找到多种解决方案,设置金宝搏官方网站“随机”选项真正的。这使得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;结束索尔
索尔=

( 2.369747722454798 0.3302522775452021 2.293354376823228 2.369747722454798 0.3302522775452021 2.293354376823228 2.369747722454798 0.330252277545202 2.293354376823228 0.9106266172563336 1.789373382743666 3.964101572135625 0.9106266172563336 1.789373382743666 3.964101572135625 )

绘制方程。重叠点的解决方案作为一个散点图,金宝搏官方网站黄色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)

图包含一个坐标轴对象。坐标轴对象与标题随机发现的解决方案在指定搜索范围包含4 implicitfuncti金宝搏官方网站onsurface类型的对象,散射。

最后,恢复旧的价值数字进行进一步的计算。

数字(digitsOld)