Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <math.h>
- float f(float); // Function
- float ff(float); //1st Derivative
- float fff(float); //2nd Derivative
- float dih(void);
- float hor(void);
- float nut(void);
- bool err=false;
- bool steps=true; //turn on/off steps
- int main() {
- int x; float z;
- while(true) {
- printf("exp(x)+x=0\n1: Dihotomii\n2: Hord\n3: Newton\n0: Exit\n");
- scanf("%d",&x);
- switch(x) {
- case 0: return 0;
- case 1: z=dih(); break;
- case 2: z=hor(); break;
- case 3: z=nut(); break;
- default: break;
- }
- if(!err) printf("Koren' yravneniya: x=%.10f\n\n",z); else err=true;
- }
- }
- float f(float x) {
- return exp(x)+x;
- }
- float ff(float x,float dx) {
- //float dx=0.0001;
- return (f(x+dx)-f(x))/dx;
- }
- float fff(float x,float dx) {
- return (f(x+dx)-2*f(x)+f(x-dx))/(dx*dx);
- }
- float hor() {
- float a,b,c,d,e;
- printf("Vvedite [a,b], eps, delta:\n");
- scanf("%f%f%f%f",&a,&b,&e,&d);
- if(f(a)*f(b)>0) {
- printf("Koren ne mozhet bit' naiden na etom promezhytke etim metodom\n");
- err=true;
- return 0;
- }
- while(true) {
- c=a+fabs(f(a)/(f(b)-f(a)))*(b-a);
- if(steps) printf("x=%.10f\n",c);
- if(((fabs(c-a)<d) && (fabs(f(c))<e))) break;
- if(f(c)*f(a)>0) a=c; else b=c;
- }
- return c;
- }
- float dih() {
- float a,b,c,d,e;
- printf("Vvedite [a,b], eps, delta:\n");
- scanf("%f%f%f%f",&a,&b,&e,&d);
- if(f(a)*f(b)>0) {
- printf("Koren ne mozhet bit' naiden na etom promezhytke etim metodom\n");
- err=true;
- return 0;
- }
- while(true) {
- c=(a+b)/2;
- if(steps) printf("x=%.10f\n",c);
- if(((fabs(c-a)<d) && (fabs(f(c))<e))) break;
- if(f(c)*f(a)>0) a=c; else b=c;
- }
- return c;
- }
- float nut() {
- float x,xx,d,e;
- printf("Vvedite x0, eps, delta:\n");
- scanf("%f%f%f",&x,&e,&d);
- if(f(x)*fff(x,e)<0) {
- printf("Koren ne mozhet bit' naiden pri etom x0 etim metodom\n");
- err=true;
- return 0;
- }
- while(true) {
- xx=x-f(x)/ff(x,e);
- if(steps) printf("x=%.10f\n",xx);
- if((fabs(xx-x)<d) && (fabs(f(x))<e)) break;
- x=xx;
- }
- return xx;
- }
Advertisement
Add Comment
Please, Sign In to add comment