Вычислить значение выражения - 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,epsions,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).