matlab(三)数值计算(包含建立函数的三种方式)

LU分解和恰定方程的解

LU分解

  • [L,U] = lu(X),其中x是任意方阵,L是下三角矩阵,U是上三角矩阵,满足LU=X
  • [L,U,P] = lu(X),其中x是任意方阵,L是下三角矩阵,U是上三角矩阵,P是置换矩阵,满足:PX=LU
  • Y = lu(X),下三角矩阵和上三角矩阵合并在Y中给出,满足Y = L+U-I,损失置换矩阵P的信息(I是单位矩阵)

恰定方程组的解

对于方程Ax = b,A为n×m矩阵:

  • 若n = m,为恰定方程
  • 若n > m,为超定方程
  • 若n < m,为欠定方程

恰定方程求解方法:

  • x = inv(A)*b;A的逆阵乘b
  • x = A\b;A左除b,这个方法运算速度快
  • x = U(L\b);其中 U(L\b) = (L*U)\b

矩阵特征值和特征向量

  • E = eig(A), 求矩阵A的全部特征值,构成向量E.
  • [V, D] = eig(A),求矩阵A的特征向量矩阵V和特征对角矩阵D,满足AV=VD,D是一个对角矩阵,其对角线上的元素是特征值,V中的对应列是特征向量
  • [V, D] = eig(A, ‘nobalance’),当A中有截断误差数量级相差不大时,该指令更加精确,'nobalance’起误差调节作用

函数的零点

一元函数的零点

可以画图解, 取点函数[xx, yy] = ginput(1); (1表示取一个点), 也可以用函数解
x = fzero(fun, x0); fun是一元函数名, x0表示初始值.
[x, fval, exitflag, output] = fzero(fun, x0, options); options为优化参数选项, 由函数optimset()设定.
fun可以是字符串, 内联函数, M函数文件名的函数句柄.
fzero()只能返回一个局部零点,而不能寻找到所有的零点

多元函数的零点

x = fsolve(fun, x0);
[x, fval, exitflag, output] = fsolve(fun, x0, options);
零点精度由options. TolFun控制, 其缺省值是1.0000e-006.

函数的极值点

一元函数的极小值点

x = fminbnd(fun, x1, x2); x1和x2是区间范围.
x = fminbnd(fun, x1, x2, options);
也可返回[x, fval], x是极小值点, fval是极小值.
以及[x, fval, exitflag]和[x, fval, exitflag, output]

多元函数的极小值

无约束条件

单纯形法:
x = fminsearch(fun, x0); 其他输出形式同上
拟牛顿法:
x = fminunc(fun, x0, options);
[x, fval, exitflag, output, grad, hessian] = …;grad是x处的梯度值, hessian是x处的hessian值.
当函数大于2次时,拟牛顿法更有效; 当函数不连续时,单纯形法更有效.

有约束条件

在这里插入图片描述

数值积分

一元函数积分

q = quad(fun, a, b); 自适应Simpson法.
在这里插入图片描述
tol默认为10e-6, 可以手动更改. tol, trace, p1, p2均可缺省.
quadl(); lobatto法, 精度更高.
在这里插入图片描述
例如:

 fun = inline(' 1./(x.^3 - 2 * x- 5)', 'x');%内联函数, 也可用.m文件建立函数
 Q1 = quad(fun, 0, 2);
 Q2 = quadl(fun, 0, 2);
``
## 多重积分
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200330205811176.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1cmVseV9aaHU=,size_16,color_FFFFFF,t_70)
method是积分方法, 缺省时是Simpson法. 
例如:
```matlab
 Q = dblquad(@(x, y)(y*sin(x) + x*cos(y)), pi, 2*pi, 0, pi);

或通过.m文件建立函数:
.m文件:

function z = func1(x,y);
z = y*sin(x) + x*cos(y);

保存后输入命令:

Q = dblquad(@func1, pi, 2*pi, 0, pi);

常微分方程

在这里插入图片描述
刚性; 特征值相差非常大就是刚性的, 否则就是非刚性的. 但是我们无法直接判断它是刚性的还是非刚性的, 因此, 可以用刚性函数解一下, 如果解不出来, 再换非刚性函数.
[t, y] = solver(odefun, tspan, y0, options);
[t, y, te, ye, ie] = solver(odefun, tspan, y0, options);
其中

  • solver为ode系列命令中的任意一个,
  • tspan是微分时间段;
  • y0是初值;
  • odefun是显式一阶常微分方程 y’ = f(t, y); 若为高阶微分方程, 则必须将其化为一阶形式.
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值