Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пример оформления ОТЧЕТА.doc
Скачиваний:
6
Добавлен:
24.11.2019
Размер:
200.7 Кб
Скачать

Задание №3.

Для каждого x, изменяющегося от a до b с шагом h, найти значения функции Y(x), суммы S(x) и |Y(x)–S(x)| и вывести в виде таблицы. Значения a, b, h и n вводятся с клавиатуры.

Так как значение S(x) является рядом разложения функции Y(x), при правильном решении значения S и Y для заданного аргумента x (для тестовых значений исходных данных) должны совпадать в целой части и в первых двух-четырех позициях после десятичной точки.

Работу программы проверить для a = 0,1; b = 1,0; h = 0,1; значение параметра n выбрать в зависимости от задания.

, .

3.1. Создание консольного приложения

Текст программы:

//---------------------------------------------------------------------------

#include <vcl.h>

#include <stdio.h>

#include <conio.h>

#include <math.h>

#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused

int main(int argc, char* argv[])

{

float a, b, x, h, y, s, r;

int n, k;

puts("Input a,b,h,n");

scanf("%f%f%f%d", &a, &b, &h, &n);

for(x = a; x<=b; x+=h){

printf("\n x= %8.2f",x);

y = -1./2*log(1-2*x*cos(M_PI/3)+pow(x,2));

printf("\n Y(x)= %8.6f",y);

s=0;

for(k=1; k<=n; k++){

s+= pow(x,k)*cos(k*M_PI/3)/k;

}

printf("\n S(x)= %8.6f",s);

r=fabs(y-s);

printf("\n |Y(X)-S(X)|= %8.6f",r);

}

puts("\nPress any key ... ");

getch();

return 0;

}

Результаты выполнения:

Задание №4.

По заданию лабораторной работы №3 написать программу расчета выбранной функции Y(x), или S(x) (желательно и |Y(x)–S(x)|), вид которой определяется в функции вывода (Out_Rez) в зависимости от переданного ей параметра kod.

4.1. Создание оконного приложения

Текст программы:

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include <math.h>

#include "Unit1.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

RadioGroup1->ItemIndex = 0;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)

{

Application->Terminate();

}

//---------------------------------------------------------------------------

//Декларация функции

double S(double, int);

double Y(double);

void Out_Rez(double, double, double, int, int);

//Описание функции

double S(double x, int n){

//задаём временную переменную для суммы и счётчик цикла

double temp_s=0, k;

for(k=1;k<=n;k++) {

temp_s+=pow(x,k)*cos(k*M_PI/3)/k; //S(x)

}

return temp_s;

}

double Y(double x) {

return -1./2*log(1-2*x*cos(M_PI/3)+pow(x,2));

}

//функция вывода результата

void Out_Rez(double a, double b, double h, int n, int kod){

Form1->Memo1->Lines->Clear();

double x;

for(x = a; x<=b; x+=h){

switch(kod){

case 0:

Form1->Memo1->Lines->Add("x = " + FloatToStrF(x,ffFixed,8,4) + " y(x) = " + FloatToStrF(Y(x),ffFixed,8,4));

break;

case 1:

Form1->Memo1->Lines->Add("x = " + FloatToStrF(x,ffFixed,8,4) + " s(x) = " + FloatToStrF(S(x,n),ffFixed,8,4));

break;

case 2:

Form1->Memo1->Lines->Add("x = " + FloatToStrF(x,ffFixed,8,4) + " |s(x)-y(x)| = " + FloatToStrF(fabs(S(x,n)-Y(x)),ffFixed,8,4));

break;

}

}

}

void __fastcall TForm1::Button1Click(TObject *Sender)

{

Out_Rez(StrToFloat(Edit1->Text), StrToFloat(Edit2->Text), StrToFloat(Edit3->Text), StrToInt(Edit4->Text), Form1->RadioGroup1->ItemIndex);

Результаты выполнения: