Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 20.03.2019, 09:49   #1 (permalink)
Alessandro4
Member
 
Регистрация: 27.02.2019
Сообщений: 17
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Вычисления бесконечных сумм и определенных интегралов

Помогите решить задачу
Миниатюры
a4aea126-f24d-433c-8878-6836c0501c00.jpeg  
Alessandro4 вне форума   Ответить с цитированием

Старый 20.03.2019, 09:49
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Если воспользоваться поиском, то можно найти много полезного по вашему запросу

Паскаль. Вычисление интегралов
Нахождение интегралов

Старый 20.03.2019, 10:39   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Alessandro4 Посмотреть сообщение
Помогите решить задачу
Так. Ну начнем с того, что в методичке, как всегда, брехня. Ну вот не могут они без этого, прям кусок в горло не лезет, если не наврут! Имею в виду, что суммирование должно быть не от k=1, а от k=0, и это принципиальнейший момент!
Два вопроса.
1. Что означает n=1 (1) 5 ? Не понимаю.
2. "В заданных точках х" — это в каких? Где и кем они "заданы"?
Vladimir_S вне форума   Ответить с цитированием
Старый 20.03.2019, 10:42   #3 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

А, насчет первого вопроса — кажется, дошло: это, по всей вероятности, надо понимать, как "для n от 1 до 5 с шагом 1". Ладно.
Второй вопрос остается. Или можно взять произвольную сетку в интервале (-1,+1)?
Vladimir_S вне форума   Ответить с цитированием
Старый 20.03.2019, 12:51   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

И молчанье гробовое было ему ответом...
Ладно, вот Вам программа. Результат выводится в файл, каковой можно использовать для построения графиков (самостоятельного!!!):
Код:
Var
 x:Real;
 n,j:ShortInt;
 P:Array[1..5,-10..10] of Real;
 f:Text;

function Nfact(q:Byte):LongInt;
var
  i:Byte;
  fact:LongInt;
begin
  if q=0 then fact:=1 else
    begin
      fact:=1;
      for i:=1 to q do
        fact:=fact*i;
    end;
  Nfact:=fact;
end;

function Sign(d:Byte):ShortInt;
begin
 if ((d mod 2)=0) then Sign:=1 else Sign:=-1;
end;

function X2np(X:Real; n:Byte):Real;
Var i:Byte;
    Y:Real;
begin
  if n=0 then X2np:=1 else
  if n=1 then X2np:=X else
   begin
    Y:=X;
    for i:=2 to n do Y:=Y*X;
    X2np:=Y;
   end;
end;


function Pnx(n:byte; x:Real):Real;
var
 Sum:Real;
 k:Byte;
begin
 Sum:=0;
 for k:=0 to (n div 2) do
  Sum:=Sum+Sign(k)*Nfact(2*(n-k))/Nfact(k)/Nfact(n-k)/Nfact(n-2*k)*X2np(x,(n-2*k));
 Pnx:=Sum/X2np(2,n);
end;

Begin
 for n:=1 to 5 do
  for j:=-10 to 10 do
   P[n,j]:=Pnx(n,j/10);
 Assign(f,'Result.txt');
 ReWrite(f);
 Writeln(f,'                   n=1         n=2         n=3         n=4         n=5');
 for j:=-10 to 10 do
  begin
   write(f,' x = ',j/10:4:1,'   ');
   for n:=1 to 5 do write(f,P[n,j]:12:7);
   Writeln(f);
  end;
 Close(f);
End.
Vladimir_S вне форума   Ответить с цитированием
Старый 20.03.2019, 14:37   #5 (permalink)
Alessandro4
Member
 
Регистрация: 27.02.2019
Сообщений: 17
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Прошу прощения, не всегда есть доступ в интернет) Спасибо за код, буду изучать, кстати у однокурсников похожие задания, но код у них в разы меньше и проще и в предыдущем задании с методом Симпсона было тоже самое, не знаю в чем дело
Alessandro4 вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 20.03.2019, 14:55   #6 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Alessandro4 Посмотреть сообщение
но код у них в разы меньше и проще и в предыдущем задании с методом Симпсона было тоже самое
Ну уж... чем богаты!
Vladimir_S вне форума   Ответить с цитированием
Старый 21.03.2019, 14:34   #7 (permalink)
Alessandro4
Member
 
Регистрация: 27.02.2019
Сообщений: 17
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Препод сказал мол, создать одну подпрограмму(функцию) факториала и постоянно обращаться к ней при факториале. А можно как то без массива обойтись и сделать код покороче, попроще, ибо мне трудно вникать, препод сказал код можно хоть большим хоть на полстраницы сделать результат будет одинаковый
Alessandro4 вне форума   Ответить с цитированием
Старый 21.03.2019, 16:10   #8 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Alessandro4 Посмотреть сообщение
Препод сказал мол, создать одну подпрограмму(функцию) факториала и постоянно обращаться к ней при факториале.
А я что, по-Вашему, сделал? Так и есть — это функция Nfact. Кроме того, там ещё введены функции "знак" ("Sign") — это для -1^k, возведения в целую неотрицательную степень X2np и, собственно, вычисления полинома Лежандра Pnx. Сама же программа занимает всего несколько строк.
Цитата:
Сообщение от Alessandro4 Посмотреть сообщение
А можно как то без массива обойтись
Можно. Но не нужно. С массивом как раз проще, понятнее и компактнее. Ведь программа в итоге должна вывести результаты для 5 значений n и как минимум для 20 значений x. Такую вот таблицу. Так проще всего заранее сосчитать эту матрицу (массив).
Цитата:
Сообщение от Alessandro4 Посмотреть сообщение
препод сказал код можно хоть большим хоть на полстраницы сделать результат будет одинаковый
Извините, но за дурость Вашего препода я не отвечаю.
P.S. Может быть, я и неправ, но складывается у меня ощущение, что Вы не хотите толком учиться программированию, а хотите отныть зачёт у препода. Тут я Вам, извините, не помощник: без конца курочить программу в угоду вкусам и пристрастиям Вашего препода я не собираюсь. Хотите по сути разобраться — милости прошу, всегда рад помочь.
Vladimir_S вне форума   Ответить с цитированием
Старый 21.03.2019, 16:42   #9 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

И ещё.
Если Вы до сих пор не сподобились оттранслировать и запустить программу, то вот Вам результат её работы:
Result.txt
А это — построенные по полученным данным графики:
legan.jpg
Можете сравнить эти графики с картинкой из Вики (там, правда, еще построено для n=0):
250px-iiiai-eaiu_eaaeaiaedha.jpg
и убедиться в правильности работы программы.
Так что идёт Ваш препод... да-да, Вы правильно поняли.
Vladimir_S вне форума   Ответить с цитированием
Старый 23.03.2019, 13:54   #10 (permalink)
Alessandro4
Member
 
Регистрация: 27.02.2019
Сообщений: 17
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Как раз таки хочу учиться программированию, но полтора часа лекции и 4 пары практических по паскалю в две недели... Кхм.. да и тк у меня база(по паскалю) по приходу в ВУЗ была нулевая, мне сейчас немного тяжеловато. Насчет кода, у меня не получается запустить программу в паскале ABC
Вот задания к лабораторной работе:
Миниатюры
vlmto3s08me.jpg  
Alessandro4 вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 12:34.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.