1数据转换
1.单精度数据传hex
num2hex(single(1))
num2hex(1) %double
2.hex转单精度
typecast(uint32(hex2dec('3f800000')),'single') %hex转单精度 1
hex2num('4024000000000000') %hex转双精度10
3.初等变换
rref
4.非齐次方程
判断rank(A)和rank([A,b]);
无穷多解情况:
>> A=[1 -1 -1 2;2 -2 1 -5;1 -1 2 -7];
>> b=[2 1 -1]';
>> r=rank(A) r = 2
>> r1=rank([A,b]) r1 = 2
>> X0=A\b
Warning: Rank deficient, rank = 2, tol = 3.396629e-15.
X0 =
0
-1.3333
0
0.3333
>> B=null(A,'r')
B =
1 1
1 0
0 3
0 1
X0是一个特解,B中的第一列b1,是第二列是b2,方程组的通解为X=X0+c1*b1+c2*b2,其中c1,c2是任意常数。
唯一解情况:左除或者求逆即可。X=A\b或者X=inv(A)*b
5.求不定方程的整数解
例如:求解2*x+3*y+4*z=30的整数解
clear,clc,close all
f=[1 1 1];
intlinprog(f,[1 2 3],[],[],[2 3 4],30,[0 0 0],[30 30 30])
intlinprog是求解整数线性规划问题的函数,前面8个参数定义如下
f :目标函数的系数矩阵
intcon :整数所在位置([1 2 3]表示3个变量都是整数)
A :不等式约束的变量系数矩阵
b :不等式约束的资源数
Aeq :等式约束的变量系数矩阵
beq :等式约束的资源数
lb :变量约束下限
ub :变量约束上限
例2:29*a+30*b+31*c=366,求f=a+b+c整数解
clear,clc,close all
f=[1 1 1];
intlinprog(f,[1 2 3],[],[],[29 30 31],366,[1 2 1],[13 13 13])
或者使用循环
m=13;n=13;l=13;
disp('满足条件:29a+30b+31c=366的解')
for i=1:m
for j=1:n
for k=1:l
a=i;b=j;c=k;
f=366-(29*a+30*b+31*c);
if f==0
disp(['a=',num2str(i),' b=',num2str(j),' c=',num2str(k)])
end
end
end
end