Magentax

Bispol ?

Jan 19th, 2017
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.62 KB | None | 0 0
  1. //Bispol
  2. #include <stdio.h>
  3. #include <conio.h>
  4. #include <math.h>
  5. #define pi 3.141592
  6.  
  7. typedef unsigned char LOGIC;
  8. LOGIC bis(float,float,float,float *);
  9. float f(float);
  10. void caut(float*, float*);
  11.  
  12. int main(void)
  13. {
  14.   float rad;
  15.   float ls=-15, ld=15;
  16.   float er=1e-3 ;
  17.  
  18.   caut(&ls,&ld);
  19.   printf("\n main(): ls: %f, ld: %f", ls, ld);
  20.  
  21.   if(bis(ls,ld,er,&rad)) printf("\nRadacina este = %f",rad);
  22.   else printf("\nEroare");
  23.  
  24.   getch();
  25.   return 1;
  26. }
  27.  
  28. LOGIC bis(  float ls,
  29.             float ld,
  30.             float er,
  31.             float *pRad)
  32. {
  33.    float xm;
  34.  
  35.    if(f(ls)*f(ld)>0) {return(0);}
  36.    if(f(ls)==0) {*pRad=ls; return(1);}
  37.    if(f(ld)==0) {*pRad=ld; return(1);}
  38.  
  39.    xm=(ls+ld)/2;
  40.    while(fabs(ls-ld)>er && f(xm)!=0)
  41.    {
  42.       xm=(ls+ld)/2;
  43.       if(f(xm)*f(ls)<0) ld=xm;
  44.       else ls=xm;
  45.       }
  46.    *pRad=xm;
  47.    return(1);
  48. }
  49.  
  50. float Valpol(int n,float A[],float pct)
  51. {
  52.   int i;
  53.   float b;
  54.  
  55.   b=A[n];
  56.   for(i=n-1;i>=0;i--) b=A[i]+pct*b;
  57.   return b;
  58. }
  59.  
  60. void caut(  float *pA,
  61.             float *pB)
  62. {
  63.     int numar=0;
  64.     float p_ant = *pA, p_urm, pas = 1e-2 ;
  65.    
  66.     do{
  67.         p_urm = p_ant + pas ;
  68.         if(f(p_ant) * f(p_urm) < 0) break ;
  69.         p_ant = p_urm;
  70.         printf("\n ls: %f, f(%ls): %f; ld: %f, f(%f): %f",
  71.                                 p_ant, p_ant, f(p_ant), p_urm, p_urm, f(p_urm)) ;        
  72.         numar++ ;
  73.         if((numar % 10 ==0) && numar != 0) getch();
  74.         } while(p_urm <= *pB) ;
  75.     *pA = p_ant;
  76.     *pB = p_urm;
  77. }
  78.  
  79. float f(float x) {
  80.     float Ve = 5, ve = 6*sin(2*pi*x), r1 = 1e2, r2=1e3;    
  81.  
  82.     return r2/(r1+r2)*(Ve+ve);
  83. }
Add Comment
Please, Sign In to add comment