Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 1
Регистрация: 06.02.2013
Сообщений: 11
1

Подскажите, как исправить код

04.11.2009, 20:37. Показов 700. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Условие на картинке, а вот код:
Delphi
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
implementation
 
{$R *.dfm}
 
procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.Text:='0,1';
Edit2.Text:='0,5';
Edit3.Text:='10';
Edit4.Text:='0,0001';
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var
xn, xk, x, a, s, m, e, h, y: extended;
n: integer;
begin
Memo1.Clear;
Memo1.Lines.Add('Результаты вычислений: ');
xn:=StrToFloat(Edit1.Text);
xk:=StrToFloat(Edit2.Text);
m:=StrToFloat(Edit3.Text);
e:=StrToFloat(Edit4.Text);
Memo1.Lines.Add('Xn = '+Edit1.Text);
Memo1.Lines.Add('Xk = '+Edit2.Text);
Memo1.Lines.Add('Количество шагов (M) = '+Edit3.Text);
Memo1.Lines.Add('Точность (e) = '+Edit4.Text);
h:=(xk-xn)/m;
x:=xn;
repeat
a:=0.1; s:=0.1; n:=0;
while (abs(a)>e) do
begin
  inc(n);
  a:=-a*Sqr(x)*(2*n-1)/(2*n+1);
  s:=s+a;
end;
y:=arctan(-x);
Memo1.Lines.Add('При x = '+FloatToStrF(x,fffixed,6,2)+' сумма равна '+FloatToStrF(s,fffixed,8,4)+' y = '+FloatToStrF(y,fffixed,8,4)+' n = '+IntToStr(n));
x:=x+h;
until x>(xk+h/2);
end;
На выходе получается ерунда..думаю что неверно вычислил первый член ряда..голову поломал уже..
подскажите вообщем
Миниатюры
Подскажите, как исправить код  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.11.2009, 20:37
Ответы с готовыми решениями:

Подскажите, как исправить ошибку
мне нужно в заполненном нулями массиве,заменить 20% ячеек единицами unit Unit1; interface ...

Подскажите, как исправить ошибку
Подскажите, как исправить ошибку, пожалуйста)

Подскажите как исправить недочет
Подскажите пожалуйста как исправить небольшую проблемку в программе. Суть такая, пользователь...

Простейший калькулятор. Подскажите как исправить недочеты.
Привет форумчане. Помогите пожалуйста доделать калькулятор. 1)Мне надо чтобы при запуске...

2
125 / 116 / 17
Регистрация: 27.02.2007
Сообщений: 291
05.11.2009, 09:23 2
Цитата Сообщение от caca0 Посмотреть сообщение
a:=-a*Sqr(x)*(2*n-1)/(2*n+1);
Судя по заданию формула для члена ряда совсем другая....
0
13104 / 5885 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
05.11.2009, 10:05 3
Попробуй примерно так действовать:
Delphi
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
//Вычисление элемента (члена) ряда с номером aN для точки aX.
//aN - номер члена ряда. Номера начинаются с нуля.
function CalcElement(aX : Extended; aN : Longword) : Extended;
var
  Sign    : Integer;
begin
  //Реализация (-1)^aN
  if Odd(aN) then begin
    Sign := -1;
  end else begin
    Sign := 1;
  end;
  //Вычисление члена ряда.
  Result := Sign * Power(aX, 2 * aN + 1) / (2 * aN + 1);
end;
 
procedure TForm1.Button1Click(Sender: TObject);
 
...
 
  s := 0;
  n := -1;
  repeat
    //Pred(IterCountMax) - потому что мы считаем n от нуля,
    //Succ(n) - потому что должны оценить n на ещё нерасчитанном шаге.
    if Succ(n) > Pred(IterCountMax) then begin
      //Запись в журнал.
      Log.Add(
        'Расчёт точки: "' + FloatToStr(x) + '".'
        + ' Достигнуто предельное число итераций (=' + IntToStr(IterCountMax) + '). Вычисления остановлены.'
        + ' Достигнутая точность = ' + FloatToStr(a) + '.'
      );
      Break;
    end;
    //Подсчитаем номер члена ряда.
    Inc(n);
    //Вычисляем очередной член ряда.
    a := CalcElement(x, n);
    //Значение всего ряда.
    s := s + a;
  Until Abs(a) < e;
 
...
 
end;
Log - это может быть TMemo.Lines или TListBox.Items - показ журнала со сведениями о проблемах с точностью.
IterCountMax - это следует задать предельное число итераций - защита от вычислений с очень малыми числами.
0
05.11.2009, 10:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.11.2009, 10:05
Помогаю со студенческими работами здесь

Подскажите, пожалуйста, что это за ошибка и как её исправить?
Подскажите пожалуйста что это за ошибка и как её исправить? (см. скрин во вложении)

Подскажите как исправить код
Задача вставить строку после номера введенной строки пользователем Помогите пожалуйста битый час...

Подскажите как исправить код
ТЗ: В матрице в строках с отрицательным элементом на главной диагонали найти наибольший элемент...

Подскажите как исправить код
Исправить чтобы дважды не менялось одно и тоже поле #include &lt;iostream&gt; #include &lt;ctime&gt;...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru