Файл: Отчёт по лабораторной работе 1 Метод исчисления корней.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 06.12.2023

Просмотров: 17

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ

ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ

ВЫСШЕГО ОБРАЗОВАНИЯ

«НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»



ОТЧЁТ

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

«Метод исчисления корней»

по дисциплине:

«Программирование»


Выполнил(а):

Буркова К.М.

Группа АТ-24

Проверил:
Кухто А.В.


Новосибирск

2023

ЦЕЛЬ РАБОТЫ:

Определить корни на заданном отрезке. Вычислить таблицу значений функции на интервале [X_min, X_max] с шагом h, а также программно определить отрезки, на концах которых функция меняет знак с точностью до eps при помощи различных методов для каждого отрезка.

ХОД РАБОТЫ:

Находим значения, а затем при помощи методов половинного деления и хорд определяем корни.

ЛИСТИНГ:

//13 вариант

#include

#include

#include
float uravnenie(float x);

float proizvodna(float x);

int znak(float a);

float polovinnoe_delenie(float a, float b);

float metod_hord(float a, float b);

float metod_kasatelnih(float b);

int main()

{

printf("znachenia: ");

for (float i = -2.2; i <= 1.0; i = i + 0.05) {

printf(" x = %f, y= %f \n ", i, uravnenie(i));

}

printf("\n korni:\n");

for (float i = -2.2; i < 1.0; i = i + 0.05) {

printf(" x = %f, y= %f \n ", i, uravnenie(i));

if (uravnenie(i) == 0.0) {

printf(" %f,", i);

}

else if (znak(uravnenie(i)) != znak(uravnenie(i + 0.05))) {

printf("otresok [%f, %f]\n", i, i + 0.05);

printf(" polovinnoe delenie \n");

printf(" koren %f\n", polovinnoe_delenie(i, i + 0.05));

printf(" metod hord \n");

printf(" koren %f\n", metod_hord(i, i + 0.05));

}

}

}
float uravnenie(float x) {

x = 3*x*x*x*x+8*x*x*x+6*x*x-10;

return x;

}
float proizvodna(float x) {

x = 12*x*x*x+24*x*x+12*x;

return x;

}
int znak(float a) {

if (a > 0) {

return 0;

};

if (a < 0) { return 1; };

}
float polovinnoe_delenie(float a, float b) {

int n = 0;

while (fabs(uravnenie((a + b) / 2)) >= 0.001) {

if (znak(uravnenie(a)) != znak(uravnenie((b + a) / 2))) {

b = (b + a) / 2;

}

else { a = (b + a) / 2; }

n++;

}

printf(" kolichestvo iterazi : %d\n", n);

return (a + b) / 2;

}
float metod_hord(float a, float b) {

float x = (a * uravnenie(b) - b * uravnenie(a)) / (uravnenie(b) - uravnenie(a));

int n = 0;

while (fabs(uravnenie(x)) >= 0.001) {

n++;

if (znak(uravnenie(a)) != znak(uravnenie(x))) {

b = x;

}

else { a = x; }

x = (a * uravnenie(b) - b * uravnenie(a)) / (uravnenie(b) - uravnenie(a));

}

printf(" kolichestvo iterazi : %d\n", n);

return x;

}

ТЕСТИРОВАНИЕ:



БЛОК СХЕМЫ:

  1. Метод касательных



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



  1. Метод половинного деления



  1. Метод хорд