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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.06.2008, 14:47   #1
xMass
Пользователь
 
Регистрация: 20.05.2008
Сообщений: 23
По умолчанию Программа строит неправильный график

Нужно простроить в чарте график функции y=tg(x) и график y=x, чтобы найти их точку пересечения, вот что у меня получается:

вот примерно как должен выглядеть:


Код программы:
Код:
unit unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, TeEngine, Series, ExtCtrls, TeeProcs, Chart;

type
  TForm1 = class(TForm)
    Chart1: TChart;
    Series1: TLineSeries;
    Label1: TLabel;
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Label2: TLabel;
    Label3: TLabel;
    Series2: TLineSeries;
    Button2: TButton;
    Button3: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
var
  a,b,d,x:real;
procedure TForm1.Button1Click(Sender: TObject);
begin
  a:=StrToFloat(edit1.Text);
  b:=StrToFloat(edit2.Text);
  d:=(b-a)/1000;
  x:=a;
  while x<=b do
  begin
    chart1.Series[0].AddXY(x,(sin(x))/(cos(x)));
    chart1.Series[1].AddXY(x,x);
    x:=x+d;
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  form1.Close;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  edit1.Text:='';
  edit2.Text:='';
  form1.Chart1.Series[0].Clear;
  form1.Chart1.Series[1].Clear;
end;

end.
В чем моя ошибка? Почему он так строит тангенс график и прямую? Как это исправить?
xMass вне форума Ответить с цитированием
Старый 06.06.2008, 15:04   #2
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Вопрос к вам. Чему равен tg(x), когда x->pi/2, правильно, бесконечность. Вот вы эту бесконечность и получаете.
Отключите автомасштабирование по оси Y и задайте max и min вручную
Код:
  Chart1.LeftAxis.Automatic:=false;
  Chart1.LeftAxis.Minimum:=-20;
  Chart1.LeftAxis.Maximum:=20;
_Dmitry вне форума Ответить с цитированием
Старый 06.06.2008, 16:00   #3
xMass
Пользователь
 
Регистрация: 20.05.2008
Сообщений: 23
По умолчанию

Точчннооо!
Урааа, все поулчилось, спасибо оргомнейшее!!!)))

а как написать программу, которая определяет точку пересечения графиков?

Последний раз редактировалось Stilet; 06.06.2008 в 16:09.
xMass вне форума Ответить с цитированием
Старый 06.06.2008, 16:11   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
а как написать программу, которая определяет точку пересечения графиков?
Дык вот где ты рассчитываешь данные там проверяй мол:
Код:
if abs((sin(x))/(cos(x))-x)<0.01 then пересекается тут
Здесь 0,01 погрешность
p.s. ну про проверку x=x я не пишу из политкорректности )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.06.2008, 18:26   #5
xMass
Пользователь
 
Регистрация: 20.05.2008
Сообщений: 23
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Дык вот где ты рассчитываешь данные там проверяй мол:
Код:
if abs((sin(x))/(cos(x))-x)<0.01 then пересекается тут
Здесь 0,01 погрешность
p.s. ну про проверку x=x я не пишу из политкорректности )
так я не хочу проверять, я хочу найти точку где строиться
"пересекается тут", тож не очень ясно, ведь графики пересекаются бесконечное число раз
xMass вне форума Ответить с цитированием
Старый 06.06.2008, 18:28   #6
xMass
Пользователь
 
Регистрация: 20.05.2008
Сообщений: 23
По умолчанию

я делал программу нахождения решения этого уравнения, у меня получалось знчение 0,07815 (при погрешности 0,001), что очень меня настараживает
xMass вне форума Ответить с цитированием
Старый 06.06.2008, 18:28   #7
xMass
Пользователь
 
Регистрация: 20.05.2008
Сообщений: 23
По умолчанию

я делал программу нахождения решения этого уравнения, у меня получалось знчение 0,07815 (при погрешности 0,001), что очень меня настараживает
xMass вне форума Ответить с цитированием
Старый 06.06.2008, 19:04   #8
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Правильно настораживает.
Каким методом решаете уравнение?
Покажите код.
_Dmitry вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
График VBA Dubineanschi Microsoft Office Excel 1 10.07.2008 12:03
Неправильный вывод данных из стека С++ Cyberex Общие вопросы C/C++ 3 07.05.2008 16:53
График Oksana БД в Delphi 3 12.02.2007 20:05
График xsexrexga Общие вопросы Delphi 1 27.01.2007 21:26