Run Code
|
API
|
Code Wall
|
Misc
|
Feedback
|
Login
|
Theme
|
Privacy
|
Patreon
lab7_OOP 0.3
#include <stdlib.h> #include <stdio.h> #include <math.h> #include <float.h> double solve (double(*method)(double(*)(double,double),double,double,double,double),double(*f)(double,double),double a,double b,double t,double eps) { return method(f, a, b, t, eps); } double f1 (double x, double t) { if (x != 0.0) { return cos(t/x) - 2.0*sin(1.0/x) + 1.0/x; } else { printf("Помилка. Ділення на нуль. f1(%lf, %lf)\n", x, t); exit(-1); } } double f2 (double x, double t) { if (x > 0.0) { return sin(log(x)) - cos(log(x)) + t*log(x); } else { printf("Помилка. Ділення на нуль. f1(%lf, %lf)\n", x, t); exit(-1); } } double newton (double (*f)(double, double), double a, double b, double t, double eps ) { if (f != NULL) { double x0 = b; double x1 = x0; for (int i = 0; i <= 1000; ++i) { double y = f(b, t); double ydiff = (f(b+1e-10, t) - f(b, t))/1e-10; if (fabs(ydiff) == 0.0) { printf("Помилка. Похідна дорівнює нулю. newton(%p, %lf, %lf, %lf, %lf)\n", f, a, b, t, eps); exit(-1); } x1 = x0 - y/ydiff; if(fabs(x1 - x0)/fabs(x1) < eps) { return x1; } x0 = x1; } printf("Помилка. Кількість ітерацій перевищила 1000. newton(%p, %lf, %lf, %lf, %lf)\n", f, a, b, t, eps); exit(-1); } else { printf("Помилка. Нульовий покажчик на функцію. newton(%p, %lf, %lf, %lf, %lf)\n", f, a, b, t, eps); exit(-1); } } double bisec (double (*f)(double, double), double a, double b, double t, double eps ) { if (f != NULL) { return 0; } else { printf("Помилка. Нульовий покажчик на функцію. newton(%p, %lf, %lf, %lf, %lf)\n", f, a, b, t, eps); exit(-1); } } int main(void) { printf("%lf", solve(newton, /*Метод обчислень*/ f1, /*Цільова функція*/ -2.0, /*Перше обмеження, a*/ 2.0, /*Друге обмеження, b*/ 2.0, /*Параметер, t*/ 0.0001 /*Точність*/ )); return 0; }
run
|
edit
|
history
|
help
0
Punteros: creación espacio para un int
Linear Classifier in C
POLE[radky][sloupce]
lab7
Eukleidova algoritmu
interestCalculationSample
Cvičenie -č.6-UDP
Lazy dope vectors by Henry Kroll III www.thenerdshow.com
Herout (67) - 2
myblkqsort-ptr 20m numbers