How to calculate an area with obtained nodes?
4 views (last 30 days)
Show older comments
Hi Everyone,
I am going to calculate the area covered by nodes in the plot, but I do not know how! Could someone help me?
Thank you,
The code is copied as bellow:
clear all;clc;close all
%%
Mass=60;Lenght=1;g=10;Ja=60;alpha=(Mass*Lenght*g)/Ja;Zeta3=411.67/Ja;
Time_Delay=0.2;
N=7;
%%
s1=0;
s2=-Time_Delay;
[Phi_0_s,Phi_TD_s,Diff_Phi_TD_s]=Shape_Function(N,Time_Delay,s1,s2);
%%
[M,K]=M_K(N,Time_Delay);
%%
counter=[];
KP=0:0.1:3;
KD=0:0.1:3;
for ii=1:length(KP)
KP(ii)
for i=1:length(KD)
KP1=Zeta3*KP(ii);
KD1=Zeta3*KD(i)
L=Evaluation(KP1,KD1,alpha,Phi_0_s,Phi_TD_s,M,K);
Max_Real_EignValues=max(real(eig(L)));
if Max_Real_EignValues<0
plot(KP(ii),KD((i)),'r*','MarkerSize',5)
hold on
end
end
end
hold on
%% Below Lines are the functions related to top calculations
function [Phi_0_s,Phi_TD_s,Diff_Phi_TD_s]=Shape_Function(N,Time_Delay,s1,s2)
Phi_0_s(1)=1;
Phi_0_s(2)=1+2*s1/Time_Delay;
for k=3:N
Phi_0_s(k)=((2*k-3)*Phi_0_s(2)*Phi_0_s(k-1)-(k-2)*Phi_0_s(k-2))/(k-1);
end
Phi_0_s=Phi_0_s';
%%
Phi_TD_s(1)=1;
Phi_TD_s(2)=1+2*s2/Time_Delay;
for k=3:N
Phi_TD_s(k)=((2*k-3)*Phi_TD_s(2)*Phi_TD_s(k-1)-(k-2)*Phi_TD_s(k-2))/(k-1);
end
Phi_TD_s=Phi_TD_s';
%%
syms s
Phi_TTD_s=sym(zeros(1,N));
Phi_TTD_s(1)=1;
Phi_TTD_s(2)=1+2*s/Time_Delay;
for k=3:N
Phi_TTD_s(k)=((2*k-3)*Phi_TTD_s(2)*Phi_TTD_s(k-1)-(k-2)*Phi_TTD_s(k-2))/(k-1);
end
Diff_Phi_TD_s=diff(Phi_TTD_s,s);
Diff_Phi_TD_s=eval(subs(Diff_Phi_TD_s,s,-Time_Delay));
Diff_Phi_TD_s=double(Diff_Phi_TD_s);
Diff_Phi_TD_s=Diff_Phi_TD_s';
end
%%
function [A,B]=M_K(N,Time_Delay)
Delta=zeros(N,N);
A=zeros(N,N);
B=zeros(N,N);
for i=1:N
for j=1:N
if i==j
Delta(i,j)=1;
else
Delta(i,j)=0;
end
end
end
for i=1:N
for j=1:N
A(i,j)=(Time_Delay*Delta(i,j))/(2*i-1);
if i<j
if rem(i+j, 2) == 1
B(i,j)=2;
else
B(i,j)=0;
end
end
end
end
end
%%
function [L]=Evaluation(KP1,KD1,alpha,Phi_0_s,Phi_TD_s,M,K)
kp=KP1;
kd=KD1;
%% G1&G2
G1=alpha*Phi_0_s'-kp*Phi_TD_s';
G2=-kd*Phi_TD_s';
%% C3
C3=Phi_0_s'*inv(M)*Phi_0_s;
%% X Matrix
X1=(Phi_0_s*Phi_0_s')/C3;
X2=-((Phi_0_s*Phi_0_s'/M)*K)/C3;
X3=(Phi_0_s*G1)/C3;
X4=(Phi_0_s*G2-(Phi_0_s*Phi_0_s'/M)*K)/C3;
%% L Matrix
L1=K/M+X2/M;
L2=X1/M;
L3=X3/M;
L4=K/M+X4/M;
L=[L1 L2;L3 L4];
end
3 Comments
Accepted Answer
darova
on 5 Aug 2021
An example of boundary function. polyarea is used to calculate area
r = 1;
x = linspace(-1,1,20);
y = sqrt(r^2 - x.^2);
x = [x; x];
y = [y; -y];
x = x(:);
y = y(:);
k = boundary(x(:),y(:));
plot(x,y,'.-r')
line(x(k),y(k))
legend('original order of points', 'boundary order')
polyarea(x(k),y(k))
pi*r^2
More Answers (0)
See Also
Categories
Find more on Logical in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!