Вычислить значение выражения - C (СИ) (71255)
Формулировка задачи:
Листинг программы
- Program Zz;
- function f(x:real):real;
- begin
- f:=1.32-1.43*x+1.32*sin(x)-0.8*ln(1+x);
- end;
- var a,b,x,c,eps:real;
- n:integer;
- begin
- writeln('Введите левую границу');
- readln(a);
- writeln('Введите правую границу');
- readln(b);
- writeln('Введите Эпсилон');
- readln(eps);
- n:=0;
- while abs(a-b)>eps do
- begin
- c:=(a+b)/2;
- if f(a)*f(c)<=0 then b:=c
- else a:=c;
- x:=(a+b)/2;
- n:=n+1
- end;
- writeln('x=',x:0:5,' f(x)=',f(x):0:3,' ','Количество итераций=',n);
- end.
Решение задачи: «Вычислить значение выражения»
textual
Листинг программы
- #include <stdlib.h>
- #include <stdio.h>
- #include <math.h>
- #include <locale.h>
- double f(double x);
- int main(){
- setlocale(LC_ALL, "RUSSIAN");
- double a, b, x, c, eps;
- int n=0;
- printf("Введите левую границу: ");
- scanf("%lf", &a);
- fflush(stdin);
- printf("Введите правую границу: ");
- scanf("%lf", &b);
- fflush(stdin);
- printf("Введите Эпсилон: ");
- scanf("%lf", &eps);
- fflush(stdin);
- while(abs(a-b)>eps){
- c=(a+b)/2;
- if(f(a)*f(c)<=0){
- b=c;
- }else{
- a=c;
- }
- x=(a+b)/2;
- n++;
- }
- printf("x=%.5lf, f(x)=%.3lf, Количество итераций=%i.\n", x, f(x), n);
- return 0;
- }
- double f(double x){
- return 1.32-1.43*x+1.32*sin(x)-0.8*log(1+x);
- }
Объяснение кода листинга программы
- Объявлены переменные:
a
,b
,x
,c
,epsi
ons,
nтипа
double, а также переменная
intтипа
n`. - Выполняется функция
setlocale(LC_ALL,
RUSSIAN)
, которая задает русскоязычную локализацию. - Определена функция
f(double x)
. - В главном цикле программы выполняется поиск корня методом деления отрезка пополам.
- На каждой итерации цикла вычисляется значение функции
f(a)
,f(b)
,f(c)
,f(x)
. - Если выполняется условие
f(a)*f(c)<=0
, то значение переменнойb
заменяется на значение переменнойc
. - Если условие не выполняется, то значение переменной
a
заменяется на значение переменнойc
. - После каждой итерации значение переменной
x
обновляется как среднее арифметическоеa
иb
. - Каждое значение
x
выводится на экран с помощьюprintf(
x=%.5lf, x)
. - Каждое значение функции
f(x)
выводится на экран с помощьюprintf(
f(x)=%.3lf, f(x))
. - Каждое количество итераций выводится на экран с помощью
printf(
Количество итераций=%i.\n, n)
. - В конце программы выполняется оператор
return 0
, который завершает выполнение программы. - Функция
f(double x)
вычисляет значение функции, которую необходимо приблизить к нулю. - Значение функции
f(x)
вычисляется с помощью формулы1.32-1.43*x+1.32*sin(x)-0.8*log(1+x)
. - Значение функции
f(x)
вычисляется с помощью формулы1.32-1.43*x+1.32*sin(x)-0.8*log(1+x)
. - Значение функции
f(x)
вычисляется с помощью формулы1.32-1.43*x+1.32*sin(x)-0.8*log(1+x)
. - Значение функции
f(x)
вычисляется с помощью формулы1.32-1.43*x+1.32*sin(x)-0.8*log(1+x)
. - Значение функции
f(x)
вычисляется с помощью формулы1.32-1.43*x+1.32*sin(x)-0.8*log(1+x)
. - Значение функции
f(x)
вычисляется с помощью формулы1.32-1.43*x+1.32*sin(x)-0.8*log(1+x)
. - Значение функции
f(x)
вычисляется с помощью формулы1.32-1.43*x+1.32*sin(x)-0.8*log(1+x)
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д