Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Делфи _ Дано действительные числа х и натуральное n=5..10. Вычислить функции

Автор: Luna 28.10.2010 23:30

Всем приветик! Помогите пожалуйста решить, все в одном проекте надо сделать:
Дано действительные числа х и натуральное n=5..10. Вычислить функции


Эскизы прикрепленных изображений
Прикрепленное изображение

Автор: Lapp 29.10.2010 7:04

Цитата(Luna @ 28.10.2010 20:30) *
Дано действительные числа х и натуральное n=5..10. Вычислить функции
Непонятно.
Что значит n=5..10 ?
В суммах n изменяется от 0 или 1 до бесконечности.
Luna, будь добр, уточни условие, пожалуйста.

Автор: Luna 30.10.2010 18:16

Цитата(Lapp @ 29.10.2010 4:04) *

Непонятно.
Что значит n=5..10 ?
В суммах n изменяется от 0 или 1 до бесконечности.


n это верхняя граница, ее нужно самому задавать в пределах от 5 до 10, а нижняя 0 или 1

Автор: Lapp 30.10.2010 18:33

Цитата(Luna @ 30.10.2010 15:16) *
n это верхняя граница, ее нужно самому задавать в пределах от 5 до 10, а нижняя 0 или 1
n - это верхняя граница чего? n?
Будь добр, пиши условие нормально. А то понимать, что у тебя n это верхняя граница n - это для нормального ума непросто..

Автор: Luna 31.10.2010 16:32

Цитата(Lapp @ 30.10.2010 14:33) *

n - это верхняя граница чего? n?
Будь добр, пиши условие нормально. А то понимать, что у тебя n это верхняя граница n - это для нормального ума непросто..


Ну по смыслу выходит так, сам долго пытался понять. Нужно просто заменить переменную и все

Автор: Luna 2.11.2010 21:21

Вот, есть готовая прога, все что нужно в ней. Но, проблема с третьим примером SIN X, считает немного не верно.. Выдает не совсем верный ответ при n=5 и х=0,05. Ответ получается такой: 5,32720741873556E-5
Подскажите как исправить.
p.s. чтобы программу запустить надо везде ввести данные в n и x


Прикрепленные файлы
Прикрепленный файл  1.rar ( 192.3 килобайт ) Кол-во скачиваний: 229

Автор: TarasBer 2.11.2010 21:54


for i:= 2 to strtoint(edit7.Text) do
fact:=fact*(2*i-1);


Эта строчка не считает факториал.

for i:= 2 to strtoint(edit7.Text) do
fact:=fact*(2*i-1)*(2*i-2);


Проверь.

Кстати, x^n не надо каждый раз считать заново. Лучше завести отдельную переменную, назвать её xn, инициализировать как икс и умножать при каждой итерации (кроме первой) на x*x.
И икс тоже лучше сразу отдельно запомнить, а не писать каждый раз StrToFloat...

Автор: volvo 2.11.2010 22:00

Luna, ну ведь столько раз уже жевано - пережевано, как считается сумма ряда - нет, опять надо сделать неправильно! Повторяю еще раз: НАЧИНАЕТСЯ вычисление суммы ряда с нахождения, что надо сделать с n-ым членом ряда, чтобы он превратился в (n+1)-ый член ряда. Как это делается? Очень просто: делим An+1 на An. В твоем конкретном случае для синусов:

(-1)(n+1)-1*X2(n+1)-1 / (2(n+1) - 1)! делим на (-1)n-1*X2n-1 / (2n - 1)!

Путем несложных преобразований получаем, что частное равно - X2/(2n * (2n+1))

То есть, чтобы получить из ЛЮБОГО члена последовательности следующий, надо домножить его на то, что написано красным цветом. И все, первый элемент равен Х, как получить следующие - известно, никаких тебе экспонент, никаких возведений в степень, никаких вычислений факториалов, просто один цикл, получай следующий элемент и считай сумму.

