资源描述:
《matlab第八讲数值计算》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Matlab第八讲数值计算赵瑞数值计算线性方程组的解函数的零点函数的极值点数值积分曲线的多项式拟合一、线性方程组的解线性方程组AX=b,A为可逆矩阵,求X的命令:X=inv(A)*b%b输入成列向量,X返回列向量不推荐使用逆矩阵法2.推荐使用“除法”,精度比逆矩阵法高X=Ab%A左除b,相当于A-1×b,b输入成列向量,X返回列向量3.X=b/A%b右除A,相当于b×A-1,b输入成行向量,X返回行向量例:A=[1,1/2,1/3;1/2,1/3,1/4;1/3,1/4,1/5];b=[1;2;3];X1=inv(A)*bX2=Abb=b';
2、X3=b/A二、函数的零点对于任意函数f(x)=0来说,它可能有零点,也可能没有零点;可能只有一个零点,也可能有多个甚至无数个零点。因此,很难说出一个通用解法。一般说来,零点的数值计算过程是:先猜测一个初始零点或该零点所在的区间;然后通过一些计算,使猜测值精确化。利用fzero指令求一元函数零点[x,y]=fzero(fun,x0)fzero是根据函数是否穿越横轴来决定零点的,因此本程序无法确定函数曲线仅触及横轴和不穿越横轴的零点。例如:y=x2的零点,不穿越横轴。fun表示函数,数据类型是字符串x0是表示零点初始猜测。x0可以是标量或二元向量。
3、当x0取标量时,该指令将在它两侧寻找一个与之最靠近的零点;当x0取向量[a,b]时,该指令将在区间[a,b]内寻找一个零点。返回值x表示零点,y表示在这点的函数值注意:这个命令只能求x0附近的一个零点例:求函数f(x)=(sin2x)e-0.1x-0.5
4、x
5、的零点(1)首先用字符串表示函数,matlab命令:f='sin(x)^2*exp(-0.1*x)-0.5*abs(x)';(2)作图法观察函数零点分布,matlab命令:x=-10:0.01:10;y=sin(x).^2.*exp(-0.1*x)-0.5*abs(x);plot(x,y);
6、holdon%接着画,下面画出x轴xx=-10:0.01:10;yy=zeros(size(xx));plot(xx,yy,'r')观察f(x)与x轴的交点,大致可以看出有四个穿越x轴的交点,具体位置不是很清楚,所以希望图像能够局部放大,以便看得更加清楚(3)利用zoom和ginput指令获得零点的初始近似值,matlab命令:zoomon%在MATLAB指令窗中运行,获局部放大图,%或者直接在图形窗口单击放大镜图标即可局部放大之后的图形[xx,yy]=ginput(5)%在MATLAB指令窗中运行,用鼠标获5个零点猜测值。zoom offhol
7、doff(4)求靠近xx各点的精确零点,matlab命令[x1,y1]=fzero(f,xx(1))%求在xx(1)附近的精确零点[x2,y2]=fzero(f,xx(2))%求在xx(2)附近的精确零点[x3,y3]=fzero(f,xx(3))%求在xx(3)附近的精确零点[x4,y4]=fzero(f,xx(4))%求在xx(4)附近的精确零点[x5,y5]=fzero(f,xx(5))%求在xx(5)附近的精确零点运行结果x1=-2.0074y1=2.2204e-016x2=-0.5198y2=0x3=-0.5198y3=0x4=0.59
8、93y4=-5.5511e-017x5=1.6738y5=-1.1102e-016(5)求在xx(3)附近的精确零点从理论分析可知,函数f(x)=(sin2x)e-0.1x-0.5
9、x
10、0是函数的一个零点。但即便是以十分靠近该零点的值为搜索的初始值,也找不到 ,而却找到了另一个零点。原因是曲线没有穿越横轴。三、求函数极值点Matlab函数中只有处理极小值的指令。求的是局部极值1.一元函数极值[x,fval]=fminbnd(fun,x1,x2)%x1、x2表示被研究区间的左右边界。%x返回极小值点,fval返回该点的函数值。2.多元函数极值[x,
11、fval]=fminsearch(fun,x0)%单纯形法求多元函数极值点指令,x0为初始值[x,fval]=fminunc(fun,x0)%拟牛顿法求多元函数极值点指令,x0为初始值%fun均是用字符串表示函数[x,fval]=fminbnd('sin(x)',-pi,pi)%求sinx在[-π,π]的极小值点x=-1.5708fval=-1.0000[x,fval]=fminsearch('(x(1)-1)^2+(x(2)-x(1)^2)^2',[0,0])x=1.00001.0000fval=2.6131e-010[x,fval]=fmin
12、unc('x(1)^2+x(2)^2-x(1)*x(2)+2*x(1)-4*x(2)',[2,2])x=02fval=-4四、数值积分梯