定积分指令:integral
q = integral (fun,xmin,xmax)
q = integral (fun,xmin,xmax,Name,Value)
>> f = @(x)exp(-x.*x);
>> integral(f, 0, 1)
ans =
0.7468
方法2:符号计算
>> syms x
>> f = exp(-x.*x);
>> int(f, x, 0, 1)
ans =
(pi^(1/2)*erf(1))/2
dsolve(‘方程1’, ‘方程2’,…‘方程n’, ‘初始条件’, ‘自变量’)
在表达微分方程时,用字母D表示求微分,D2、D3等表示求高阶微分
>> dsolve('Du = 1 + u^2', 't')
ans =
tan(C5 + t)
1i
-1i
>> dsolve('D2y+4*Dy+29*y=0', 'y(0)=0,Dy(0)=15','x')
ans =
3*sin(5*x)*exp(-2*x)
数值分析函数
median:将每列从大到小排序,之后计算中位数
如第二列从大到小排序后,计算(11+7)/2
A =
4 8 -9
11 -12 4
-8 0 5
6 5 10
>> sum(A,2) % 各行元素之和
ans =
3
3
-3
>> sort(A,2)
ans =
-9 4 8
-12 4 11
-8 0 5
A =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
>> B = reshape(A ,4,4) % 将魔方阵重塑为4*4的矩阵
B =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
>> B = reshape(1:16 ,4,4) % 将魔方阵重塑为4*4的矩阵
B =
1 5 9 13
2 6 10 14
3 7 11 15
4 8 12 16
[V,D]=eig(A),求解矩阵A的特征值D与特征向量V,AV=VD
>> A=[0 1;-1 0];
>> [V,D] = eig(A)
V =
0.7071 + 0.0000i 0.7071 + 0.0000i
0.0000 + 0.7071i 0.0000 - 0.7071i
D =
0.0000 + 1.0000i 0.0000 + 0.0000i
0.0000 + 0.0000i 0.0000 - 1.0000i
[L,U] = lu(A)
将方阵A表示成一个换位的下三角方阵L和一个上三角矩阵U的乘积
>> A=[5 2 0;2 6 2;5 6 7];
>> [L,U] = lu(A)
L =
1.0000 0 0
0.4000 1.0000 0
1.0000 0.7692 1.0000
U =
5.0000 2.0000 0
0 5.2000 2.0000
0 0 5.4615
[Q,R] = qr(A)
将矩阵A表示成一个正交矩阵Q和一个上三角矩阵R的乘积
>> A=[1 2 3;4 5 6;7 8 9];
>> [Q,R] = qr(A)
Q =
-0.1231 0.9045 0.4082
-0.4924 0.3015 -0.8165
-0.8616 -0.3015 0.4082
R =
-8.1240 -9.6011 -11.0782
0 0.9045 1.8091
0 0 -0.0000
线性方程组:未知量均为一次的方程组(n元一次方程组)
矩阵形式:Ax = b
Ax = 0 称为齐次线性方程组
>> A=[1,-3,-1;1,-1,-19];
>> null(A)
ans =
0.9515
0.3058
0.0340
Ax = b 称为非齐次线性方程组
若秩(A) ≠ 秩(A,b),则无解;
若秩(A) = 秩(A,b) = n, 存在唯一解;
若秩(A) = 秩(A,b) < n, 存在无穷多解;
当方程有无穷多解时,通解是齐次线性方程组 Ax=0 的基础解系与 Ax=b 的一个特解之和。
左除法 A\B 求解矩阵方程AX=B
右除法 B/A 求解矩阵方程XA=B
若为唯一解, A\B将给出正确的解;
若方程组有无穷多解, A\B将给出一个特解,通解是齐次线性方程组 Ax=0 的基础解系null(A)与 A\B之和;
若方程组无解, A\B给出最小二乘意义上的近似解。
>> A = [1 2 ; 3 -2];
>> B = [1;4];
>> rank(A)
ans =
2
>> rank([A,B])
ans =
2
>> A\B
ans =
1.2500
-0.1250
>> A = [2 -2 3 ; -1 1 -2 ; 1 -1 1];
>> B = [5;3;8];
>> r1 = rank(A);
>> r2 = rank(B);
>> x0 = A \ B
警告: 矩阵为奇异工作精度。
x0 =
NaN
NaN
-11
% 由于不能直接解出,结果为非数,所以需要给原方程加上一个方程:0x1+0x2+0x3 = 0
>> a = [2 -2 3; -1 1 -2; 1 -1 1; 0 0 0];
>> b = [5;3;8;0];
>> x1 = a \ b;
>> x = null(a)
x =
-0.7071
-0.7071
0.0000
例如:
2x3 - x2 + 3 <——> [2, -1, 0, 3] 系数中的0不能省
>> A = [1 2 3 4 5];
>> poly2sym(A)
ans =
x^4 + 2*x^3 + 3*x^2 + 4*x + 5
% 已知根向量A = [1 -31 -80 0 0];
>> A = [1 -31 -80 0 0];
>> PA = poly(A);
>> poly2sym(PA)
ans =
x^5 + 110*x^4 + 2369*x^3 - 2480*x^2
polyval(p, x) % 计算多项式p在x点的值
>> p = [2 -1 0 3];
>> x = 2;
>> y = polyval(p, x)
y =
15
>> x = [-1 2 : -2 1];
>> y = polyval(p, x)
y =
0 4
求多项式的根就是求解多项式f(x)=0的值。
roots(多项式向量)函数来求解出这个多项式的根。
>> P = [4 -3 2 -5];
>> x = roots(P)
x =
1.2007 + 0.0000i
-0.2253 + 0.9951i
-0.2253 - 0.9951i
>> x = [3 3.6];
>> polyval(P, x)
ans =
82.0000 149.9440
>> a = [1 2 3];
>> b = [4 5 6];
>> c = conv(a, b)
c =
4 13 28 27 18
>> poly2str(c, 'x')
ans =
4 x^4 + 13 x^3 + 28 x^2 + 27 x + 18
>> a = [1 2 3];
>> b = [4 5 6];
>> [div, rest] = deconv(a, b)
div =
0.2500
rest =
0 0.7500 1.5000
多项式拟合:利用已知的离散数据估计未知点过程
>> x = 1949 : 5 : 1994;
>> y=[541.67,602.66,672.09,704.99,806.71,908.59,975.42,1034.75,1106.76,1176.74];
>> p = polyfit(x,y,3)
p =
1.0e+07 *
-0.0000 0.0000 -0.0049 3.1995
>> x1 = 1995
x1 =
1995
>> y1 = polyval(p,x1);
>> y1 = polyval(p,x1)
y1 =
1.1821e+03