Цитата
Выдает не совсем верный ответ при n=5 и х=0,05. Ответ получается такой: 5,32720741873556E-5
Сказал "А", говори и "Б". В смысле, КАКОЙ должен быть по-твоему ответ?

Автор: Luna 2.11.2010 22:40

Цитата(TarasBer @ 2.11.2010 17:54) *


for i:= 2 to strtoint(edit7.Text) do
fact:=fact*(2*i-1);


Эта строчка не считает факториал.

for i:= 2 to strtoint(edit7.Text) do
fact:=fact*(2*i-1)*(2*i-2);


Проверь.

Нет, все равно не то. Понимаете, итог не должен быть отрицательным.. и не должен быть не понятный конец
( -1,38131925934753E-7 ), должно быть обычое положительное число, там что то к примеру 1,323489214

Автор: мисс_граффити 3.11.2010 12:54

Цитата
и не должен быть не понятный конец

действительно... непонятный какой-то. четкого хэппи-энда нет (типа: "И жили они долго и счастливо")...

Luna, почитай про форматы представления чисел, тогда поймешь, что значит такая запись.
И почему он, кстати, не должен быть отрицательным?


Автор: TarasBer 3.11.2010 14:10

> И почему он, кстати, не должен быть отрицательным?

> при n=5 и х=0,05

Должно получиться

m0 = 0.05
m0-m0**3/(1*2*3)+m0**5/(1*2*3*4*5)-m0**7/(1*2*3*4*5*6*7)+m0**9/(1*2*3*4*5*6*7*8*9) = 0.04997916927067833

Автор: Luna 3.11.2010 22:30

Цитата(TarasBer @ 3.11.2010 10:10) *

> И почему он, кстати, не должен быть отрицательным?

> при n=5 и х=0,05

Должно получиться

m0 = 0.05
m0-m0**3/(1*2*3)+m0**5/(1*2*3*4*5)-m0**7/(1*2*3*4*5*6*7)+m0**9/(1*2*3*4*5*6*7*8*9) = 0.04997916927067833


а теперь не подскажете что нужно сделать чтоб так у меня в программе считало? smile.gif

Автор: TarasBer 3.11.2010 22:46

Цитата(Luna)

а теперь не подскажете что нужно сделать чтоб так у меня в программе считало?


Ну вот же, написано:

Цитата(volvo)

И все, первый элемент равен Х, как получить следующие


Цитата(volvo)

надо домножить его на



Цитата(volvo)

X2/(2n * (2n+1))


Цитата(volvo)

просто один цикл, получай следующий элемент и считай сумму.

Автор: Luna 8.11.2010 3:54

не ну понятно, а что и где в коде то дописать, изменить? Я в программировании то как то не силен(

Автор: Lapp 8.11.2010 7:47

Цитата(Luna @ 7.11.2010 23:54) *
что и где в коде то дописать, изменить? Я в программировании то как то не силен(

Достали уже просьбами изменить им чужой код, чтоб им сдать! Ты поройся в форуме, посмотри, сколько я уже ругался с такими. Пойми - никому тут НЕ НУЖНО, чтоб ты СДАЛ. Нам тут ЛУЧШЕ, чтоб ты ЗАВАЛИЛ, если все равно не хочешь учитья. Вот дай мне хоть одну нормальную причину, почему я тебе должен помогать обманывать препа и всех остальных. Кому от этого станет лучше? Ты понял меня, неуч??

Вот если ты придешь и скажешь: хочу научиться. Дашь одну задачу (а не список из д.з.). Покажешь, как ты сам пытался ее сделать - пусть всего два оператора, и те неправильно. ВОт тогда я урву пару часов от своего сна, чтоб помочь челу, который ХОЧЕТ НАУЧИТЬСЯ. Будет диалог, и я сделаю максимум, чтоб ты понял.

А так - я и пальцем не пошевелю. Вали отсюда и не отравляй атмосферу.