optimally selecting elements in matrix to satisfy the system of equations
2 次查看(过去 30 天)
显示 更早的评论
Hi I am sarath, I am working on system of equations that have unknown matrices, which needs to be solved using optimization.
I have 3 different equations which are function of matrices (A,B,C)
A=[0 1 0 0; 0 0 1 0; 0 0 0 1; -a1 -a2 -a3 -a4]
B=[b1;b2;b3;b4]
C=[c1 c2 c3 c4]
I know the right hand side scalar values of all the three equations. I need to solve for this A, B, C matrices such that, those matrices should satisfy the right hand side scalar values.
Requesting for suggestions.
2 个评论
Amal George M
2018-8-2
编辑:Amal George M
2018-8-2
Hi Sarath,
Can you provide details on how these matrices are related or the equation which needs solving?
回答(1 个)
Aquatris
2018-8-3
编辑:Aquatris
2018-8-3
First of all, in Matlab you need to use expm() function for matrix exponentials.
Secondly, your 1st equation is wrong. the right hand side gives 4x1 row vector instead of scalar.
Other than that you can create a function like (i commented out 1st equation since it has errors, but you can look into what the error is in your equation derivation and fix it);
function err = deltah(x)
a1 =x(1);
a2 =x(2);
a3 =x(3);
a4 =x(4);
b1 =x(5);
b2 =x(6);
b3 =x(7);
b4 =x(8);
c1 =x(9);
c2 =x(10);
c3 =x(11);
c4=x(12);
A=[0 1 0 0; 0 0 1 0; 0 0 0 1; -a1 -a2 -a3 -a4];
B=[b1;b2;b3;b4];
C=[c1 c2 c3 c4];
I = eye(4);
% eq(1) = 2.12-C*(expm(0.9*A)*(expm(0.1*A)*(inv(I-expm(4.14*A)*(inv(A)* ...
% ((expm(4.14*A)-2*expm(4.04*A)+2*expm(1.97*A)-I)*B))))+inv(A)*(expm(0.1*A)-I)*1*B)- ...
% (inv(A)*(expm(0.9*A)-I)*B));
eq(2) = -0.1-C*(inv(A)*(inv(I-expm(4.14*A))*(expm(4.14*A)*(I-expm(0.1*A)))- ...
(expm(0.1*A)-I))*1*B);
eq(3) = 0.1-C*(inv(A)*(inv(I-expm(4.14*A))*(expm(4.24*A)-2*expm(4.14*A)+2*expm(2.07*A)- ...
expm(0.1*A))+(expm(0.1*A)-I))*1*B);
err = norm(eq);
end
Than, in the command window, you can use fminunc or any other optimization functions to have the solution and assign them to the correct variables;
x = fminunc(@deltah,rand(12,1));
a1 =x(1);
a2 =x(2);
a3 =x(3);
a4 =x(4);
b1 =x(5);
b2 =x(6);
b3 =x(7);
b4 =x(8);
c1 =x(9);
c2 =x(10);
c3 =x(11);
c4=x(12);
With the 1st equation omitted, the value of x I got is;
x =
0.3449
-0.0326
0.3539
1.0273
0.2967
0.7542
-0.5809
-0.4496
-1.0049
0.2925
-0.9052
0.8451
and using these, the values of right hand side of the 2nd equation was exactly -0.1000 and the 3rd equation was exactly 0.1000.
0 个评论
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!