Essays.club - Получите бесплатные рефераты, курсовые работы и научные статьи
Поиск

Линейные, ветвящиеся и циклические алгоритмы

Автор:   •  Май 19, 2023  •  Лабораторная работа  •  1,868 Слов (8 Страниц)  •  190 Просмотры

Страница 1 из 8

ОТЧЕТ

по лабораторной работе №1

Тема: «Линейные, ветвящиеся и циклические алгоритмы»

Лабораторная работа № 1

Тема: «Линейные, ветвящиеся и циклические алгоритмы»

Цель работы: Развивать навыки асимптотического анализа алгоритмов, сортировки при решении задач, использования алгоритмов поиска и выбора наиболее удобного пути путем их анализа.

Практическая часть

Вариант 13

Задание 1.

Вычислите данный интеграл методом Симпсона. Указаны количество интервальных делений N и количество попыток M.

𝒇(𝒙)

[𝒂,𝒃]

𝑵 

𝑴 

13.

(𝑥2+𝑥+1)/√𝑥3+5

[0;2]

20

150

[pic 1]

                [pic 2]

[pic 3]

[pic 4]

[pic 5]

[pic 6]

[pic 7]

[pic 8]

[pic 9]

[pic 10]

[pic 11]

[pic 12]

[pic 13]

[pic 14]

[pic 15]

[pic 16]

[pic 17]

[pic 18]

[pic 19]

[pic 20]

[pic 21]

[pic 22]

[pic 23]

[pic 24]

[pic 25]

[pic 26]

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

Code:

#include <cstdlib>

#include <iostream>

#include <math.h>

using namespace std;

float f(float x) { return (x*x+x+1)/sqrt(pow(x,3)+5);}

int i, m; float n, a, b, h, s;

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

{ cout<<endl<<" f(x) = (x^2+x+1)/(x^3+5)"<<endl;

cout<<endl<<" Integralni hisoblashning Simpson usuli"<<endl;

cout<<endl<<" a = "; cin>>a;

cout<<endl<<" b = "; cin>>b; cout<<endl<<" n = "; cin>>n;

h=(b-a)/n; cout<<endl<<" h = "<<h<<endl;

cout<<endl<<" m = ";

cin>>m;

for (i=1; i<=m; i++) {

    s+= f(a+(2*i-2)*h) + 4*f(a+(2*i-1)*h) + f(a+2*i*h) ;

}

s=s*h/3;

cout<<endl<<" Integral = "<<s<<endl<<endl;

system("PAUSE");

return EXIT_SUCCESS;

}

Результат:

[pic 27]

[pic 28]

  1.  Метод Монте-Карло

Code:

#pragma hdrstop

#include <math.h>

#include <conio.h>

#include <time.h>

#include <stdio.h>

#include <stdlib.h>

#pragma argsused

double func(double x, int n)

{

return (x*x+x+1)/sqrt(pow(x,3)+5);                          

}

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

{

        int a,b,n,d,i, st;

        double c;

        printf("st: ");                      

        scanf("%d",&st);

        printf("\na: ");                    

        scanf("%d",&a);

        printf("\nb: ");                  

        scanf("%d",&b);

        printf("\nn: ");                    

        scanf("%d",&n);

        if (func(a,st)>=func(b,st))

        c=func(a,st);                  

        else

        c=func(b,st);

        double *x=new double[n];

        double *y=new double[n];

        srand(time(NULL));

        d=int(c);

        int count=0;

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

        {

        x[i]=a+rand()%(b-a);                

        y[i]=rand()%d;

        if (y[i]<func(x[i],st))                

        count++;

        }

        double integral=count*(b-a)*c/n;

        printf("\nIntegral=%f", integral);

        getch();

        return 0;

}

Результат:

[pic 29]

[pic 30]

Задание 2.

Итерационные методы решения алгебраических и трансцендентных уравнений деления интервала на две равные части.

  1. Определите графическим и аналитическим методами решения уравнений расположенные в интервал [a; б].
  2. После определения интервалов, в которых находятся решения уравнений, приближенно рассчитать решения с точностью E=0,001 путем деления интервала на две равные части. Создав алгоритм, написать программный код на языке программирования и получить результат.
  3. Найдите приближенные решения алгебраических и трансцендентных уравнений. Создав алгоритм, написать программный код на языке программирования и получить результат.

[pic 31]

[pic 32]

[pic 33]

[pic 34]

[pic 35]

[pic 36]

[pic 37]

[pic 38]

        и   [pic 39][pic 40]

                [pic 41][pic 42]

                        [pic 43][pic 44]

[pic 45]

[pic 46]

        и   [pic 47][pic 48]

[pic 49]

[pic 50]

[pic 51]

...

Скачать:   txt (10.6 Kb)   pdf (1.3 Mb)   docx (1.8 Mb)  
Продолжить читать еще 7 страниц(ы) »
Доступно только на Essays.club