当前位置:文档之家› 符号方程的求解 solve linsolve fsolve dsolve

符号方程的求解 solve linsolve fsolve dsolve

符号方程的求解solve linsolve fsolve dsolveMATLAB7.0中的符号计算可以求解线性方程(组)、代数方程的符号解、非线性符号方程(组)、常微分方程(组),求解这些方程(组)是通过调用solve函数实现的,如求解代数方程的符号解调用solve函数的格式是solve('eq')、solve('eq','v')、[x1,x2,…xn]=solve('eq1','eq2',…'eqn')等,求解非线性符号方程是调用优化工具箱的fsolve函数,调用格式有fsolve(f,x0)、fsolve(f,x0,options)、[x,fv]=fsolve(f,x0,options,p1,p2…)等,而解常微分方程(组)则是调用dsolve函数,调用的格式有[x1,x2,…]=dsolve('eq1,eq2,…','cond1,cond2…','v')。

现将各函数的调用格式列于下表(表5—1),在各个实例中说明各种格式的用法。

一、代数方程的符号解MATLAB7.0中求代数方程的符号解是通过调用solve函数实现的。

用solve函数求解一个代数方程时的调用格式一般是:solve('代数方程','未知变量')或x=solve('代数方程','未知变量')当未知变量为系统默认变量时,未知变量的输入可以省略。

当求解由n个代数方程组成的方程组时调用的格式是:[未知变量组]=solve('代数方程组','未知变量组')未知变量组中的各变量之间,代数方程组的各方程之间用逗号分隔,如果各未知变量是由系统默认的,则未知变量组的输入可以省略。

实例1、求解高次符号方程和方程对y的解。

>> syms x y z a b %定义符号变量>> solve(x^4-3*a*x^2+4*b) %求解高次方程ans =1/2*(6*a+2*(9*a^2-16*b)^(1/2))^(1/2)-1/2*(6*a+2*(9*a^2-16*b)^(1/2))^(1/2)1/2*(6*a-2*(9*a^2-16*b)^(1/2))^(1/2)-1/2*(6*a-2*(9*a^2-16*b)^(1/2))^(1/2)>> solve(x^3+2*a*x*y-3*b*y^2,y) %对指定变量求解方程ans =1/6/b*(2*a+2*(a^2+3*b*x)^(1/2))*x1/6/b*(2*a-2*(a^2+3*b*x)^(1/2))*x实例2、求解多元高次方程组>> [x,y]=solve('x^3+2*x*y-3*y^2-2','x^3-3*x*y+y^2+5') %求解多元高次方程组x =1.8061893129091900210106914427639+1.1685995398225344682988775209345*i.51233671712308192620449202726936+1.0694475803263816285960240820218*i-1.2247760300322719472151834700333+.35066213508454219362158900429401*i-1.2247760300322719472151834700333-.35066213508454219362158900429401*i.51233671712308192620449202726936-1.0694475803263816285960240820218*i1.8061893129091900210106914427639-1.1685995398225344682988775209345*iy =1.8086294126483514370835126464657+1.9432962587476317909683476452237*i.17307087932198664953847299268063-.78620181218420502898925154555661*i-.61451279197033808662198563914677-.89207785198625780793629825881329*i-.61451279197033808662198563914677+.89207785198625780793629825881329*i.17307087932198664953847299268063+.78620181218420502898925154555661*i1.8086294126483514370835126464657-1.9432962587476317909683476452237*i实例3、求解方程组的解。

>> [x,y,z]=solve('x-2*y-4','x^2-2*x*y+y-z','x^2-y*z+z')x =29/5-1/5*721^(1/2)29/5+1/5*721^(1/2)y =9/10-1/10*721^(1/2)9/10+1/10*721^(1/2)z =241/10-9/10*721^(1/2)241/10+9/10*721^(1/2)实例4、求解超越方程的解。

>> solve('x*2^x-1') %求解超越方程ans =1/log(2)*lambertw(log(2))注:lambertw是一个函数,lambertw(x)表示方程w*exp(w) = x的解w。

其数值可以在命令窗口输入该函数得到。

>> lambertw(log(2))ans =0. 4444Examples:solve('p*sin(x) = r') chooses 'x' as the unknown and returnsans =asin(r/p)[x,y] = solve('x^2 + x*y + y = 3','x^2 - 4*x + 3 = 0') returnsx =[ 1][ 3]y =[ 1][ -3/2]S = solve('x^2*y^2 - 2*x - 1 = 0','x^2 - y^2 - 1 = 0') returnsthe solutions in a structure.S =x: [8x1 sym]y: [8x1 sym](结构型变量)[u,v] = solve('a*u^2 + v^2 = 0','u - v = 1') regards 'a' as aparameter and solves the two equations for u and v.S = solve('a*u^2 + v^2','u - v = 1','a,u') regards 'v' as aparameter, solves the two equations, and returns S.a and S.u.[a,u,v] = solve('a*u^2 + v^2','u - v = 1','a^2 - 5*a + 6') solvesthe three equations for a, u and v.二、符号线性方程(组)的求解符号线性方程(组)的求解与数值线性方程(组)的求解方法相同,采用矩阵左除或函数linsolve,格式为:X=A\B 或X=sym(A)\sym(B) 或X=linsolve(A,B)。

其中A为线性方程组的系数矩阵,B为方程右侧的常数列矩阵。

实例5、求符号线性方程组的符号解。

>> A=sym('[1 2 3;-1 9 2;2 0 3]'); %定义符号矩阵A>> B=[a;b;1]; %定义符号矩阵B>> x=A\B %求解方程x =6/13*b+23/13-27/13*a3/13*b+5/13-7/13*a-4/13*b-11/13+18/13*a三、非线性符号方程的求解非线性符号方程(组)F(X)=0中X是一个向量,求解显示的结果也是一个向量。

它不仅可以用调用solve函数求解,也可以调用函数fsolve求解,而函数fsolve不是MATLAB符号工具箱的函数,它位于优化工具箱内。

实例6、求解非线性符号方程组,用solve函数和fsolve函数起始点为x0=[0;0]各自求解。

(1)solve函数求解>> syms x1 x2 %定义符号变量>> [x1,x2]=solve('x1-3*x2=sin(x1)','2*x1+x2=cos(x2)','x1','x2') %求解方程组x1 =.49662797440907460178544085171994x2 =.67214622395756734146654770697884e-2(2)fsolve函数求解先在文件编辑窗口编写如下M文件,并存于系统的work目录下。

function F=myfun(x)F=[x(1)-3*x(2)-sin(x(1));2*x(1)+x(2)-cos(x(2))];然后在命令窗口求解:>> x0=[0;0]; %设定求解初值>> options=optimset('Display','iter'); %设定优化条件>> [x,fv]=fsolve(@myfun,x0,options) %优化求解%MATLAB显示的优化过程Norm of First-order Trust-regionIteration Func-count f(x) step optimality radius0 3 1 2 11 6 0.000423308 0.5 0.0617 12 9 5.17424e-010 0.00751433 4.55e-005 1.253 12 9.99174e-022 1.15212e-005 9.46e-011 1.25Optimization terminated: first-order optimality is less than options.TolFun.x =0.49660.0067fv =1.0e-010 *0.31610.0018四、常微分方程的符号解含有自变量、未知函数和未知函数导数(或微分)的等式叫微分方程。

相关主题