Форум программистов, компьютерный форум, киберфорум
Lazarus
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 23.12.2015
Сообщений: 2
1

Расчет графика сложной функции

23.12.2015, 19:35. Показов 468. Ответов 1
Метки нет (Все метки)

Расчет графика сложной функции

Помогите переделать печать через For....do
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.12.2015, 19:35
Ответы с готовыми решениями:

График сложной функции
Выдает ошибку на 124 строке- "проект project1 вызвал класс исключения Externei:SIGSEGV" Если...

Построение графика сложной функции
Задача следующая: ввести вещественные числа a и b. Нарисовать график функции y=4*sin^4(x)+0.1*x^2...

Построение графика сложной функции со временем t
Надо построить график функции, изменяемая со временем t (дана ниже). Где значения k=4, R1=100,...

Построение графика достаточно сложной функции
Имеется некоторая такая функция y(k)...

1
0 / 0 / 0
Регистрация: 23.12.2015
Сообщений: 2
23.12.2015, 22:04  [ТС] 2
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
unit Unit1;
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
  ExtCtrls, Grids;
 
type
 
  { TForm1 }
 
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Image1: TImage;
    Image2: TImage;
    StringGrid1: TStringGrid;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;
 
var
  Form1: TForm1;
  x: array [0..99] of single;
  yb: array [0..99] of single;
  x1: real;
  xn:real;
  ymax:real;
  ymin:real;
 
implementation
 
{$R *.lfm}
 
 
{ TForm1 }
 
  // Полная развилка
function y(a,x:single):single;
begin
  if x<1.3 then
  y:= pi*exp(2*ln(x))-7/exp(2*ln(x))
  else
  if x=1.3 then
  y:=a*exp(3*ln(x))+7*sqrt(x)
  else
    y:=ln(x+7*sqrt(x))/ln(10);
end;
 
procedure Raschet;
var
  a,d: single;
  i: integer;
  begin
     a:=strtofloat (Form1.Edit1.text);
     x1:=strtofloat (inputbox('ввод','введите первое значение x',''));
     xn:=strtofloat (inputbox('ввод','введите последнее значение x',''));
     //Расчет шага
     d:=(xn-x1)/100;
     //Расчет значений
     //Цикл с предусловием
     i:=0;
     while i<=99 do
     begin
     x[i]:=x1+i*d;
     yb[i]:=y(a,x[i]);
     i:=i+1;
     end;
     end;
 
procedure Pechat;
var
  i: integer;
  j: integer;
  begin
    //Шапка таблицы
    Form1.StringGrid1.Cells[0,0]:='x';
    Form1.StringGrid1.Cells[1,0]:='y(x)';
    i:=0;
    j:=1;
    while i<=99 do
      begin
      Form1.StringGrid1.Cells[0,j]:=FloatToStrF(x[i],ffFixed,4,2);
      Form1.StringGrid1.Cells[1,j]:=FloatToStrF(yb[i],ffFixed,4,2);
      i:=i+10;
      j:=j+1;
      end;
    end;
 
Procedure MaxMin;
 var
  i:integer;
 begin
    for i:=0 to 99 do
    ymin:= yb[0];
    ymax:= yb[0];
    begin
       if yb[i]>ymax then
        ymax:= yb[i];
       if yb[i]<ymin then
        ymin:= yb[i]
     end;
    Form1.Edit2.text:='ymax= '+FloatToStrF(ymax,ffFixed,8,2)+';  ymin= '
    +FloatTOstrF(ymin,ffFixed,8,2);
 end;
 
Procedure grafic;
 var
  i:integer;
  u:array [0..99] of integer;
  v:array [0..99] of integer;
  Nvert:integer;
  Ngor:integer;
  x0,xk,y0,yk:single; //отступы от границ
  //компонента слева, справа, сверху и снизу.
  k1,k2,k3,k4:single; //коэффициенты пересчета
  dx,dy,dxk,dyk:single; //расстояние между линиями сетки
  begin
    //поля
    x0:=35;
    xk:=35;
    y0:=15;
    yk:=5;
    Nvert:= strtoint(inputbox('ввод','введите кол. верт.интервалов',''));
    Ngor:= strtoint(inputbox('ввод','введите кол. гориз.интервалов',''));
  //Формирование коэффициентов пересчета
  //из "бумажной" в "компонентную"
  //систему координат.
      k1:=(Form1.Image2.ClientWidth)/(xn-x1);
      k2:=x0-k1*x[0];
      k3:=(Form1.Image2.ClientHeight-y0-yk)/(ymin-ymax);
      k4:=yk-k3*ymax;
  //Формирование массивов точек
  //в экранной системе координат.
  for i:=0 to 99 do
  begin
         u[i]:=trunc(k1*x[i]+k2);
         v[i]:=trunc(k3*yb[i]+k4);
       end;
      //Рисование график функции на компоненте Image2.
      Form1.Image2.Canvas.MoveTo(u[0],v[0]);
      Form1.Image2.Canvas.Pen.Width:=3;
      Form1.Image2.Canvas.Pen.Color:=clGreen;
      Form1.Image2.Canvas.clear;
      for i:=0 to 99 do
      Form1.Image2.Canvas.LineTo(u[i],v[i]);
      Form1.Image2.Canvas.Pen.Width:=1;
      Form1.Image2.Canvas.Pen.Color:=clblue;
       //вычисление расстояния между вертик.линиями сетки в
      //"компонентной" системе координат
      dxk:=(Form1.Image2.ClientWidth -x0-xk)/Nvert;
      dx:=(xn-x1)/Nvert;//реальн.
      //рисование верт.линий сетки
      for i:=0 to Nvert do
      begin
        Form1.Image2.Canvas.MoveTo(trunc(x0+i*dxk),trunc(yk));
        Form1.Image2.Canvas.LineTo(trunc(x0+i*dxk),
        trunc(Form1.Image2.ClientHeight -y0));
        //подписи
        Form1.Image2.Canvas.TextOut(trunc(x0+i*dxk),
        trunc(Form1.Image2.ClientHeight -y0),floattostrF (x1+i*dx,ffFixed,8,2));
      end;
      //вычисление расстояний между гориз. линиями сетки,
      //в "компонентной" системе координат.
      dyk:=(Form1.Image2.ClientHeight -y0-yk)/Ngor;//в компонентной
                                                   //системе координат.
      dy:=(ymax-ymin)/Ngor; //реальн.
      //Рисование гориз сетки
      for i:=0 to Ngor do
       begin
         Form1.Image2.Canvas.MoveTo(trunc(x0),trunc(yk+i*dyk));
         Form1.Image2.Canvas.LineTo(trunc
         (Form1.Image2.ClientWidth-xk),trunc(yk+i*dyk));
             //Подписи
         Form1.Image2.Canvas.TextOut(trunc(0),
         trunc(yk+i*dyk),floattostrF(ymax-i*dy,ffFixed,8,2));
       end;
  end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  Raschet;
  Pechat;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
  MaxMin;
  grafic;
end;
 
end.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.12.2015, 22:04

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Swing: рисование графика сложной тригонометрической функции
Доброго времени суток! Конец модуля и ничего не успеваю, поэтому очень прошу помочь сделать...

Расчёт сложной трехфазной цепи
День добрый. Подскажите, алгоритм, последовательность решения задачи.. Имеется трехфазный...

Расчет сложной цепи по Кирхгофу
Нужно рассчитать сложную цепь, с помощью уравнений составленный с использованием первого и второго...

Расчет сложной цепи постоянного тока
помогите выполнить первые три задания . пожалуйста Правила форума: 4.7. Как можно более полно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.