Контрольная работа по "Математике"

Автор работы: Пользователь скрыл имя, 01 Декабря 2013 в 20:09, контрольная работа

Описание работы

На практике часто встречаются задачи связанные с решением уравнения вида f(х)=0.Точное решение не всегда возможно найти, поэтому разработаны численные методы: метод дихотомии, Ньютона и др. При этом решаются две задачи:
1. Вычисление корней с заданной заранее точностью.
2. Отыскание областей, где имеется один корень.

Содержание работы

1. Введение…………………………………………………….……………3
2. Постановка задачи……………………………………………………...4
3. Методы решения..…………………………………………………….…6
4. Листинги программ…………………………………………………….11
5. Результаты………………………………………………………………19

Файлы: 1 файл

practic.doc

— 154.00 Кб (Скачать файл)

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РЕСПУБЛИКИ КАЗАХСТАН

УНИВЕРСИТЕТ МЕЖДУНАРОДНОГО БИЗНЕСА

Кафедра Информационные системы

 

 

 

 

 

 

ОТЧЁТ

По  вычислительной практике

«Элементы численного анализа»

 

 

 

 

Выполнил:

ст. гр. ВТиПО-225

Степанов  В.А.

 

Проверила:

Доц. каф. ИС

Молдагулова А.Н.

 

 

 

 

Алматы 2008

 

 

СОДЕРЖАНИЕ

 

  1. Введение…………………………………………………….……………3
  2. Постановка задачи……………………………………………………...4
  3. Методы решения..…………………………………………………….…6
  4. Листинги программ…………………………………………………….11
  5. Результаты………………………………………………………………19

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ВВЕДЕНИЕ

На практике часто встречаются задачи связанные с решением уравнения вида f(х)=0.Точное решение не всегда возможно найти, поэтому разработаны численные методы: метод дихотомии, Ньютона и др. При этом решаются две задачи:

  1. Вычисление корней с заданной заранее точностью.
  2. Отыскание  областей, где имеется один корень.

В научно-технической  практике часто требуется найти  значение определённого интеграла. Применяются методы: трапеций и Симпсона.

С помощью численных  методов: метод Гаусса,   возможно решение сложных систем уравнений.

Данная работа основана на конкретном применении шести  методов: дихотомии, хорд, Ньютона, метода трапеций, Симпсона, Гаусса.

Целью данной вычислительной практики является освоение вышеперечисленных  методов, создание программ для их реализации.

 

 

 

 

 

 

 

 

 

 

 

 

 

ПОСТАНОВКА  ЗАДАЧИ

 

  1. Решение алгебраических уравнений методом Ньютона. Решить уравнение . Очередное приближение корня находится по формуле:
  2. Метод дихотомии. Решить уравнение методом деления отрезка пополам. На каждой итерации отрезок [a,b] делится пополам и выбирается та из половин, на концах которой функция имеет значения разных знаков.
  3. Метод хорд. Найти решения уравнения на заданном отрезке методом хорд, в котором очередное приближение находится по формуле: .
  4. Вычисление определенного интеграла методом трапеций. Вычислить определенный интеграл методом трапеций: , где n – количество отрезков разбиения; y0,y1,….,yn – значения подынтегральной функции на концах отрезков.
  5. Метод Симпсона. Вычисление определенного интеграла методом трапеций. Вычислить определенный интеграл методом Симпсона: , где 2n – количество отрезков разбиения; y0,y1,…,y2n – значения подынтегральной функции на концах отрезков.
  6. Решение систем линейных уравнений методом Гаусса. Решить следующую систему линейных уравнений методом Гаусса: 

         2x1+0.3x2+0.5x3=4.1;

         0.1x1+3x2+0.4x3=7.3;

0.1x1+0.1x2+4.8x3=14.7.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

МЕТОДЫ  РЕШЕНИЯ

 

1. Метод Ньютона 

 

Отличие этого  итерационного метода от метода хорд состоит в том, что вместо хорды на каждом шаге проводится касательная к кривой y = f(x) при x = хi и ищется точка пересечения касательной с осью абсцисс (Рисунок 4). При этом не обязательно задавать отрезок [а, b], содержащий корень уравнения (1), достаточно найти лишь некоторое начальное приближение корня x = х0.

Применяя метод  Ньютона, следует руководствоваться  следующим правилом: в качестве исходной точки х0 выбирается тот конец интервала [а, b], которому отвечает ордината того же знака, что и знак f'' (х).

Рисунок 4. 

 

Уравнение касательной, проведенной к кривой y = f(x) через точку В0 с координатами х0 и f(х0), имеет вид:

