Лабораторная работа №2
.docМосковский Государственный университет путей сообщения (МИИТ)
Отчет
Лабораторная работа №2
Пространственное интегрирование
Вариант №
Выполнил:
МОСКВА 2008
1.Решение в MathCad 14
2. Код программы
#include<iostream.h>
#include<conio.h>
#include<math.h>
const double a=6;
const double b=9;
static int k1=0;
static int k2=0;
static int k3=0;
double meth1(double h); //реализует метод прямоугольников
double meth2(double h); //реализует метод трапеций
double meth3(double h); //реализует метод Симпсона
double getV(double Value); //возвращает значение функции в точке
int main(void)
{
clrscr();
double S=0;
double E=pow(10,-6);
double n1,n2,n3,h1,h2,h3;
n1=pow(0.333*pow((b-a),3)/24/E,0.5); //длинна отрека ∆х для метода 1
n2=pow(0.333*pow((b-a),3)/12/E,0.5); // длинна отрека ∆х для метода 2
n3=pow(((pow((b-a),5)*0.0017)/(E*2880)),0.25); // длинна отрека ∆х для метода 3
h1=(b-a)/n1; //количество шагов для метода 1
h2=(b-a)/n2; //количество шагов для метода 2
h3=(b-a)/n3; //количество шагов для метода 3
cout<<"\n[Method Priamoyg]\n";
S=meth1(h1);
cout<<"H = "<<h1<<endl;
cout<<"Znachenie untegrala : "<<S<<endl;
cout<<"Numbers of step : "<<k1<<endl;
cout<<"\n[Method Trapetsii]\n";
S=meth2(h2);
cout<<"H = "<<h2<<endl;
cout<<"Znachenie untegrala : "<<S<<endl;
cout<<"Numbers of step : "<<k2<<endl;
cout<<"\n[Method Simsona]\n";
S=meth3(h3);
cout<<"H = "<<h3<<endl;
cout<<"Znachenie untegrala : "<<S<<endl;
cout<<"Numbers of step : "<<k3<<endl;
getch();
return 0;
}
//=======================
double getV(double Value)
{
return cos(logl(Value));
}
double meth1(double h)
{
double i1=a;
double i2=a+h;
double S=0;
while(i2<b)
{
S=S+getV((i2+i1)/2);
i1=i2;
i2+=h;
k1++;
}
S=S*h;
S=S+getV(b/2+i1/2)*(b-i1);
k1+=1;
return S;
}
double meth2(double h)
{
double i1=a;
double i2=a+h;
double Val1=getV(i1);
double Val2=getV(i2);
double S=0;
while(i2<b)
{
S=S+(Val1+Val2);
i1=i2;
i2+=h;
Val1=Val2;
Val2=getV(i2);
k2++;
}
S=S*h/2;
S=S+(getV(i1)+getV(b))*(b-i1)/2;
k2+=3;
return S;
}
double meth3(double h)
{
double i1=a;
double i2=a+h;
double Val1=getV(i1);
double Val2=getV(i2);
double S=0;
while(i2<b)
{
S+=(i2-i1)/6*(4*getV((i1+i2)/2)+Val1+Val2);
i1=i2;
i2+=h;
Val1=Val2;
Val2=getV(i2);
k3++;
}
S+=(b-i1)/6*(4*getV((i1+b)/2)+getV(i1)+getV(b));
k3=3*k3+5;
return S;
}
2.1. Листинг программы