第3章矩阵、数组和符号运算 7、符号方程求解 a线性方程组的符号解法 函数命令 linsolve用来求解线性方程组符号解。 对方程A*X=B, linsolve的调用格式为: X= linsolve(A,B)等同于X=sym(A)lsm(B) 10-10 > linsolve(A, B) A=-110-2 B=7 ans 0-210 4731475] 91/95 >2A=sm(1001020210m)(3764751 A > vpa( ans, 6) [10,-1,0 ans -1,10,-2] 995789] [0,-2,10 957895 >>B=([9;76]) 791579 B 矩阵A必须至少是行满秩的。当A的列数大于 9;76] 行数时,将给出解不惟一的警告提示
第3章 矩阵、数组和符号运算 7、符号方程求解 a.线性方程组的符号解法 函数命令 linsolve 用来求解线性方程组符号解。 对方程A*X=B,linsolve 的调用格式为: X = linsolve(A,B) 等同于 X = sym(A)\sym(B) >> A=sym('[10,-1,0;-1,10,-2;0,-2,10]') A = [ 10, -1, 0] [ -1, 10, -2] [ 0, -2, 10] >> B=('[9;7;6]') B = [9;7;6] − − − − = 0 2 10 1 10 2 10 1 0 A = 6 7 9 B >> linsolve(A,B) ans = [ 473/475] [ 91/95] [ 376/475] >> vpa(ans,6) ans = [ .995789] [ .957895] [ .791579] 矩阵 A 必须至少是行满秩的。当 A 的列数大于 行数时,将给出解不惟一的警告提示
第3章矩阵、数组和符号运算 b非线性方程的符号解法 用函数零点法求非线性方程的解有两个函数命令,即fero 和 sove。 fzero命令用于求一元函数零点 fsolve命令用于求解非线性方程组 首先需将方程f(x)=g(x)转化为F(x)=f(x)g(x)=0,方程组也 是如此;然后再将函数F(x)写成 MATLAB的m函数,以 便在fero和 fsolve命令中调用。 求解的过程为 先猜测一个初始零点,或者该零点大概所在的区间; 然后通过计算,使猜测值不断精确化,或使猜测区间不断 收缩,直到达到预先指定的精度为止
b. 非线性方程的符号解法 用函数零点法求非线性方程的解有两个函数命令,即fzero 和 fsolve。 fzero命令用于求一元函数零点 fsolve命令用于求解非线性方程组 首先需将方程 f(x)=g(x)转化为 F(x)=f(x)-g(x)=0,方程组也 是如此 ;然后再将函数 F(x)写成 MATLAB 的 m 函数,以 便在 fzero 和 fsolve 命令中调用。 求解的过程为: ▪先猜测一个初始零点,或者该零点大概所在的区间; ▪然后通过计算,使猜测值不断精确化,或使猜测区间不断 收缩 ,直到达到预先指定的精度为止。 第3章 矩阵、数组和符号运算
第3章矩阵、数组和符号运算 求一元函数零点命令ero的调用格式为: ◆x= fzero(iun,x0):求一元函数零点命令的最简形式; ◆〖x,val, exitflagl= fzero(fun,x0, options, P1,P2,):求一元函 数零点命令的完整格式。 x0是初始猜测的零点; options是优化迭代所采用的参数选项, options的缺省设置可以用命令 options= soptimset(' fzero)获得; P1,P2是向函数fu传递的附加参数。它的具体取名和函数fun中 致 "x是输出参数,为所求的零点自变量值 val是输出参数,为函数fu在x处的值; exitflag是描述函数fun的退出情况。若 exitflag>0,则表示找到函数 零点后退出;若 exitflag-<0,则表示没有找到零点或在搜索过程中遇到 了无穷大的函数值
第3章 矩阵、数组和符号运算 求一元函数零点命令fzero 的调用格式为: ◆ x = fzero(fun,x0):求一元函数零点命令的最简形式; ◆ [x,fval,exitflag] =fzero(fun,x0,options,P1,P2,...):求一元函 数零点命令的完整格式。 ▪x0 是初始猜测的零点; ▪options 是优化迭代所采用的参数选项,options的缺省设置可以用命令 options=optimset(’fzero’)获得; ▪P1,P2是向函数 fun 传递的附加参数。它的具体取名和函数 fun 中一 致; ▪x是输出参数,为所求的零点自变量值; ▪fval是输出参数,为函数fun 在 x 处的值; ▪exitflag是描述函数 fun 的退出情况。若 exitflag>0,则表示找到函数 零点后退出;若 exitflag<0,则表示没有找到零点或在搜索过程中遇到 了无穷大的函数值
第3章矩阵、数组和符号运算 用fero命令求解函数f(x)=x-4=5的零点 (1)建立函数f(x)的M文件。 D④日母AA function y=funl(x) y=x^4-4*x5; (2)建立水平横轴的M文件。 function y=fun(x) V=0 (3)用作图法估计函数零点位置 > fplot('funI, [-5, 5],r,) >> hold on > fplot('fun2, -5, 5],r,) t y ha tt nram D日A国 (4)用z00m和 input命令获得零点的初始近似值 在程序中输入下列命令,可得到函数的局部放大图及鼠标 操作线。 zoom on %局部放大命令 [tt]=input(1) Iy}= input(1)%用鼠标获取2个零点猜测值 zoom off %恢复原来图形大小
第3章 矩阵、数组和符号运算 用 fzero 命令求解函数 的零点 ( 1)建立函数 f(x)的 M 文件。 function y=fun1(x) y=x.^4-4*x-5; ( 2)建立水平横轴的 M文件。 function y=fun2(x) y=0; ( 3)用作图法估计函数零点位置。 >> fplot('fun1',[-5,5],'r') >> hold on >> fplot('fun2',[-5,5],'r') ( 4)用 zoom 和 ginput 命令获得零点的初始近似值 在程序中输入下列命令,可得到函数的局部放大图及鼠标 操作线。 zoom on %局部放大命令 [tt]=ginput(1) [yy]=ginput(1) %用鼠标获取 2 个零点猜测值 zoom off %恢复原来图形大小 ( ) 4 5 4 f x = x − x −
第3章矩阵、数组和符号运算 显示所得零点初始猜测值,结果为 0.98380.0001 1.87620.0091 (5)用函数 fzero命令求函数的精确零点 [ fval, exitflag}- fzero('funl't(1))%靠近t(1)点处的精确零点 fval, exitflag}= fzero('fun1,y(1))%靠近yy(1)点处的精确零点 结果为: Zero found near tt Zero found near yy 812 fval fva -6.2172e-015 exitflag exitflag
显示所得零点初始猜测值,结果为: tt = -0.9838 0.0001 yy = 1.8762 0.0091 (5)用函数 fzero 命令求函数的精确零点 [x,fval,exitflag]=fzero(’fun1’,tt(1),[]) %靠近 tt(1)点处的精确零点 [x,fval,exitflag]=fzero(’fun1’,yy(1),[]) %靠近 yy(1)点处的精确零点 结果为: Zero found near tt. x = -1 fval = 0 exitflag = 1 第3章 矩阵、数组和符号运算 Zero found near yy. x = 1.8812 fval = -6.2172e-015 exitflag = 1