MATLAB--求解矩阵方程

MATLAB–求解矩阵方程

1.利用代数求解

clear;clc;
syms x y C0;
aoi = [0.41 0.41 0.01 -0.69 -0.69];
foi = [-3.08 -1.39 -2.04 -3.08 -1.39];
Foi = [6.23 6.72 5.88 5.35 5.99];

syms aoi_ foi_ Foi_ 

A = [5 aoi_ foi_;
 aoi_ aoi_^2 aoi_*foi_;
 foi_ aoi_*foi_ foi_^2];

xx = [C0;x;y];
z = [Foi_;aoi_*Foi_;foi_*Foi_];

X = (A*xx-z);
f1 = X(1,:);
f2 = X(2,:);
f3 = X(3,:);
[C0_ x_ y_] = solve(f1==0,f2==0,f3==0,C0,x,y);
argv = [C0_;x_;y_]
argv_ = [];
for i = 1:size(aoi,2)
    argv_temp = subs(argv,[Foi_,aoi_],[Foi(1,i),aoi(1,i)]);
    argv_ = [argv_ argv_temp];
end
argv_ = vpa(argv_,5)

2.直接根据AX=b得X=inv(A)*b

clear;clc;
syms x y C0;
aoi = [0.41 0.41 0 -0.69 -0.69];
foi = [-3.08 -1.39 -2.04 -3.08 -1.39];
Foi = [6.23 6.72 5.88 5.35 5.99];
syms aoi_ foi_ Foi_ 
X = [];
xx = [C0;x;y];
for i = 1:5
    A = [5 aoi(1,i) foi(1,i);
    aoi(1,i) aoi(1,i)^2 aoi(1,i)*foi(1,i);
    foi(1,i) aoi(1,i)*foi(1,i) foi(1,i)^2]
    z = [Foi(1,i);aoi(1,i)*Foi(1,i);foi(1,i)*Foi(1,i)]
    X = [inv(A)*z X];
end
 X

你可能感兴趣的:(MATLAB,matlab)