Метод дихотомии и итераций - C (СИ)
Формулировка задачи:
Метод дихотомии для
и метод итераций для
Никак не получается составить программы. Компилятор gcc, прога не пашет.
#include <math.h> #include <stdio.h> double f(double x) { return cos(x)-pow(e,(-x*x)/2)+x-1; } int main() { int n=0; float e=exp(1.0); double a,b,c,eps; printf("a="); scanf("%lf", &a); printf("b="); scanf("%lf", &b); printf("eps="); scanf("%lf", &eps); do { c=(a+b)/2; if (f(c)*f(a)<=0) b=c; else a=c; n+=1; } while (fabs(a-b)>=eps); printf("c=%lf\n", c); printf("n=%lf\n", n); getch(); return 0; }
Решение задачи: «Метод дихотомии и итераций»
textual
Листинг программы
#include <stdio.h> #include <math.h> double fun2(double x) { double w; return 3*pow(x,2)+4*x+3; } double fun1(double x) { double z; return pow(x,3)+2*pow(x,2)+3*x+5; } int main(void) { double x=-2; double x0=-2; double e=0.000001; double f,g; printf("\nStart Program\n"); printf("\nBudem vychislyt` nelineynoe yravnenie "); printf("metodom Netona:"); printf("\nx^3+2x^2+3x+5=0"); printf("\n\nNacal`noe priblechenie vozmem za -2"); printf("\nTochost` zadadim = 0.000001"); printf("\n\nNachnem:\n"); do { x0=x; f=fun1(x); g=fun2(x); x=x0-f/g; printf("\nPromechytochny x = %f", x); } while (fabs(x0-x)>e); { printf("\n\nV rezultate x = %f", x); } printf("\n\nKonec program\n"); return 0; }
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы
- Определяются две функции: fun1 и fun2, которые представляют собой выражения для функций f(x) и g(x) соответственно
- В функции main() инициализируются начальные значения переменных: x = -2, x0 = -2, e = 0.000001, f и g не инициализируются, так как они используются только для хранения промежуточных значений
- Выводится информация о программе и уравнении, которое будет решаться
- Запускается цикл do-while, который будет выполняться до тех пор, пока изменение x не станет меньше заданной точности e
- Внутри цикла переменная x0 присваивается текущее значение x, а затем вычисляются значения функций f и g
- Затем находится новое значение x путем деления x0 на f/g
- Выводится текущее значение x
- После выхода из цикла do-while выводится окончательный результат x
- Программа завершается возвратом 0 из функции main()
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д