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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2022, 19:48   #1
imzonger
Новичок
Джуниор
 
Регистрация: 19.12.2022
Сообщений: 1
Печаль помогите с программой pascal.

Никак не могу понять как написать программу. Я знаю как писать сигму но никак не могу понять как записать x1,x2,x3 и тд. Помогите пожалуйста.
Изображения
Тип файла: jpg изображение_2022-12-19_194518068.jpg (87.7 Кб, 4 просмотров)
imzonger вне форума Ответить с цитированием
Старый 19.12.2022, 20:17   #2
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,538
По умолчанию

Цитата:
Сообщение от imzonger Посмотреть сообщение
но никак не могу понять как записать x1,x2,x3 и тд
Код:
const X:array [1..5] of Double =(0.34e-2,0.12,0.08e-2,1.11e-3,0.07);
type_Oleg вне форума Ответить с цитированием
Старый 19.12.2022, 20:44   #3
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Код:
var
  a: double = 0.0;
  b: single = 11.58e-2;
  c: single = 0.78e-2;
  x: array [1 .. 5] of single = (0.34e-2, 0.12, 0.08e-2, 1.11e-3, 0.07);

function p2(x: single): double; inline; begin p2 := x*x; end;

begin
  for i := Low(x) to High(x) do a := a + b*sin(p2(x[i]) - c) + p2(cos(x[i])); // Суммируем значения для правой части выражения (под знаком суммирования)
  a := sin(b - c*c) - 1.08*a; // Окончательно вычислили значение a
end.
А вот с Z[i] что-то непонятное. Причем тут суммирование по i внутри функции тоже от этого же индекса.

Последний раз редактировалось macomics; 20.12.2022 в 18:50.
macomics вне форума Ответить с цитированием
Старый 20.12.2022, 18:00   #4
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,304
По умолчанию

macomics
Цитата:
А вот с Z[i] что-то непонятное. Причем тут суммирование по i внутри функции тоже от этого же индекса.
Понял так.
В правой части выражений есть две составляющие: f(xi) + Сумма.
Если выполнить суммирование то эти суммы становятся постоянными значениями.
В этом случае получаем зависимость Zi = f(xi) + Const
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 20.12.2022, 18:35   #5
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Цитата:
Сообщение от ViktorR Посмотреть сообщение
Понял так.
В правой части выражений есть две составляющие: f(xi) + Сумма.
Если выполнить суммирование то эти суммы становятся постоянными значениями.
В этом случае получаем зависимость Zi = f(xi) + Const
Возможно. Тоже об этом думал, но показалось абсурдно громоздким выражением для константы. Да и почему бы тогда не использовать другую букву для счетчика (например, j). Вот из-за того, что буквы везде i, я и отказался от этой идеи. Тогда их вообще не стоит считать в цикле, а вычислить по разу и записать в переменные t0 и t1.

ADD: Если это отдельный индекс, тогда это константа. Но xi под знаком суммирования встречается несколько раз. Если предположить, что один из них это индекс от zi, тогда это превращается в 5 разных выражений.

Код:
for i := Low(x) to High(x) do t0 := t0 + p2(p2(x[i]) - sin(x[i])) / (1 - cos(x[i]));
for i := Low(x) to High(x) do t1 := t1 + (b*x[i] - a*p2(x[i]));
for i := Low(x) to High(x) do
  if cos(x[i]) > sin(x[i])
    then z[i] := a*cos(p2(xi - c)) + t0
    else z[i] := (a*sin(x[i]) - b*p2(cos(x[i] - c)))/(b*sin(x[i]) + a*cos(x[i])) - t1;
или, например, так
Код:
for i := Low(x) to High(x) do
  if cos(x[i]) > sin(x[i])
    then begin
      t := 0;
      for j := Low(x) to High(x) do t := t + p2(p2(x[j]) - sin(x[j])) / (1 - cos(x[i]));
      z[i] := a*cos(p2(xi - c)) + t;
    end else begin
      t := 0;
      for j := Low(x) to High(x) do t := t + (b*x[j] - a*p2(x[i]));
      z[i] := (a*sin(x[i]) - b*p2(cos(x[i] - c)))/(b*sin(x[i]) + a*cos(x[i])) - t;
    end;
Как видите это уже не константы. Хотя исходную запись я не нарушил.

Последний раз редактировалось macomics; 20.12.2022 в 19:02.
macomics вне форума Ответить с цитированием
Старый 20.12.2022, 21:50   #6
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,304
По умолчанию

Тут ещё вопрос.
Вычисление верхнего или нижнего выражения обусловлено отношение cos() и sin().
Но у меня для всех xi срабатывает только первое условие: cos() > sin().
Это действительно так, поскольку для малых xi sin(xi) == xi, а cos(xi) == 1.
Тут комбинация == означает "порядка", иначе - "около".
И к чему тогда второе выражение, если сумма равна нулю?

Короче - вопросы, вопросы и ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 20.12.2022, 22:13   #7
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Цитата:
Сообщение от ViktorR Посмотреть сообщение
Короче - вопросы, вопросы и ...
Типичная задача на потренироваться составлять выражения на языке pascal. Не программу, а сами выражения по формулам.
macomics вне форума Ответить с цитированием
Старый 20.12.2022, 22:26   #8
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,304
По умолчанию

Цитата:
Типичная задача на потренироваться составлять выражения на языке pascal. Не программу, а сами выражения по формулам.
Это понятно, но это садома...
У моего любимого автора Т.А. Павловская первая лаба на такую тему. Но там "издевательств" нет.
Там даются два выражения: одно сложное, а второе простое (после алгебраического преобразования первого).
Получается, что надо набрать два выражения и результат вычисления должен совпадать: контроль.
А тут и неначем проверить

Вопрос о качестве заданий тут уже поднимался.
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с программой pascal Ksenia2019 Помощь студентам 3 29.09.2017 23:38
Помогите с программой и не только (Pascal) Алексей37 Общие вопросы .NET 1 13.05.2015 17:55
Помогите с программой(Pascal) And1mx Помощь студентам 3 05.04.2007 21:52