<span style="font-size:18px;">% 函数的积分问题Matlab实现 %% 函数极值点 % 1、一元函数的极小值点 % 实例:求f(x)=x^3-x^2-x+1在区间[-2,2]的极小值点 f=@(x)x.^3-x.^2-x+1 x=fminbnd(f,-2,2) %使用fminbnd()函数求解一元函数的极小值点,参数分别为f(x)和区间短点 y=f(x) %极小值点对应的函数值 %结果 % f = % @(x)x.^3-x.^2-x+1 % x = % 1.0000 % y = % 3.5776e-10 % 2、求解一元函数的极大值:可以求解-f(x)或者1/f(x)的极小值 % 实例:求x^4-6x^2+8x+17在区间[1,3]上的极大值 f=@(x)-x.^4-6.^2+8*x+17 %求-f(x)的极小值就是f(x)的极大值 x=fminbnd(f,1,3) y=-f(x) %结果 % f = % @(x)-x.^4-6.^2+8*x+17 % x = % 3.0000 % y = % 75.9952 % 2、多元函数的极小值点 % 求解多元函数的极小值点主要有两种方法:单纯行下山法和拟牛顿法 % x=fminsearch(fun,x0) 单纯行下山法求解多元函数极值点的最简单格式 % [x,fval,exitflag,output]=fminsearch(fun,x0,ptionas,p1,p2...) 完整格式 % x=fminunc(fun,x0)拟牛顿法的简单形式 % [x,fval,exitflag,output,grad,hessian]=fminunc(fun,x0)拟牛顿法的简单形式 % 具体实例 % 求解函数f(x)=100(x2-3x1^2)^2+(1-2x1)^2的极小值点 y=@(x)100*(x(2)-3*x(1)^2)^2+(1-2*x(1))^2 [x,fval]=fminsearch(y,[-3,3]) %结果 % y = % @(x)100*(x(2)-3*x(1)^2)^2+(1-2*x(1))^2 % x = % 0.5000 0.7500 % fval = % 5.4048e-10 %% 函数积分 % 1、一元函数的数值积分 % 函数积分等于对应函数图形围成的面积 % 梯形法数值积分函数trapz()通过计算若干个梯形的面积求和来近似函数的积分 % 实例 % 求sinx在-pi到pi的积分 x=[-pi:0.001:pi]; %自变量之间的间距越小则积分结果越精确 y=sin(x); area=trapz(x,y) % 运行结果(sinx为奇函数,在对称区间进行积分,结果为0) % area = % -1.7169e-08 % 2、辛普森数值积分 % 辛普森数值积分quad()和科茨数值积分quadl()比梯形法数值积分函数trapz()计算结果更精确一些 % q=quad('f(x)',x1,x2) 表示自适应递归地辛普森方法从积分区间[x1,x2]对函数f(x)进行积分 % 积分的相对误差在1e-3范围内。输入参数中的'f(x)'是一个字符串,表示积分函数的表达式 % 当输入的是向量时返回值必须是向量形式 % q=quad('f(x)',x1,x2,tol) 积分的误差在tol范围内 % q=quad('f(x)',x1,x2,tol,trace) 当输入的参数trace不是0的时候,以动态点图的形式实现积分的整个过程 % q=quad('f(x)',x1,x2,tol,trace,p1,p2...)表示允许输入参数p1,p2直接输给函数f(),在这种情况下,当tracehe % tol为默认值时,需要输入空矩阵 % 实例 : 计算x^2+x-5在[0,5]上的积分 quad('x.^2+x-5',0,5) % 结果 % ans = % 29.1667 % 科茨数值积分:quadl()函数,语法跟辛普森数值积分函数quad()基本类似 % 实例 : 计算x^2+x-5在[0,5]上的积分 quadl('x.^2+x-5',0,5) % 结果 % ans = % 29.1667 % 多重数值积分,在医院积分的基础上再次积分,如二重积分,三重积分等 % 1)二重积分:使用dblquad()函数,根据dxdy的顺序,x为内积分变量,y为外积分变量。 % 先计算内积分变量,在根据内积分的中间结果计算外积分变量 % 具体使用方法: % q=dblquad(fun,minx,maxx,miny,maxy) 计算函数在[minx,maxx,miny,maxy]上的二重积分 % q=dblquad(fun,minx,maxx,miny,maxy,tol) tol用来指定绝对计算精度 % 实例:计算在矩形区域内求函数F=ysin(x)+xcos(y)在[pi,2*pi,0,pi]上的二重积分 F=@(x,y) y*sin(x)+x*cos(y); q=dblquad(F,pi,pi*2,0,pi) % 结果 % q = % -9.8696 % 2)三重积分使用triplequad()函数来实现,方法如同二重积分dblquad()类似,只不过多添加一个dz </span>
Matlab基础学习------------------函数的极值、积分问题Matlab实现
原文地址:http://blog.csdn.net/z1137730824/article/details/39930411