Отсюда найдем следующее приближение корня х1 как абсциссу точки пересечения касательной с осью Ох (y = 0): 

 

Аналогично  могут быть найдены и следующие  приближения как точки пресечения с осью абсцисс касательных, проведенных в точках В1, В2 и так далее. Формула для i +1 приближения имеет вид:

Для окончания  итерационного процесса может быть использовано или условие | f(xi)| < e , или условие близости 2х последовательных приближений | xi - xi - 1 | < e .

Итерационный  процесс сходится если

f(х0) * f'' (х0) > 0.

  1. Метод дихотомии (деления пополам)

Метод дихотомии  несколько схож с методом двоичного поиска, однако отличается от него критерием отбрасывания концов.

Пускай задана функция  .

Разобьём мысленно заданный отрезок пополам и возьмём  две симметричные относительно центра точки  и так, что:

,

где — некоторое число в интервале

Отбросим тот  из концов изначального интервала, к  которому ближе оказалась одна из двух вновь поставленных точек с  максимальным значением (напомним, мы ищем минимум), то есть:

  • Если , то берётся отрезок , а отрезок отбрасывается.
  • Иначе берётся зеркальный относительно середины отрезок , а отбрасывается .

Процедура повторяется  пока не будет достигнута заданная точность, к примеру, пока длина отрезка не достигнет удвоенного значения заданной погрешности.

 

 

  1. Метод хорд

Точный корень уравнения находится на отрезке . Производная на этом промежутке непрерывна и сохраняет постоянный знак. Приближенный корень , при котором , можно найти используя метод хорд. Для этого нужно взять

начальное приближение  корня  и применить к нему итерационную формулу , , если  
, , если  
Погрешность вычислений: 
, ,

 

 

  1. Метод трапеций

Если функцию  на каждом из частичных отрезков аппроксимировать прямой, проходящей через конечные значения, то получим метод трапеций.

Площадь трапеции на каждом отрезке:  
Погрешность аппроксимации на каждом отрезке: , где  
Полная формула трапеций в случае деления всего промежутка интегрирования на отрезки одинаковой длины h: , где  
Погрешность формулы трапеций: , где

  1. Метод Симпсона

Использовать  три точки отрезка интегрирования можно заменить подынтегральную  функцию параболой. Обычно в качестве таких точек используют концы  отрезка и его среднюю точку. В этом случае формула имеет очень простой вид

.

Если разбить  интервал интегрирования на 2N равных частей, то имеем

, где .

6. Метод  Гаусса

  • На первом этапе осуществляется так называемый прямой ход, когда путём элементарных преобразований над строками систему приводят к ступенчатой или треугольной форме, либо устанавливают, что система несовместна. А именно, среди элементов первого столбца матрицы выбирают ненулевой, перемещают его на крайнее верхнее положение перестановкой строк и вычитают получавшуюся после перестановки первую строку из остальных строк, домножив её на величину, равную отношению первого элемента каждой из этих строк к первому элементу первой строки, обнуляя тем самым столбец под ним. После того, как указанные преобразования были совершены, первую строку и первый столбец мысленно вычёркивают и продолжают пока не останется матрица нулевого размера. Если на какой-то из итераций среди элементов первого столбца не нашёлся ненулевой, то переходят к следующему столбцу и проделывают аналогичную операцию.
  • На втором этапе осуществляется так называемый обратный ход, суть которого заключается в том, чтобы выразить все получившиеся базисные переменные через небазисные и построить фундаментальную систему решений либо, если все переменные являются базисными, то выразить в численном виде единственное решение системы линейных уравнений. Эта процедура начинается с последнего уравнения, из которого выражают соответствующую базисную переменную (а она там всего одна) и подставляют в предыдущие уравнения, и так далее, поднимаясь по «ступенькам» наверх. Каждой строчке соответствует ровно одна базисная переменная, поэтому на каждом шаге, кроме последнего (самого верхнего), ситуация в точности повторяет случай последней строки.

 

 

 

 

 

 

 

 

 

 

 

 

 

ЛИСТИНГИ  ПРОГРАММ

 

1.

 #include <math.h>

#include <iostream.h>

#include <conio.h>

 

double Func(double x) //Функция

 

 

{

return 2*sqrt((5*(pow(x+1,0.25))+4))-sqrt(2*pow(x+1,0.25)-1)-sqrt(20*pow(x+1,0.25)+5);

}

 

double Fp(double x) //производная  от Функции

{

return (5/4)*((pow(x+1,-0.75))/sqrt(pow(x+1,0.25)+4))-((pow(x+1,-0.75))/(sqrt((2*pow(x+1,0.25))-1)))-((2.5*(pow(x+1,-0.75))/(sqrt(20*pow(x+1,0.25)+5))));

}

 

