Você está na página 1de 3

1

0.2

0.4

Sv vs Time Period
0.6

0.8

1.2

1.4

1.6

0.1

0.01
Sv in the range of 0.6 to 33
0.001

0.0001

Spv vs Time Period


1
0

0.2

0.4

0.6

0.8

1.2

1.4

1.6

0.1

0.01

0.001

0.0001

Spv in the range 0.6-33

CODE
#include <iostream>
#include <fstream>
#include <math.h>
#include <iomanip>
using namespace std;
int main(){
int i,j,k;
float a[1600], zeta1=0.05, zeta2=0.02, a11=0, a12=0, a21=0, a22=0, b11=0, b12=0, b21=0,
b22=0,power=0,delt=0.02, zeta_ratio=0.0;
float omega=0.1, x[1600], xdot[1600], max_x[400], max_xdot[400], omegad=0.1, ratio_1=1,
ratio_2=1, pi=3.14159265359;
ofstream myfile;
ifstream infile ("elcentro/data.dat");
i=0;
if (infile.is_open())
{
while ( infile.good() )
{
infile>>a[i];
i++;
if (i>=1559)
break;
}
infile.close();
}
else cout << "Unable to open file";
zeta_ratio=zeta1/sqrt(1-zeta1*zeta1);
for (omega=0.1*2*pi, k=0; omega<=33*2*pi; omega=omega+0.1*2*pi, k++) {
power=exp(-1*zeta1*omega*delt);
omegad=omega*sqrt(1-zeta1*zeta1);
ratio_1= (2*zeta1*zeta1-1)/(omega*omega*delt);
ratio_2= (2*zeta1)/(omega*omega*omega*delt);
a11= power*( cos( omegad*delt ) + zeta_ratio*sin( omegad*delt ));
a12= power/omegad * sin( omegad*delt );
a21= -1*omega/sqrt(1-zeta1*zeta1) * power * sin( omegad*delt );
a22= power*( cos( omegad*delt ) - zeta_ratio*sin( omegad*delt ));

b11= power*( (ratio_1 + zeta1/omega) * sin( omegad*delt )/omegad + (ratio_2 +


1/(omega*omega)) * cos( omegad*delt )) - ratio_2;
b12= power*( (ratio_1) * sin( omegad*delt )/omegad + (ratio_2) * cos( omegad*delt )) 1/(omega*omega) + ratio_2;
b21= ( (1-a11)/(omega*omega*delt) ) - a12;
b22= -b21-a12;
x[0]=0; xdot[0]=0;
max_x[k]=x[0];
max_xdot[k]=xdot[0];
for (int i=1; i<1558; i++) {
//x[(i+1)]=x[i]*a11 + xdot[i]*a12 + b11*a[i] + b12*a[(i+1)];
//xdot[(i+1)]=x[i]*a21 + xdot[i]*a22 + b21*a[i] + b22*a[(i+1)];
x[(i)]=x[(i-1)]*a11 + xdot[(i-1)]*a12 + b11*a[(i-1)] + b12*a[(i)];
xdot[(i)]=x[(i-1)]*a21 + xdot[(i-1)]*a22 + b21*a[(i-1)] + b22*a[(i)];
if ( fabs(x[(i+1)]) > max_x[k] )
max_x[k]=x[(i+1)];
if ( fabs(xdot[(i+1)]) > max_xdot[k] )
max_xdot[k]=xdot[(i+1)];
}
}

myfile.open ("Homework 7_testing_my.csv");


for (omega=0.1, k=0; omega<=33.0; omega=omega+0.1, k++) {
myfile<<fixed<<setprecision(5)<<omega<<" , "<<omega*max_x[k]<<" ,
"<<max_xdot[k]<<endl;
}
myfile.close();
cout<<a11<<"\t"<<a12<<"\n"<<a21<<"\t"<<a22<<"\n"<<endl<<endl<<endl;
cout<<b11<<"\t"<<b12<<"\n"<<b21<<"\t"<<b22<<"\t"<<endl;
return 0;
}

Você também pode gostar