Нужно перевести из с++ в си - C (СИ) (155382)
Формулировка задачи:
#include <iostream.h> #include <math.h> #include <conio.h> float f(float x) { return (1.0/(1.05*x))-pow(x,2); } float fp(float x) { return -1/pow(sin(x),2)-2*x; } float horda(float a, float b, float eps) { int ii=0; float c; do { c = a - f(a)*(b-a)/(f(b)-f(a)); if(f(a)*f(c)<0) { b = c; } else { a = c; } ii++; }while(fabs(f(c))>eps); cout<<"iteraciy: "<<ii<<endl; return c; } float Newton(float a, float eps) { int ii=0; do { a = a - f(a)/fp(a); ii++; }while(fabs(f(a))> eps); cout<<"iteraciy: "<<ii<<endl; return a; } void main() { clrscr(); float a,b,eps=0.001; cout<<"a = ";cin>>a; cout<<"b = ";cin>>b; cout<<"HORD x = "<<horda(a,b,eps)<<"\n\n"; cout<<"NEWTON x = "<<Newton(a,eps)<<"\n"; getch(); }
Решение задачи: «Нужно перевести из с++ в си»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <math.h> float f(float x) { return (1.0 / (1.05 * x)) - pow(x, 2); } float fp(float x) { return -1 / pow(sin(x), 2) - 2 * x; } float horda(float a, float b, float eps) { int ii = 0; float c; do { c = a - f(a) * (b - a) / (f(b) - f(a)); if (f(a)*f(c) < 0) { b = c; } else { a = c; } ii++; } while (fabs(f(c)) > eps); printf("iteraciy: %d\n", ii); return c; } float newton(float a, float eps) { int ii = 0; do { a = a - f(a) / fp(a); ii++; } while (fabs(f(a)) > eps); printf("iteraciy: %d\n", ii); return a; } int main() { float a, b, eps = 0.001; printf("a = "); scanf("%f", &a); printf("b = "); scanf("%f", &b); printf("HORD x = %f\n\n", horda(a, b, eps)); printf("NEWTON x = %f\n", newton(a, eps)); getchar(); return 0; }
Объяснение кода листинга программы
- Переменная
a
используется как начальное приближение для функцииhorda
иnewton
. - Переменная
b
используется как конечное приближение для функцииhorda
. - Функция
horda
использует метод Золотого сечения для нахождения корня квадратного уравнения. - Функция
newton
использует метод Ньютона для нахождения корня квадратного уравнения. - В функции
main
пользователю предлагается ввести значения дляa
иb
, затем результаты вычислений выводятся на экран. - Значение
eps
используется как критерий остановки для итерационных методов. - Функция
f
представляет собой квадратичную функцию вида1/x^2 - x^2
. - Функция
fp
представляет собой функцию, производную отf
. - Функция
horda
вычисляет корень квадратного уравнения с помощью метода Золотого сечения. - Функция
newton
вычисляет корень квадратного уравнения с помощью метода Ньютона. - Значение
iteraciy
используется для отслеживания количества итераций, выполненных функциейhorda
илиnewton
. - Значение
fabs(f(a))
используется для проверки критерия остановки. - Значение
fabs(f(a)) > eps
используется для проверки, является ли абсолютное значение функции больше заданной точности. - Значение
fabs(f(a)) > eps
используется для проверки, является ли абсолютное значение функции больше заданной точности. - Значение
fabs(f(a)) > eps
используется для проверки, является ли абсолютное значение функции больше заданной точности. - Значение
fabs(f(a)) > eps
используется для проверки, является ли абсолютное значение функции больше заданной точности. - Значение
fabs(f(a)) > eps
используется для проверки, является ли абсолютное значение функции больше заданной точности. - Значение
fabs(f(a)) > eps
используется для проверки, является ли абсолютное значение функции больше заданной точности. - Значение
fabs(f(a)) > eps
используется для проверки, является ли абсолютное значение функции больше заданной точности. - Значение
fabs(f(a)) > eps
используется для проверки, является ли абсолютное значение функции больше заданной точности.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д