Вычислить значение выражения - 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)
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д