MATLAB中一些基本函数的用法。
- 匿名函数定义
1 | >> f = @(x)x.^2; |
1 | >> g = @(x,y)x.^2+y.^2; |
1 | >> g = @(a,b)@(x)a*x+b; |
- 嵌套函数
1 | function r =MytestFunction(input) |
1 | >> r = MytestFunction(5) |
1 | function r = NestFunction3(a) |
1 | >> NestFunction3(5) |
注:变量作用域范围,嵌套函数访问父函数的变量,可以在函数定义里面直接拿来用,父函数访问访问嵌套函数必须在经过调用之后才能调用.
第二重嵌套函数可以调用不包含它的第一重嵌套函数,即子函数可以求助于叔伯,但第三重函数不能调用它的第二重嵌套函数,非直系关系。
函数关系比喻成父子孙等关系,函数调用比喻成一个人求助一个人,规律如下:
父亲可以求助儿子,儿子可以求助父亲,父子可以互相求助。一个人不能求助孙子,重孙等后代,但可以求助直系祖宗如祖父曾祖父等以及和直系祖宗是亲兄弟的先人。一个人可以求助亲兄弟或者亲叔伯,不能求助侄儿。
- 求函数零点
1 | >> f = @(x) exp(x)+x.^2+x.^(sqrt(x))-100; |
fzero 函数为求零点的函数,第二个参数是基准点,即求 3 附近的零点.
1 | >> x0 = fzero(f,[2,5]) |
另外可以规定区间如上所示。
- 显式表达 $y$ 关于 $x$ 的隐函数
例如:$(e^y+x^y)^(1/y)-x^2y =0$
则可以用匿名函数表示为:
1 | >> y = @(x)fzero(@(y)(exp(y)+x^y)^(1/y)-x^2*y,1) |
在外面嵌套一层 arrayfun 即可向量输入
1 | >> y = @(xx)arrayfun(@(x)fzero(@(y)(exp(y)+x^y)^(1/y)-x^2*y,1),xx) |
例如:对于 $a=[0,0,01,0,02,…,2]$, 求方程 $f (x)=e^x+x^a+x^{\sqrt x} = 100$ 的 $x$ 的值,并画出 $a$ 和 $x$ 的图像
则可以把它理解为一个隐函数关于 $x$ 和 $y$ 变化.
1 | x = @(a) fzero(@(x) exp(x)+x^a+x^(sqrt(x))-100,4) |
或者
1 | >> f = @(a)@(x)exp(x)+x^a+x^(sqrt(x))-100 |
- 创建符号对象
1 | >> a = sym('5'); |
- 常用函数
vpa 指定有效数字位数显示符号数值对象,如
1 | >> vpa(pi,30) |
求极限和导数和级数:
1 | limit(f,v,a) %求极限lim v->a f(v) |
例子:
求极限 $\mathop{lim}\limits_{n\rightarrow \infty} \frac{n^{n+\frac{1}{2}}}{e^n \times n!}$
1 | >> syms n |
1 | intf = int(f,v) %求以v为自变量的函数f的不定积分 |
求三重积分:
1 | >> syms x y z |