Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
32
Добавлен:
02.05.2014
Размер:
79.36 Кб
Скачать

МИНИСТЕРСТВО ОБЩЕГО И ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

РОССИЙСКОЙ ФЕДЕРАЦИИ

УФИМСКИЙ ГОСУДАРСТВЕННЫЙ АВИАЦИОННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

Кафедра ДВС

Отчёт по курсовой работе

по дисциплине “Информатика”

Выполнил: студент гр. Т27Д-216

Зарипов Д.З.

Принял: доц. каф. ДВС

Рудой И.Б.

Уфа 2006

1. Тексты заданий

    1. Написать программу для решения уравнения методом итераций.

    2. Написать программу для интегрирования методом Симпсона.

    3. Написать программу для нахождения коэффициентов аппроксимацион-ного многочлена методом наименьших квадратов.

    4. Написать программу для решения дифференциального уравнения методом Рунге-Кутта.

    5. Написать программу для нахождения минимума (максимума) целевой функции методом поиска.

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. Исходные данные

    1. Уравнение:

    2. Функция для интегрирования:

Интервал интегрирования:

    1. Функция, заданная таблицей:

x

2

4

6

8

10

12

14

16

y

1

5

-5

4

9

6

-8

-1

Порядок аппроксимационного многочлена: 3.

    1. Дифференциальное уравнение:

Начальные условия: x0 = 1 ; y0 =-2; y0=3 .

    1. Целевая функция:

Интервал поиска: .

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

    1. Для максимума:

Оптимальное значение проектного параметра: 24,000

Значение максимума функции: 425757,790

Для минимума:

Оптимальное значение проектного параметра: 4,000

Значение минимума функции: 412,716