Контрольная работа - Решение системы нелинейных уравнений1
.docМинистерство образования и науки Российской Федерации
Федеральное агентство по образованию
Государственное образовательное учреждение
высшего профессионального образования
«Уфимский государственный нефтяной технический университет»
Кафедра «Вычислительная техника и инженерная кибернетика»
«Решение системы нелинейных уравнений»
ОТЧЁТ
по лабораторной работе № 9
(Вариант № 45)
Выполнил ст. гр. ПО-01-01 _____________ Исхаков И.И.
(подпись, дата)
Проверил доцент каф. ВТИК _____________ Мухамадеев И. Г.
(подпись, дата)
Уфа, 2003
1. Постановка задачи.
Дана подынтегральная функция и её первообразная .
Требуется вычислить приближенное значение с точностью = 0.001, 0.0001, используя формулы численного интегрирования (квадратурную формулу). Полученное значение сравнить с точным значением интеграла Iт, рассчитанным по формуле Ньютона-Лейбница.
2. Анализ задачи.
Необходимо создать программу вычисления приближенного значения интеграла по формуле трапеций и Ньютона-Котеса 5 порядка, с помощью созданной программы вычислить приближенное значение интеграла с требуемой точностью, используя алгоритм автоматического выбора шага интегрирования для метода трапеций.
Расчетная формула для одного Ньютона-Котеса участка выглядит следующим образом:
где –– коэффициенты Ньютона - Котеса, а k — число использующихся ординат на участке
Для проверки правильности вычислим тот же интеграл по формуле Ньютона-Лейбница:
a=1
b=2.2
I=F(b)-F(a);
I=()-()=()-()=
=-1.5-(-1,19155)= 0,30845
Так же для проверки правильности выполним вычисление в MathCAD
4. Текст программы
//------------------------------------------------------------------------
#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)
{
}
//------------------------------------------------------------------------
float func(float x){
return (sqrt(x)-1.0/sqrt(x))* (sqrt(x)-1.0/sqrt(x));}
float Func(float x){
return (x*x)/2-2*x+log(fabs(x));}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
float a=StrToFloat(Edit1->Text);
float b=StrToFloat(Edit2->Text);
float E=StrToFloat(Edit3->Text);
float S=0,S0,Sigma;
int n=1;
do{ n=2*n;
S0=S;
float h=(b-a)/n;
S=(func(a)+func(b))/2;
for (int i=1;i<n;i++)
S=S+func(a+i*h);
S=h*S;
Sigma=S-S0;
}while(fabs(Sigma)>=E);
Edit4->Text=FloatToStr(S);
Edit5->Text=FloatToStr(Sigma);
Edit6->Text=FloatToStr(n);
Edit7->Text=FloatToStr(fabs(S-(Func(b)-Func(a))));
}
//-----------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
float a=StrToFloat(Edit1->Text);
float b=StrToFloat(Edit2->Text);
float H[6],x[6],W[6],k,I=0;
H[0]=H[5]=19.0/288.0; H[1]=H[4]=25.0/96.0;H[2]=H[3]=25.0/144.0;
k=5 ;
for(int i=0;i<=k;i++){
x[i]=a+i*(b-a)/k;
W[i]=(b-a)*H[i];
I=I+W[i]*func(x[i]);
}
Edit4->Text=FloatToStr(I);
Edit7->Text=FloatToStr(fabs(I-(Func(b)-Func(a))));
}
//------------------------------------------------------------------------
5 . Результаты расчётов, выполненные с помощью подготовленной программы на Си. Анализ и проверка
Метод трапеции = 0.001
М етод трапеции = 0.0001
M етод Ньютона-Котеса 5
Результаты, полученные двумя методами по разработанной программе, совпали с требуемой точностью с результатами, полученными вручную в MathCADе, следовательно, задача решена верно