Программирование на C / C++ / Лабораторные работы6 / Лаба-3
.doc
Лабораторная работа №3
по технологическому программированию
«Решение уравнений»
Выполнил: Егоров Михаил
Группа: БИ-1-05
Цель работы: создание программы, которая находит корень заданного уравнения.
1.Задание.
Написать программу на языке Си, которая находит корень уравнения
1+sin x-ln(1+x)-x=0
двумя методами: итераций и деления отрезка пополам, - и отображает показатели быстродействия обоих методов.
2.Методы решения.
1.Метод итераций.
2.Метод деления отрезка пополам.
3.Описание переменных.
x – корень уравнения
x1, x0 – вспомогательные переменные
a,b – заданные пределы.
d – заданная точность вычислений.
ii, id – счетчики итераций
4.Блок-схема.
x0=x1
5.Исходный текст программы.
#include <stdio.h>
#include <math.h>
#include <conio.h>
void main()
{
clrscr();
float x,x0,x1;
float d,a,b;
int ii,id;
a=0;
b=1.5;
d=0.000001;
printf("rezultat\titeracii\n");
x1=1.5;
ii=0;
do
{
ii+=1;
x0=x1;
x1=1+sin(x0)-log(1+x0);
}
while (fabs(x1-x0)>d);
x=(x0+x1)/2;
printf("%lf\t%d\n",x,ii);
id=0;
do
{
id+=1;
x=(a+b)/2;
x1=(1-a+sin(a)-log(1+a)) * (1-x+sin(x)-log(1+x));
if (x1<0)
b=x;
else
a=x;
}
while(fabs(b-a)>d);
x=(a+b)/2;
printf("%lf\t%d\n",x,id);
}
6.Результат.
rezultat iteracii
1.147439 6
1.147439 21