00001 #include <iostream>
00002 #include <cmath>
00003 using namespace std;
00004 int main()
00005 {
00006
00007
00008
00009
00010 const double tps = 4.5;
00011 const double tppss = 19.6;
00012 const double tppps = 15.1;
00013 const double p = 0.07;
00014 const double psq = p * p;
00015 double h,vs,vp;
00016 const double starth = 20;
00017 const double endh = 45;
00018 const double deltah = 0.1;
00019 const double startvs = 3;
00020 const double endvs = 4;
00021 const double deltavs = 0.01;
00022 const double startvp = startvs * sqrt(3);
00023 const double endvp = endvs * sqrt(3);
00024 const double deltavp = 0.01;
00025 const double pickerror = 0.1;
00026 double deltatps, deltatppss, deltatppps;
00027 double besth,bestvp, bestvs;
00028 double bestdelta = 1e16;
00029 double currdelta;
00030 for (double currvs = startvs; currvs < endvs; currvs+=deltavs)
00031 {
00032 const double vsterm = sqrt(1./(currvs*currvs) - psq);
00033
00034 for (double currvp = startvp; currvp < endvp; currvp+=deltavp)
00035 {
00036 const double vpterm = sqrt(1./(currvp*currvp) -psq);
00037 for (double currh = starth; currh < endh; currh+=deltah)
00038 {
00039 deltatps = tps - currh *(vsterm - vpterm);
00040 deltatppps = tppps - currh *(vsterm + vpterm);
00041 deltatppss = tppss - 2*currh * vsterm;
00042 currdelta = deltatps * deltatps + deltatppps* deltatppps + deltatppss*deltatppss;
00043 if (currdelta < bestdelta)
00044 {
00045 besth = currh;
00046 bestvp = currvp;
00047 bestvs = currvs;
00048 bestdelta = currdelta;
00049 }
00050 }
00051 }
00052 }
00053 cout << "H: " << besth << " Vp: " << bestvp << " Vs: " << bestvs << " Delta: " << sqrt(bestdelta/3.) << " Vp/Vs: " << bestvp/bestvs << endl;
00054 }