Diffrent results using tf(ss(A,B,C,D)) or C*inv(s*I-A)*B+D

조회 수: 1 (최근 30일)
rupprechtt
rupprechtt 2019년 9월 7일
댓글: rupprechtt 2019년 9월 7일
Why do I obtain diffrent results?
A = rand(3,3);
B = rand(3,1);
C = rand(4,3);
D = rand(4,1);
% using matlab function
tf1 = tf(ss(A,B,C,D));
% calculated by hand
s = zpk('s');
tf2 = D + C*inv(s*eye(3)-A)*B;
Does anyone have an idea why tf1-tf2 is not zero?
Thank you

채택된 답변

Raj
Raj 2019년 9월 7일
The results are not different. They are same. Minor differences can be due to numerical/computational tolerances and accuracy. At any given natural frequency, magnitude of (tf1-tf2) is indeed very close to zero. You can check the similarity yourself by comparing their bode plots like this:
bode(tf1)
hold on
bode(tf2)
  댓글 수: 3
Raj
Raj 2019년 9월 7일
Why are you 'unhappy' with the result of bode(tf1-tf2)? The magnitude of the difference as I mentioned earlier is in the order of 10^-13 which is very very small for almost any practical aspect.
You need even higher precision?
Capture.JPG
rupprechtt
rupprechtt 2019년 9월 7일
Uhh.. my bad!
I have overlooked the factors .. (what an idiot)
Thanks a lot!

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Get Started with Control System Toolbox에 대해 자세히 알아보기

제품


릴리스

R2018b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by