Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 19.12.2012, 16:26   #1 (permalink)
Kampuchiec
Member
 
Регистрация: 05.12.2012
Сообщений: 27
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Помогите с программой на Паскале

Всем привет, помогите с программой.
Дана формула:f(x)=2/pi-4/3*pi(cos2x+cos4x/5+cos6x/7+....)
Нужно найти f(x),введя x c консоли и сравнить результат с Eps. Eps тоже ввести с консоли, условие f(x)<eps. Желательно через циклы while или repeat. Заранее благодарю.
Kampuchiec вне форума   Ответить с цитированием

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

Созданная вами тема имеет сходства со следующими

Помогите с программой
Помогите с программой на паскале

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

Нет, ну положительно - пора мне на свалку истории. Второе за день задание - и ни бельмеса понять не могу!
1. Не улавливаю закономерности членов суммы в скобках. Вот если бы первый член был cos2x/3 - тогда другое дело, тогда это было cos(2*k*x)/(2*k-1), k=1,2,3... А так .
2. Откуда следует, что эта функция вообще сходится к чему бы то ни было, тем более к какой-то малой величине? Почему Вы считаете, что функция, в зависимости от количества слагаемых, будет монотонно уменьшаться? Странно. Так, при x = π/2
f(x) = 2/π-4*π/3*(π/4-1) ≈ -0.41

А вот если х = 0, то ряд и вовсе расходится.
Ну и как прикажете это самое "Eps" задавать?
Vladimir_S вне форума   Ответить с цитированием
Старый 19.12.2012, 17:43   #3 (permalink)
Kampuchiec
Member
 
Регистрация: 05.12.2012
Сообщений: 27
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Eps любое. там есть закономерность только что бы её задать нужно две переменных делать. Может мне скинуть код, с ним может по понятнее будет, я просто набросал там, но считает не правильно
Kampuchiec вне форума   Ответить с цитированием
Старый 19.12.2012, 17:47   #4 (permalink)
Kampuchiec
Member
 
Регистрация: 05.12.2012
Сообщений: 27
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

И еще это разложение Фурье на косинусы.(по моему)
Kampuchiec вне форума   Ответить с цитированием
Старый 19.12.2012, 19:18   #5 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Kampuchiec Посмотреть сообщение
Eps любое. там есть закономерность только что бы её задать нужно две переменных делать.
Цитата:
Сообщение от Kampuchiec Посмотреть сообщение
И еще это разложение Фурье на косинусы.(по моему)
Час от часу не легче! Теперь еще и Фурье с какого-то боку. Что же, прикажете систему интегральных уравнений решать, чтобы восстановить по коэффициентам разлагаемую периодическую функцию? Или как?
Цитата:
Сообщение от Kampuchiec Посмотреть сообщение
Может мне скинуть код, с ним может по понятнее будет, я просто набросал там, но считает не правильно
Ну скиньте, что Вы там "набросали", посмотрим.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 20.12.2012, 02:57   #6 (permalink)
Kampuchiec
Member
 
Регистрация: 05.12.2012
Сообщений: 27
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Ну вот как то так))
Цитата:
program def;
uses crt;
var s,a,i,fx,t,g,x,eps:real;
begin
write('X=');
readln(x);
write('eps=');
readln(eps);
i:=3.0;
s:=2.0;
t:=(2.0/pi)-(4.0/(3.0*pi));
fx:=0;
g:=cos(2*x);
repeat
a:=cos((2.0*s*x)/(2.0*i-1.0));
fx:=fx+a;
i:=i+1.0;
s:=s+1.0;
writeln('fx=',fx:0:5);
until ((fx+g)*t<eps);
readln;
end.
Kampuchiec вне форума   Ответить с цитированием
Старый 20.12.2012, 13:42   #7 (permalink)
Kampuchiec
Member
 
Регистрация: 05.12.2012
Сообщений: 27
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Вот функция.
Идет до бесконечности с периодом равным pi и ограниченной снизу нулем, а сверху единицей.
Миниатюры
oioi0027.jpg  
Kampuchiec вне форума   Ответить с цитированием
Старый 23.12.2012, 10:13   #8 (permalink)
Kampuchiec
Member
 
Регистрация: 05.12.2012
Сообщений: 27
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

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

Цитата:
Сообщение от Kampuchiec Посмотреть сообщение
Помогите если не сложно..
Не только сложно, но и вовсе невозможно.
Прежде всего - почему вы считаете допустимым и правильным выкладывать задания, написанные не рукой с участием головы, а левой задней ногой? Как, скажите на милость, мы должны догадаться, что запись
f(x)=2/pi-4/3*pi(cos2x+cos4x/5+cos6x/7+....)
следует понимать (а это следует из Вашего кода), как
f(x)=(2/pi-4/3*pi)*(cos2x/3+cos4x/5+cos6x/7+....)?
Теперь дальше. Ранее я Вам пытался объяснить, что задание в том виде, как оно выложено (с учетом или без учета вышеприведенного исправления) - некорректно. Рассуждал о сходимости, примеры приводил... Всё - мимо. Напишите, да и всё. Хорошо. Вот Вам программа, написанная по Вашему заданию, протестированная при х=0 (см.рисунок), в которой на экран выведены результаты суммирования ряда в зависимости от количества учтенных членов. Как я Вам и писал раньше, налицо - медленная логарифмическая расходимость, и ни к какому малому пределу указанная сумма сходиться не желает.
Код:
Var
 x,eps,t,Sum,a:real;
 k:Integer;
Begin
 Write('x= ');
 Readln(x);
 Write('eps= ');
 Readln(eps);
 t:=2.0/Pi-4.0*Pi/3.0;
 k:=0;
 Sum:=0;
 Repeat
  Inc(k);
  a:=Cos(x*2*k)/(2*k-1);
  Sum:=Sum+a;
  Writeln('k=',k:2,'  f(x)=',Sum*t:8:5);
 Until (Abs(Sum*t)<Eps) or (k=22); 
 Readln;
End.
Такая ситуация может IMHO иметь два объяснения:
1. Вы, как обычно, напрочь переврали формулировку задания и допустили несколько ошибок в постановке задачи. Тем более, что подобные перлы в Ваших сообщениях появляются не впервые. Если так, сверьте задание и исправьте.
2. Ваши преподаватели - это сборище безграмотных идиотов. В таком случае, примите мои соболезнования.
Всё.
Миниатюры
aaa01.jpg  
Vladimir_S вне форума   Ответить с цитированием
Старый 23.12.2012, 13:40   #10 (permalink)
Kampuchiec
Member
 
Регистрация: 05.12.2012
Сообщений: 27
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Спасибо. Насчет заданий учту. Исправлюсь.
Kampuchiec вне форума   Ответить с цитированием
Ads

Яндекс

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


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

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




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

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