void main()

{

double a=-0.75,b=1,X=a;// интервал и X

double Xt,E=1E-4;//предыдущий X и  E-точность вычислений

int count=0;// счетчик итераций

do

{

count++;

Xt=X;

 

 

X=-Func(X)/Fp(X)+X; // метод  касательных

cout<<"["<<count<<"]="<<X<<endl;

if(Func(X)*Func(a)>0)a=X;

else  b=X;

}while(fabs(X-Xt)>=E);

cout<<"X="<<X;

getch();

}

2.

#include <math.h>

#include <iostream.h>

#include <conio.h>

 

double Func(double x) //Функция

{

return 2*sqrt((5*(pow(x+1,0.25))+4))-sqrt(2*pow(x+1,0.25)-1)-sqrt(20*pow(x+1,0.25)+5);

}

 

 

 

void main()

{

double a=-.75,b=1,X=a;// интервал и X

double Xt,E=1E-4;//предыдущий X и  E-точность вычислений

int count=0;// счетчик итераций

do

{

count++;

Xt=X;

 

X=(b+a)/2; // деление пополам

 

cout<<"["<<count<<"]="<<X<<endl;

if(Func(X)*Func(a)>0)a=X;

else  b=X;

}while(fabs(X-Xt)>=E);

cout<<"X="<<X;

getch();

}

3.

#include <math.h>

#include <iostream.h>

#include <conio.h>

 

double Func(double x) //Функция

{

return 2*sqrt((5*(pow(x+1,0.25))+4))-sqrt(2*pow(x+1,0.25)-1)-sqrt(20*pow(x+1,0.25)+5);

}

 

 

 

void main()

{

double a=-.75,b=1,X=a;// интервал и X

double Xt,E=1E-4;//предыдущий X и  E-точность вычислений

int count=0;// счетчик итераций

do

{

count++;

Xt=X;

 

 

X=-((b-a)/(Func(b)-Func(a)))*Func(a)+a;// Метод хорд

 

cout<<"["<<count<<"]="<<X<<endl;

if(Func(X)*Func(a)>0)a=X;

else  b=X;

}while(fabs(X-Xt)>=E);

cout<<"X="<<X;

getch();

}

4.

#include<iostream.h>

#include<conio.h>

#include<math.h>

 

void main()

{

int b=1,a=0;

float s=0;

int n;

cout<<"Programma integrirovania metodom trapecii:\n"<<"Vvedite chislo otrezkov razbienia\n";

cin>>n;

float h=(b-a)/n;

float x;

x=a;

int i;

for (i=1; i<=n-1; i++)

{

x=x+h;

s=s+(cos(x)/(1+cos(x)));

 

}

s=s+0.25+(cos(1)/2*(cos(1)+1))  ;

cout<<"rezultat:\n"<<s;

getch();

 

}

5.

#include<iostream.h>

#include<conio.h>

#include<math.h>

 

void main()

{

int b=1,a=0;

float sm=0,s1=0,s2=0;

 

int n;

cout<<"Programma integrirovania metodom trapecii:\n"<<"Vvedite chislo otrezkov razbienia\n";

cin>>n;

float n2=n/2-1;

float h=(b-a)/n;

float x;

x=a;

int i;

for (i=1; i<=n2; i++)

{

x=x+h;

s1=s1+(cos(x)/(1+cos(x)));

x=x-h;

s2=s2+(cos(x)/(1+cos(x)));

 

}

sm=4*cos(x+h)/(cos(x+h)+1)+4*s1+2*s2+0.5+(cos(1)/(1+cos(1)));

sm=sm/3;

sm=sm*h;

cout<<"rezultat"<<endl<<sm;

getch();

 

}

6.

#include <stdio.h>

#include <conio.h>

#include <math.h>

#define N 50

void glavelem( int k, double mas[] [N + 1], int n, int otv[] );

 

int main( void )

{

  double mas[N] [N + 1];

  double x[N]; //Корни системы

  int otv[N]; //Отвечает  за порядок корней

  int i, j, k, n;

  //Ввод данных

  clrscr();

  do

  {

    printf( "Vvedite chislo uravneni sistemi: " );

    scanf( "%d", & n );

    if ( N < n )

      printf( "Slishkom bolshoe chislo uravneni\n" );

  }

  while ( N < n );

  printf( "vvedite sistemu\n" );

  for ( i = 0; i < n; i++ )

    for ( j = 0; j < n + 1; j++ )

      scanf( "%lf", & mas[i] [j] );

Информация о работе Контрольная работа по "Математике"