Advertisement
Guest User

Untitled

a guest
Nov 18th, 2019
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.75 KB | None | 0 0
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <math.h>
  4.  
  5. double tempstotal(double Ya,double Xc,double Xb,double Yb,double Vplage,double Vmer)
  6. {
  7. double T;
  8. T = sqrt(Ya*Ya+Xc*Xc)/Vplage + sqrt((Xb-Xc)*(Xb-Xc)+Yb*Yb)/Vmer;
  9. return T;
  10. }
  11.  
  12. double toSolve(double Ya,double Xc,double Xb,double Yb,double Vplage,double Vmer)
  13. {
  14. double dT;
  15. dT = 1.0 / ( Vplage * sqrt( (Ya/Xc)*(Ya/Xc) + 1.0) ) + (Xc-Xb) / ( Vmer * sqrt( (Xb-Xc)*(Xb-Xc) + Yb*Yb) );
  16. return dT;
  17. }
  18.  
  19. double resolution(double Ya,double Xb,double Yb,double Vplage,double Vmer,double erreurmax,double *residu,int *iteration)
  20. {
  21. double Xg=0.0, Xd=Xb,Xc;
  22.  
  23. do
  24. {
  25. Xc = Xd - toSolve(Ya,Xd,Xb,Yb,Vplage,Vmer) * ( (Xd-Xg) / ( toSolve(Ya,Xd,Xb,Yb,Vplage,Vmer) - toSolve(Ya,Xg,Xb,Yb,Vplage,Vmer) ) );
  26. *residu = fabs(toSolve(Ya,Xc,Xb,Yb,Vplage,Vmer));
  27. if (toSolve(Ya,Xc,Xb,Yb,Vplage,Vmer)*toSolve(Ya,Xd,Xb,Yb,Vplage,Vmer) < 0.0)
  28. {
  29. Xg=Xc;
  30. }
  31. if (toSolve(Ya,Xc,Xb,Yb,Vplage,Vmer)*toSolve(Ya,Xg,Xb,Yb,Vplage,Vmer) < 0.0)
  32. {
  33. Xd=Xc;
  34. }
  35. *iteration+=1;
  36. } while (*residu > erreurmax);
  37.  
  38. return Xc;
  39. }
  40.  
  41. int main (int argc, char*argv[])
  42. {
  43. double Ya,Xb,Yb,Xc,Vplage,Vmer,erreurmax,residu=0.0;
  44. int iteration=0;
  45. printf("Veuillez choisier Ya \n");
  46. scanf("%lf",&Ya);
  47. printf("Veuillez choisier Xb \n");
  48. scanf("%lf",&Xb);
  49. printf("Veuillez choisier Yb \n");
  50. scanf("%lf",&Yb);
  51. printf("Veuillez choisier Vplage \n");
  52. scanf("%lf",&Vplage);
  53. printf("Veuillez choisier Vmer \n");
  54. scanf("%lf",&Vmer);
  55. printf("Veuillez choisier erreurmax \n");
  56. scanf("%lf",&erreurmax);
  57. Xc=resolution(Ya,Xb,Yb,Vplage,Vmer,erreurmax,&residu,&iteration);
  58. printf("La solution est Xc=%lf \nLe procede a requis %d iterations et l'erreur finale est de %.16lf",Xc,iteration,residu);
  59. return 0;
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement