Программирование на C / C++ / Курсовая работа / Зарипов / Отчёт по курсовой
.docМИНИСТЕРСТВО ОБЩЕГО И ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
РОССИЙСКОЙ ФЕДЕРАЦИИ
УФИМСКИЙ ГОСУДАРСТВЕННЫЙ АВИАЦИОННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
Кафедра ДВС
Отчёт по курсовой работе
по дисциплине “Информатика”
Выполнил: студент гр. Т27Д-216
Зарипов Д.З.
Принял: доц. каф. ДВС
Рудой И.Б.
Уфа 2006
1. Тексты заданий
-
Написать программу для решения уравнения методом итераций.
-
Написать программу для интегрирования методом Симпсона.
-
Написать программу для нахождения коэффициентов аппроксимацион-ного многочлена методом наименьших квадратов.
-
Написать программу для решения дифференциального уравнения методом Рунге-Кутта.
-
Написать программу для нахождения минимума (максимума) целевой функции методом поиска.
2. Тексты исходных кодов программ
2.1 Метод итераций.
{
double x, c, E=0.01;
c=3; // начальное приближение
do
{
x=c;
c=8*cos(x)-6;
}
while (fabs(x-c)>E);
Edit1->Text=FloatToStrF(c, ffFixed, 8, 3);
}
2.2 Метод Симпсона.
double INTEGRAL(double x)
{
return 1.2*pow(x,4)+2*pow(x,3)-24+pow(x,0.3);
}
void __fastcall TForm3::BitBtn1Click(TObject *Sender)
{
double a=4, // интервал
b=24, // определённого интеграла
E=1, // точность
S,
K1=0,
K2,
h; // шаг
double X[3];
int i, n=4;
h=(b-a)/4;
for (int j=0; j<15; j++)
{
K2=0;
for(i=2; i<n;i+=2)
{
X[2]=a+i*h;
X[1]=X[2]-h;
X[0]=X[1]-h;
S=INTEGRAL(X[0])+4*INTEGRAL(X[1])+INTEGRAL(X[2]);
K2+=S;
}
K2*=h/3;
if(fabs(K1-K2)<E) break;
else
{
K1=K2;
n*=2;
h/=2;
}
}
Edit1->Text=FloatToStr(K2);
}
2.3 Метод наименьших квадратов.
{
const int n=3, //порядок многочлена
m=8; //количество узлов интерполяции
int i, j, k;
float a[n+1][n+1]={0}, // коэффициенты СЛУ
b[n+1]={0}, // значения СЛУ
X[8]={2,4,6,8,10,12,14,16},
y[8]={1,5,-5,4,9,6,-8,-1},
x[6]={0}; // искомые коэффициенты
// нахождение коэффициентов СЛУ (метод наименьших квадратов)
for (i=0; i<=n; i++)
{
for (j=i; j<=n; j++)
{
for (k=0; k<m; k++)
{
if (X[k]!=0)
{
a[i][j]+=pow(X[k],(i+j));
if (i!=j) a[j][i]=a[i][j];
}
}
}
}
for(i=0; i<=n; i++)
{
for(k=0; k<m; k++)
{
if(X[k]!=0) b[i]+=pow(X[k],i)*y[k];
}
}
// Решение СЛУ методом Гаусса
float temp;
// Прямой ход метода Гаусса
for(k=0; k<=n-1; k++)
{
for (i=k+1;i<=n; i++)
{
temp=a[i][k]/a[k][k];
a[i][k]=0;
for(j=k+1;j<=n; j++)
{
a[i][j]=a[i][j]-temp*a[k][j];
}
b[i]=b[i]-temp*b[k];
}
}
x[n]=b[n]/a[n][n];
//Обратный ход метода Гаусса
for(i=n-1; i>=0; i--)
{
temp=0;
for(j=i+1; j<=n; j++)
{
temp=temp+a[i][j]*x[j];
}
x[i]=(b[i]-temp)/a[i][i];
}
// Печать результата
for(i=0; i<=n; i++)
{
Memo1->Lines->Add("a["+IntToStr(i)+"]="+FloatToStr(x[i]));
}
}
2.4 Метод Рунге-Кутта.
double Runge(double x, double y, double y1)
{
return 1-y1-y-x;
}
void __fastcall TForm5::BitBtn1Click(TObject *Sender)
{
Memo1->Clear();
double x=1,
y=-2,
y1=3,
h=1;
double k0, k1, k2, k3;
double p0, p1, p2, p3;
int n=10;
for (int i=1;i<=n;i++)
{
k0=Runge(x,y,y1);
p0=Runge(x,y,y1);
k1=Runge(x+h/2,y+k0/2,y1+p0/2);
p1=Runge(x+h/2,y+k0/2,y1+p0/2);
k2=Runge(x+h/2,y+k1/2,y1+p1/2);
p2=Runge(x+h/2,y+k1/2,y1+p1/2);
k3=Runge(x+h,y+k2,y1+p2);
p3=Runge(x+h,y+k2,y1+p2);
y+=h/6*(k0+2*k1+2*k2+k3);
y1+=h/6*(p0+2*p1+2*p2+p3);
x+=h;
Memo1->Lines->Add("x="+FloatToStr(x)+" y="+FloatToStrF(y, ffFixed, 8, 3));
}
}
2.5 Метод поиска.
double Poisk(double x)
{
return 1.2*pow(x,4)+2*pow(x,3)-24+pow(x,0.3);
}
void __fastcall TForm6::BitBtn1Click(TObject *Sender)
{
double a=4,b=24, h, x, Xmax, Xmin;
int n=1000;
Xmax=Xmin=a;
h=(b-a)/n;
for (int i=0; i<=n; i++)
{
x=a+i*h;
if (Poisk(x)> Poisk(Xmax)) Xmax=x;
if (Poisk(x)< Poisk(Xmin)) Xmin=x;
}
Edit1->Text=FloatToStrF(Xmax, ffFixed, 8, 3);
Edit2->Text=FloatToStrF(Poisk(Xmax), ffFixed, 8, 3);
Edit3->Text=FloatToStrF(Xmin, ffFixed, 8, 3);
Edit4->Text=FloatToStrF(Poisk(Xmin), ffFixed, 8, 3);
}
3. Исходные данные
-
Уравнение:
-
Функция для интегрирования:
Интервал интегрирования:
-
Функция, заданная таблицей:
-
x
2
4
6
8
10
12
14
16
y
1
5
-5
4
9
6
-8
-1
Порядок аппроксимационного многочлена: 3.
-
Дифференциальное уравнение:
Начальные условия: x0 = 1 ; y0 =-2; y’0=3 .
-
Целевая функция:
Интервал поиска: .
4. Полученные результаты.
4.1 Решение уравнения: 0,594;
4.2 Интеграл равен 2075847,38685569;
4.3 Коэффициенты аппроксимационного многочлена:
-
a0
2,35714292526245
a1
-1,00829720497131
a2
0,243777051568031
a3
-0,0129419192671776
4.4 Функция, определенная таблицей:
-
x
y
2
-2,66666666666667
3
-3,22222222222222
4
-3,74074074074074
5
-4,24691358024691
6
-4,74897119341564
7
-5,24965706447188
8
-5,74988568815729
9
-6,24996189605243
10
-6,74998729868414
11
-7,24999576622805
-
Для максимума:
Оптимальное значение проектного параметра: 24,000
Значение максимума функции: 425757,790
Для минимума:
Оптимальное значение проектного параметра: 4,000
Значение минимума функции: 412,716