Advertisement
Guest User

Untitled

a guest
Oct 22nd, 2014
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.67 KB | None | 0 0
  1. procedure TForm2.Diff_ButtonClick(Sender: TObject);
  2. var
  3. a,b,x:real;
  4. n,i:integer;
  5. y_1,y_2,h,h1,h2,aa:real; //y_1,y_2 – значения первой и второй производной в точке x соответственно
  6. y:array of real;
  7.  
  8. begin
  9. a:=StrToFloat(EditA.Text); //интервал дифференцирования A
  10. b:=StrToFloat(EditB.Text)+0.01; //интервал дифференцирования B + костыль
  11. x:=StrToFloat(EditX.Text); //точка дифференцирования X
  12. n:=1000; //n - число точек дифференцирования
  13. h:=(b-a)/n; //шаг
  14. aa:=a;
  15. setlength(y,n-1);
  16. for i:=0 to Length(y)-1 do
  17. begin
  18. y[i]:=(sqrt(1+power(aa,2)))/aa; //функция F1
  19. aa:=aa+h;
  20. end;
  21. //проверка, входит ли X в границы интервала
  22. if (x<a) or (x>StrToFloat(EditB.Text)) then
  23. begin
  24. ShowMessage('Точка не входит в границы интервала');
  25. Exit;
  26. end;
  27.  
  28. i:=trunc((x-a)/h+h/2);
  29. h1:=2*h;
  30. h2:=h*h;
  31.  
  32. if i=0 then
  33. begin
  34. y_1:=(-3*y[0]+4*y[1]-y[2])/h1;
  35. y_2:=(2*y[0]-5*y[1]+4*y[2]-y[3])/h2;
  36. end;
  37.  
  38. if ((i>0)and(i<n)) then
  39. begin
  40. y_1:=(-y[i-1]+y[i+1])/h1;
  41. y_2:=(y[i-1]-2*y[i]+y[i+1])/h2;
  42. end;
  43.  
  44. if i=n then
  45. begin
  46. y_1:=(y[n-2]-4*y[n-1]+3*y[n])/h1;
  47. y_2:=(-y[n-3]+4*y[n-2]-5*y[n-1]+2*y[n])/h2;
  48. end;
  49.  
  50. EditY1.Text:=FloatToStrF(y_1,ffFixed,7,4); //выводим значение I производной
  51. EditY2.Text:=FloatToStrF(y_2,ffFixed,7,4); //выводим значение II производной
  52. end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement