主要内容

vpasolve

解决方程数值

描述

例子

年代= vpasolve (eqnvar数值解方程eqn为变量var.如果没有指定varvpasolve解决由决定的默认变量symvar.例如,(x + 1 == 2, x)数值解方程x+ 1 = 2x

例子

年代= vpasolve (eqnvarinit_param数值解方程eqn为变量var使用最初的猜测或搜索范围init_param

例子

Y= vpasolve (命令var用数值方法求解方程组命令为变量var.该语法返回一个结构数组Y它包含了解。金宝搏官方网站结构数组中的字段对应于指定的变量var.如果没有指定varvpasolve确定的默认变量symvar

Y= vpasolve (命令varinit_param用数值方法求解方程组命令为变量var使用最初的猜测或搜索范围init_param

例子

…,yN日元) = vpasolve (命令var用数值方法求解方程组命令为变量var.该语法为变量分配解决方案金宝搏官方网站…,yN日元.如果没有指定varvpasolve确定的默认变量symvar

例子

…,yN日元) = vpasolve (命令varinit_param用数值方法求解方程组命令为变量var使用最初的猜测或搜索范围init_param

例子

___= vpasolve (___“随机”,真正的)用随机的初始猜测来寻找答案。金宝搏官方网站使用此输入可避免对非多项式方程重复返回相同的解。如果你指定了所有变量的初始猜测,设置“随机”真正的没有效果。

例子

全部折叠

解一个多项式方程。对多项式方程,vpasolve返回所有的解决方案。金宝搏官方网站

信谊xS = vpasolve (x ^ 2 * 4 + 3 * x ^ 3 - 4 * * x x ^ 2 - 3 + 2 = = 0, x)
S =

- 2.0 - 1.0 0.5 1.0 (vpa (2.0);vpa (1.0);vpa (0.5);vpa (1.0)]

解一个非多项式方程。nonpolynomial方程,vpasolve返回它找到的第一个解决方案。

sin(x) = 1/2, x
S =
                      
                       
                        
                         
                          0.52359877559829887307710723054658
                        
                        
                         vpa(“0.52359877559829887307710723054658”)
                       
                      

求方程的多个解金宝搏官方网站 2 0 0 x x 3. - 1 通过在使用时指定初始猜测vpasolve

画出方程的左右两边。

信谊xeqnLeft = 200 * sin (x);eqnRight = x^3 - 1;fplot ([eqnLeft eqnRight])标题([texlabel (eqnLeft)“=”texlabel (eqnRight)))

这张图显示这个方程有三个解。金宝搏官方网站如果你不明确最初的猜测,vpasolve返回它找到的第一个解决方案。

S1 = vpasolve(eqnLeft == eqnRight, x)
S1 =
                      
                       
                        
                         
                          
                           -
                          
                           0.0050000214585835715725440675982988
                         
                        
                        
                         vpa(“0.0050000214585835715725440675982988”)
                       
                      

通过指定一个最接近这个解的初始猜想来找到另一金宝搏官方网站个解。

S2 = vpasolve(eqnLeft == eqnRight, x, -3)
S2 =
                      
                       
                        
                         
                          
                           -
                          
                           3.0009954677086430679926572924945
                         
                        
                        
                         vpa(“3.0009954677086430679926572924945”)
                       
                      
S3 = vpasolve(eqnLeft == eqnRight, x, 4)
S3 =
                      
                       
                        
                         
                          3.0098746383859522384063444361906
                        
                        
                         vpa(“3.0098746383859522384063444361906”)
                       
                      

解方程组。使用一个输出参数以结构数组的形式返回解决方案。金宝搏官方网站

信谊uv[u,v] = [u,v] = [u,v] = [u,v] = [u,v]
Y =结构体字段:U: [3x1 sym] v: [3x1 sym]

通过访问结构阵列的字段显金宝搏官方网站示解决方案Y

uSol = Y.u
uSol =

0 5.8284271247461900976033774484194 0.1715728752538099023966225515806 (信谊(0);vpa (5.8284271247461900976033774484194);vpa (0.1715728752538099023966225515806)]

vSol = Y.v
vSol =

0 - 2.4142135623730950488016887242097 0.4142135623730950488016887242097 (信谊(0);vpa (2.4142135623730950488016887242097);vpa (0.4142135623730950488016887242097)]

如果vpasolve如果找不到解决方案,则返回一个空对象。

信谊xEqns = [3*x+2, 3*x+1];Y = vpasolve(方程式,x)
Y =空sym: 0-by-1

当解方程组时,使用多个输出参数将解直接赋给输出变量。金宝搏官方网站求解器返回解的顺序遵循您指定变量的顺序。金宝搏官方网站

信谊xy[sol_x, sol_y] = vpasolve ([x * sin (10 * x) = = y ^ 3, y ^ 2 = = exp (2 * x / 3)], [x, y])
sol_x =
                      
                       
                        
                         
                          88.90707209659114864849280774681
                        
                        
                         vpa(“88.90707209659114864849280774681”)
                       
                      
sol_y =
                      
                       
                        
                         
                          0.00000000000013470479710676694388973703681918
                        
                        
                         vpa(“0.00000000000013470479710676694388973703681918”)
                       
                      

你可以指定一个方程的解的范围。金宝搏官方网站例如,如果你想只搜索实解,你不能使用假设,因为金宝搏官方网站vpasolve忽略了假设。相反,指定一个搜索间隔。对于下面的方程,如果您没有指定范围,数值解算器将返回该方程的所有六个解。金宝搏官方网站

信谊x(x^6 - x^2 == 3, x)
S =

- 1.2929423350084724369196550436382 1.2929423350084724369196550436382 - 0.50188125716943915856832436499602 - 1.0429452224956770037495194222175 - 0.50188125716943915856832436499602 + 1.0429452224956770037495194222175 0.50188125716943915856832436499602 - 1.0429452224956770037495194222175 0.50188125716943915856832436499602 + 1.0429452224956770037495194222175 (vpa (1.2929423350084724369196550436382);vpa (1.2929423350084724369196550436382);- vpa('0.50188125716943915856832436499602') - vpa('1.0429452224956770037495194222175i');- vpa('0.50188125716943915856832436499602') + vpa('1.0429452224956770037495194222175i');vpa (0.50188125716943915856832436499602) - vpa(“1.0429452224956770037495194222175我”);vpa (0.50188125716943915856832436499602) + vpa(1.0429452224956770037495194222175我)]

假设你只需要这个方程的实解。金宝搏官方网站你不能对变量使用假设,因为vpasolve忽略了它们。

假设(x,“真实”的(x^6 - x^2 == 3, x)
S =

- 1.2929423350084724369196550436382 1.2929423350084724369196550436382 - 0.50188125716943915856832436499602 - 1.0429452224956770037495194222175 - 0.50188125716943915856832436499602 + 1.0429452224956770037495194222175 0.50188125716943915856832436499602 - 1.0429452224956770037495194222175 0.50188125716943915856832436499602 + 1.0429452224956770037495194222175 (vpa (1.2929423350084724369196550436382);vpa (1.2929423350084724369196550436382);- vpa('0.50188125716943915856832436499602') - vpa('1.0429452224956770037495194222175i');- vpa('0.50188125716943915856832436499602') + vpa('1.0429452224956770037495194222175i');vpa (0.50188125716943915856832436499602) - vpa(“1.0429452224956770037495194222175我”);vpa (0.50188125716943915856832436499602) + vpa(1.0429452224956770037495194222175我)]

指定搜索范围以将返回的结果限制在特定范围内。例如,要只返回这个方程的实解,指定搜索区间为金宝搏官方网站(负无穷到正无穷)

S = vpasolve(x^6 - x^2 == 3, x, -Inf Inf)
S =

- 1.2929423350084724369196550436382 1.2929423350084724369196550436382 (vpa (1.2929423350084724369196550436382);vpa (1.2929423350084724369196550436382)]

若要返回非负解,请指定搜索区间为金宝搏官方网站[0正]

S = vpasolve(x^6 - x^2 == 3, x, [0 Inf])
S =
                      
                       
                        
                         
                          1.2929423350084724369196550436382
                        
                        
                         vpa(“1.2929423350084724369196550436382”)
                       
                      

搜索范围还可以包含复数,例如(1, 1 + 2).在这种情况下,vpasolve在复平面中使用一个矩形搜索区域-1指定搜索区域的左下角和1 + 2我指定该区域的右上角。

(x^6 - x^2 == 3, x, [-1 1+2i])
S =

- 0.50188125716943915856832436499602 + 1.0429452224956770037495194222175 0.50188125716943915856832436499602 + 1.0429452224956770037495194222175 [- vpa('0.50188125716943915856832436499602') + vpa('1.0429452224956770037495194222175i');vpa (0.50188125716943915856832436499602) + vpa(1.0429452224956770037495194222175我)]

求下列方程组的解。

信谊xyeqn1 = exp (- x ^ 2 y ^ 2) *(* 4)——exp ((- x ^ 2 y ^ 2) / 2) * (x - 2) = = 0
eqn1 =

e - x 2 - y 2 x - 4 - e - x 2 2 - y 2 2 x - 2 0 exp ((- x ^ 2 - y ^ 2)) * (x - 4) - exp (x ^ (- 2/2 - y ^ 2/2)) * (x - 2) = = 0

eqn2 = exp (- x ^ 2 y ^ 2) * (y 2)——exp ((- x ^ 2 y ^ 2) / 2) *(4元)= = 0
eqn2 =

e - x 2 - y 2 y - 2 - e - x 2 2 - y 2 2 y - 4 0 exp ((- x ^ 2 - y ^ 2)) * (y - 2) - exp (x ^ (- 2/2 - y ^ 2/2)) * (y - 4) = = 0

求变量的解xy没有指定初始猜测。vpasolve无法找到解决方案并返回一个空对象。

[solX, solY] = vpassolve ([eqn1 eqn2],[x y])
solX =空sym: 0-by-1

现在指定最初的猜测x = 2y = 4vpasolve返回与初始猜测接近的解。金宝搏官方网站

[solX, solY] = vpassolve ([eqn1 eqn2],[x y],[2;4))
solX =
                      
                       
                        
                         
                          1.9999092125057125429174334656647
                        
                        
                         vpa(“1.9999092125057125429174334656647”)
                       
                      
我还=
                      
                       
                        
                         
                          4.0000907874942874570825665343353
                        
                        
                         vpa(“4.0000907874942874570825665343353”)
                       
                      

默认情况下,vpasolve每次调用返回相同的解决方案。为求非多项式方程的不止一个解,集合“随机”真正的.这使得vpasolve使用一个随机的初始猜测,这可以导致在连续调用中不同的解决方案。金宝搏官方网站

如果“随机”则vpasolve在每次调用时返回相同的解决方案。

信谊xf = x) * tan (x);n = 1:3 S = vpasolve(f,x)结束
S =
                      
                       
                        
                         
                          0
                        
                        
                         信谊(0)
                       
                      
S =
                      
                       
                        
                         
                          0
                        
                        
                         信谊(0)
                       
                      
S =
                      
                       
                        
                         
                          0
                        
                        
                         信谊(0)
                       
                      

“随机”则vpasolve在每次调用时返回一个不同的解决方案。

n = 1:3 S = vpasolve(f,x,“随机”,真正的)结束
S =
                      
                       
                        
                         
                          
                           -
                          
                           227.76107684764829218924973598808
                         
                        
                        
                         vpa(“227.76107684764829218924973598808”)
                       
                      
S =
                      
                       
                        
                         
                          102.09196646490764333652956578441
                        
                        
                         vpa(“102.09196646490764333652956578441”)
                       
                      
S =
                      
                       
                        
                         
                          61.244730260374400372753016364097
                        
                        
                         vpa(“61.244730260374400372753016364097”)
                       
                      

“随机”选项可以与搜索范围一起使用。

S = vpasolve(f,x,[10 12],“随机”,真正的)
S =
                      
                       
                        
                         
                          10.904121659428899827148702790189
                        
                        
                         vpa(“10.904121659428899827148702790189”)
                       
                      

输入参数

全部折叠

要解的方程,指定为符号方程或符号表达式。符号方程由关系运算符定义==.如果eqn是符号表达式(没有右侧),求解器假设右侧为0,并解出方程eqn = = 0

要解方程的变量,指定为符号变量。如果var没有指定,symvar决定的变量。

待解的方程组或表达式,指定为符号向量、矩阵或方程或表达式的数组。这些方程或表达式也可以用逗号分隔。如果一个方程是一个符号表达式(没有右边),解算器假设方程右边为0。

用于求解方程组的变量,指定为符号向量。这些变量被指定为向量或逗号分隔的列表。如果var没有指定,symvar决定的变量。

对一个解的初始猜测或搜索范围,指定为具有两列的数值、向量或矩阵。

如果init_param是一个数字,或者,在多元方程的情况下,是一个数字向量,然后数字解算器使用它作为初始猜测。如果init_param当方程组是多元方程组时,指定为标量,则数值求解器使用标量值作为所有变量的初始猜测值。例如,请参见通过指定初始猜测找到多个解决金宝搏官方网站方案

如果init_param是一个有两列的矩阵,然后行中的两项指定了相应变量的初始猜测的边界。要在包含搜索范围的矩阵中指定初始猜测值,请将这两列都指定为初始猜测值。

如果您指定init_param作为搜索范围[b]和值a、b是复数吗vpasolve在复平面的矩形搜索区域内寻找解。金宝搏官方网站在这里,一个指定矩形搜索区域的左下角,并且b指定该区域的右上角。例如,请参见指定解决方案范围金宝搏官方网站

若要省略变量的搜索范围,请将该变量的搜索范围设置为(南南)init_param.的所有其他用途init_param将错误。

输出参数

全部折叠

金宝搏官方网站单变量方程的解,作为符号值或符号数组返回。符号数组的大小对应于解的数目。金宝搏官方网站

金宝搏官方网站方程组的解,作为结构数组返回。结构数组中字段的数量对应于要求解的变量的数量。

分配给方程组解的变量,作为数字或符号变量数组返回。金宝搏官方网站输出变量或符号数组的数量必须等于要求解的变量的数量。如果你明确地指定了独立变量var,则求解器使用相同的顺序返回解。金宝搏官方网站如果没有指定var,工具箱按字母顺序对独立变量进行排序,然后将这些变量的解分配给输出变量或符号数组。金宝搏官方网站

提示

  • 如果vpasolve如果找不到解决方案,则返回一个空对象。提供初步猜测以帮助求解者找到解决方案。例如,请参见提供初步猜测以找到解决方案金宝搏官方网站

  • 对多项式方程,vpasolve返回所有的解决方案。金宝搏官方网站对于非多项式方程,没有找到所有解的一般方法金宝搏官方网站vpasolve默认情况下只返回一个解决方案。为了找到非多项式的几个不同的解,你可以设置金宝搏官方网站“随机”真实使用vpasolve反复。

  • 当你解一个非唯一解的方程组时金宝搏官方网站vpasolve取决于系统是多项式还是非多项式。如果多项式,vpasolve通过引入任意参数返回所有金宝搏官方网站解。如果是非多项式,则返回单个数值解(如果存在)。

  • 当你解一个有理方程组时,vpasolve通过把分母乘出来,把有理方程变换成多项式。vpasolve返回得到的多项式系统的所金宝搏官方网站有解,其中还包括分母的根。

  • vpasolve忽略变量设定的假设。通过使用参数指定适当的搜索范围,可以将返回的结果限制在特定的范围内init_param

  • 输出变量…,yN日元不指定变量为哪个vpasolve解方程或方程组。如果…,yN日元出现的变量是什么命令,这并不能保证vpasolve(命令)将解决方案分配给金宝搏官方网站…,yN日元使用正确的顺序。因此,对于调用[a, b] = vpasolve(命令),你可能会得到解金宝搏官方网站一个分配给b反之亦然。

    为了确保返回的解决方案的顺序,请指定变量金宝搏官方网站var.例如,电话[b] = vpasolve(方程式,[b])分配解决方案金宝搏官方网站一个分配给一个以及解金宝搏官方网站b分配给b

  • 你可以用符号来解方程解决,然后用vpa.使用这种方法,你可以得到由符号解算器找到的所有解的数值近似。金宝搏官方网站然而,这可能会降低计算速度,因为符号化求解和对结果的后处理要比直接使用数值求解器花费更多时间vpasolve

算法

  • 当您设置“随机”真正的并指定一个变量的搜索范围,使用内部随机数生成器(具有均匀分布)选择搜索范围内的随机初始猜测。

  • 当您设置“随机”真正的而不指定变量的搜索范围,则使用半宽的柯西分布生成随机初始猜测One hundred..这意味着最初的猜测是真实值,并且在重复调用时有很大的价差。

介绍了R2012b