Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.05.2011, 21:58   #1
Таир
 
Регистрация: 06.05.2011
Сообщений: 6
По умолчанию Ошибка с построением графика функции arccos

Есть программа, рисующая на канве графики функций, не могу никак нарисовать график функции y=arccos(2-2*x);

Код:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, Math, ComCtrls, StdCtrls, ExtCtrls;

type
  TmainForm = class(TForm)
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    MainMenu1: TMainMenu;
    File1: TMenuItem;
    Exit: TMenuItem;
    Button4: TButton;
    Memo1: TMemo;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Image1: TImage;
    Label6: TLabel;
    Label7: TLabel;
    Button1: TButton;
    Button2: TButton;
    Label8: TLabel;
    Label5: TLabel;
    procedure ExitClick(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  i,j,l:integer;
  x,y:real;
  b1,b2,b3:boolean;
  mainForm: TmainForm;

implementation

{$R *.dfm}

function funct1(x:real):real;
 begin
  funct1:= sin(x+1)-1;
 end;

function funct2(y:real):real;
 begin
 funct2:= arccos(2-2*x));
 end;


function FacRecursive(n: integer): integer;
begin
  if n > 1 then    
    Result := n * FacRecursive(n-1)    
  else    
    Result := 1;
end;

procedure TmainForm.ExitClick(Sender: TObject);
begin
Application.Terminate;
end;

procedure TmainForm.Button4Click(Sender: TObject);
 var xn,xk,x,h,e,a,s,y,a1,a2 :extended;
     n,k,asd:integer;
begin
   Memo1.Clear;

     xn:=StrToFloat(Edit1.Text);
Memo1.Lines.Add(' xn='+FloatToStrF(xn,ffFixed,12,4));
     xk:=StrToFloat(Edit2.Text);

 Memo1.Lines.Add(' xk='+FloatToStrF(xk,ffFixed,12,4));
     h:=StrToFloat(Edit3.Text);
Memo1.Lines.Add(' h='+FloatToStrF(h,ffFixed,12,4));
     e:=StrToFloat(Edit4.Text);
Memo1.Lines.Add(' e='+FloatToStrF(e,ffFixed,12,4));
         x:=xn;
           repeat
      a:=1;  S:=0;  n:=0;
             n:=n+1;
            a:=2*x+cos(sin(x+1)-1)-2;
            s:=a;
            y:=sin(x+1)-1;
            a1:=sin(x+1)-y-1;
            a2:=2*x+cos(y)-2;
               if (abs(e)>=abs(s))  then
     Memo1.Lines.Add('ïðè x='+FloatToStrF(x,ffFixed,12,4)+'   Rez ='
                                   + FloatToStrF(s,ffFixed,12,4)+' y ='
+ FloatToStrF(y,ffFixed,12,4)+'   1 ='+FloatToStrF(a1,ffFixed,12,4)+'   2 ='+FloatToStrF(a2,ffFixed,12,4));
         x:=x+h;
  until x>(xk+h)
end;

procedure TmainForm.FormShow(Sender: TObject);
begin
  Edit1.text:='-4';
  Edit2.text:='6';
  Edit3.text:='0,1';
  Edit4.text:='0,001';
   memo1.clear;
end;

procedure TmainForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Application.Terminate;
end;

procedure TmainForm.Button1Click(Sender: TObject);
begin
 Image1.Canvas.MoveTo(11,66);
 for i:=1 to 500 do
  begin
   x:= i/100;
   y:= funct1(x);
   Image1.Canvas.LineTo(round(x*100)+ 11,50-round(y*100));
  end;
 Image1.Canvas.TextOut(round(x*100)+1,30-round(y*100),'ln(1 + x^2)');
 b1:= True;
end;

procedure TmainForm.Button2Click(Sender: TObject);
begin

 Image1.Canvas.MoveTo(11,150);
 for i:=1 to 500 do
  begin
   x:= i/100;
   y:= funct2(x);
   Image1.Canvas.LineTo(round(x*100)+ 11,110-round(y*100 + 1));
  end;
 Image1.Canvas.TextOut(round(x*100)+1,90-round(y*100),'exp(-x^2)');
 b2:= True;
end;

procedure TmainForm.FormCreate(Sender: TObject);
begin

Image1.Canvas.MoveTo(275,10);
 Image1.Canvas.LineTo(271,20);
 Image1.Canvas.LineTo(279,20);
 Image1.Canvas.LineTo(275,10);
 Image1.Canvas.LineTo(275,390);
 image1.Canvas.LineTo(275,390);
 Image1.Canvas.MoveTo(10,200);
 image1.Canvas.LineTo(540,200);
 image1.Canvas.LineTo(530,204);
 image1.Canvas.LineTo(530,196);
 image1.Canvas.LineTo(540,200);
 b1:= false; b2:= false; b3:= false;
end;

end.

большая часть кода не относится к графику, мне непонятно, если модуль math включает использование функции arccos почему он не строится(функция 2).

Кто скажет в чем ошибка, может в задании переменной для функции аркккосинуса?
Таир вне форума Ответить с цитированием
Старый 11.05.2011, 22:00   #2
Таир
 
Регистрация: 06.05.2011
Сообщений: 6
По умолчанию

function funct2(y:real):real;
begin
funct2:= arccos(2-2*x));
end;

Вместо function funct2(y:real):real; там по идее function funct2(x:real):real;
Таир вне форума Ответить с цитированием
Старый 11.05.2011, 22:29   #3
Таир
 
Регистрация: 06.05.2011
Сообщений: 6
По умолчанию

Основная проблема здесь:
Цитата:
function funct2(y:real):real;
begin
funct2:= arccos(2-2*x));
end;
procedure TmainForm.Button2Click(Sender: TObject);
begin

Image1.Canvas.MoveTo(11,150);
for i:=1 to 500 do
begin
x:= i/100;
y:= funct2(x);
Image1.Canvas.LineTo(round(x*100)+ 11,110-round(y*100 + 1));
end;
Image1.Canvas.TextOut(round(x*100)+ 1,90-round(y*100),'exp(-x^2)');
b2:= True;
end;
вот где он совершенно не хочет нарисовать мне функцию обратную косинусу)))
Таир вне форума Ответить с цитированием
Старый 15.05.2011, 08:55   #4
Таир
 
Регистрация: 06.05.2011
Сообщений: 6
Счастье

UP
UP
Up
UP
UP
UP
UP
Таир вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Написать функцию arccos x и для заданных вещественных чисел x и y подсчитать (x/1+|x|)+arccos y/sqr(y)-1. "Chika bomb" Паскаль, Turbo Pascal, PascalABC.NET 3 14.12.2010 16:03
функция arccos(a) на VBA Oooleg Microsoft Office Excel 2 30.09.2009 11:39
Проблема с построением графика Pirat_of Microsoft Office Excel 2 19.05.2009 20:35
Проблема с построением графика и гиперболического парабалоида... добрый спаммер Microsoft Office Excel 2 19.05.2009 11:43
Проблема с построением графика xaero93 Помощь студентам 2 28.02.2009 21:30