如何用matlab来处理函数(非数组)的问题。
matlab技术支持搜索网站
值得一提的是,matlab中有关funtion 的函数都会以f开头,在其他方面的函数也有所体现。
基本函数
- expand(fun)→展开多项式
- factor(x)→质因数分解
常用函数
1.极限、微分、积分。
(详见笔记#01)
a.极限函数:limit( F, x, a, ‘right /left’ ):F在x→a时的(右/左)极限。
b.积分函数:
int(F,x):F关于x 的不定积分 (int后积分系数C仍不确定!)
int(F,x,a,b):F关于x在(a,b)区间的定积分
附:梯形数值积分trapz(x,Y,dim)
累计梯形数值积分cumtrapz(x,Y,dim)
c.微分函数:
diff(F,n):F的n阶导数
附:
数值梯度函数[FX,FY,FZ,…,FN] = gradient(F)
雅各比矩阵jacobian(f,v)
黑塞矩阵hessian(f,v)
2.fplot
(详见笔记#03)
(1)fplot(f) →在默认区间 [-5 5](对于 x)绘制由函数 y = f(x) 定义的曲线。(直接绘制函数)
(2)fplot(funx,funy) →在默认区间 [-5 5](对于 t)绘制由 x = funx(t) 和 y = funy(t) 定义的曲线。(绘制由参数方程定义的函数)
缺点:无法绘制多变量的隐函数,如输入 fplot(x1 ^2+x2 ^2-4) 会报错。
3.ezplot
在其他场景不推荐使用,但是在绘制隐函数时非常好用。
ezplot(fun2,[xmin,xmax])→在 xymin < x < xymax 和 xymin < y < xymax 域中绘制 fun2(x,y) = 0。(如果不加范围默认域是-2pi~2pi)
4.函数的最小值
fminsearch:使用无导数法计算无约束的多变量函数的最小值。
[x,fval] = fminsearch(fun,x0) →在点 x0 处开始并尝试求 fun 中描述的函数的局部最小值 x,最小值为fval。
fminunc:查找无约束多变量函数的最小值。
[x,fval] = fminunc(fun,x0)→在点 x0 处开始并尝试求 fun 中描述的函数的局部最小值 x,最小值为fval。
fmincon:找到受约束的非线性多变量函数的最小值
[x,fval]=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)→形如如图所示的约束的函数,从x0出发寻找fun的受约束最小值。
注意:
- nonlcon为函数调用格式,即@mycon,c(x)和ceq(x)则以下列格式写在函数mycon中:
funtion [c,ceq]=mycon(x)
…
end - 没有约束条件,在fmincon中相应的位置用空数组 [ ] 占据,如下所示:
A=[];
b=[];
…
x = fmincon(fun,x0,A,b,Aeq,beq);
fminbnd:查找单变量函数在定区间上的最小值。
[x,fval] = fminbnd(fun,x1,x2)→返回一个值 x,该值是 fun 中描述的标量值函数在区间 x1 < x < x2 中的局部最小值,最小值为fval。
不难发现,前两个是全局范围搜索最小值,后两个则是在指定范围内搜索最小值。
5.数据的输入和输出
数据的输入
x = input(prompt)→请求用户输入,prompt为提示文本。
数据的输出
disp(X)→直接在屏幕上显示变量X。
fprintf→将数据写入文本文件,也可以在屏幕上显示结果。
formatSpec = 'The array is %dx%d.\n';
A1 = 2;
A2 = 3;
fprintf(formatSpec,A1,A2)
----------------------------------------------------
输出结果:
The array is 2x3.
>>
注意:sprintf→将数据格式化为字符串或字符向量,而非进行输出。