Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 3 169

/ вопрос открыт /

Здравствуйте, эксперты!
Так как в разделе "программирование в Паскале" не удается задать вопрос - задам здесь.
Начал проходить полиномы
Дали задание:
условие - не использовать массивы
ввести многочлен P(x)=p0+p1*x+p2*x^2+p3*x^3....pn^n
затем найти и вывести P(x^3)*(a+b*x+c*x^2)
объясните пожалуйста как решать ....
заранее спасибо!
очень надеюсь на вашу помощь...

Ruslan Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Ruslan (статус: 1-ый класс)
Вопрос отправлен: 10 сентября 2009, 12:10
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 17; последнее сообщение — 10 сентября 2009, 13:38; участников в обсуждении: 3.
min@y™

min@y™ (статус: Доктор наук), 10 сентября 2009, 12:19 [#1]:

Ну, раз на паскале, то можно использовать вместо массива связний список указателей на коэффициенты, а можно использовать рекурсивный ввод/вывод, т.е. либо использовать динамическую память, либо стек.
Можно ещё, зная порядок полинома (n) выделить память для хранения коэффициентов сразу одним куском, а потом читать их оттуда для вычисления значения функции.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Ruslan

Ruslan (статус: 1-ый класс), 10 сентября 2009, 12:25 [#2]:

да тут вообще не идет речь о реализации пока что(
я хочу узнать теорию как это делается
вот допусти я знаю что полином можно вычислить по схеме горнера:
uses crt;
const
anMax = 3;
An: array[0..anMax] of real = (1,2,3,4);
{ Тут описан следующий полином: Pn(x)=1 + 2*x + 3*x^2 + 4*x^3 }
function Pn(x: real): real;
var
i: integer;
Res: real;
begin
Res:=0;
i:=anMax;
while i>=0 do
begin
Res:=Res*x+An[i];
i:=i-1;
end;

Pn:=Res;
end;

begin
write(pn(2));
end.

это пример когда с массивом но оч просто переделать под решение без массивов и чтобы мы вводили n и числа - а потом выводили результат

вообщем меня интересует теория....
а не выделение памяти и т.д.
пожалуйста обьясните как вычислить P(x^3)(a+bx+cx^2)
заранее спасибо!
Вадим К

Вадим К (статус: Академик), 10 сентября 2009, 12:39 [#3]:

м, проблема со степенями что ли?
P*(x*x*x)*(a+b*x+c*x*x)
или
P*(exp(3*ln(x)))*(a+b*x+c*sqr(x))
Галочка "подтверждения прочтения" - вселенское зло.
Ruslan

Ruslan (статус: 1-ый класс), 10 сентября 2009, 12:45 [#4]:

не то((
вообщем можете обьяснить как посчитать
P(x^3)(a+bx+cx^2)
если дан P(x)
вот!
Ruslan

Ruslan (статус: 1-ый класс), 10 сентября 2009, 12:47 [#5]:

просто условие похоже не могу обьяснить((
Вадим К

Вадим К (статус: Академик), 10 сентября 2009, 12:55 [#6]:

а как дан P(x)? как функция? И в чем то сложность? если задано P(x), то вычислить P(x^3) абсолютно не сложно. а потом просто умножить и всё. Или будет понятнее, если я условие запишу так
вычислить значение многочлена
(p0+p1*(x^3)+p2*(x^3)^2+p3*(x^3)^3....pn^n)*(a+bx+cx^2)
Галочка "подтверждения прочтения" - вселенское зло.
Ruslan

Ruslan (статус: 1-ый класс), 10 сентября 2009, 12:58 [#7]:

дан P(x)
то есть вводим n,x
а потом числа p0,p1,p2
потом вводим a,b,c для квадратного уравнения
но мы не должны использовать массивов!

P(x^3)=(p0+p1*(x^3)+p2*(x^3)^2+p3*(x^3)^3....pn^n)
да!
а как умножать то потом будем многочлен на (a+bx+cx^2)
вот это не понятно!
или квадратное уравнение станет просто числом?
Ruslan

Ruslan (статус: 1-ый класс), 10 сентября 2009, 13:00 [#8]:

P(x^3)=(p0+p1*(x^3)+p2*(x^3)^2+p3*(x^3)^3....pn^n)

поправлю
P(x^3)=(p0+p1*(x^3)+p2*(x^3)^2+p3*(x^3)^3....p^n*(x^n))
Ruslan

Ruslan (статус: 1-ый класс), 10 сентября 2009, 13:04 [#9]:

но я думаю, что не все так просто (что квадратное уравнение не станет числом)
вот пояснения
нам же задали несколько задач
вот вторая например:
дан p(x)=p0+p1*x+p2*x^2+p3*x^3+pn*x^n
вычислить p(x)*(a+bx+cx^2)
=p0'+p1'*x+p2'*x+...
и преподаватель говорил что здесь "накладывается" что-то
то есть, что это пример посложнее чем первый
поэтому квадратное уравнение не превращается в число((
min@y™

min@y™ (статус: Доктор наук), 10 сентября 2009, 13:07 [#10]:

Квадратный трёхчлен станет числом! Ибо икс ИЗВЕСТЕН!!!
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Вадим К

Вадим К (статус: Академик), 10 сентября 2009, 13:09 [#11]:

скобки можно конечно раскрыть, но ... Мне почему то кажется, что Вы пытаетесь решить задачу как простой математик. А надо как программист. а это делаем так
-вводим все коэфициенты
рассчитаем t1 = x^3
рассчитаем t2 = P(t1)
рассчитаем t3 = (a+bx+cx^2)
рассчитаем t4 = t2*t3
выведем t4.

Цитата:

но мы не должны использовать массивов!

а я массива в решении и не вижу, хотя хранить коэффициенты где то надо и наиболее оптимально это делать в массиве.
Но есть заковырка одна. Если использовать метод Горнера, и ввести числа в "правильной последовательности, то всё будет хорошо.
Вводим вначале x.рассчитываем его куб. а теперь в цикле запрашиваем коэфициенты для многочлена
вот мнемокод
t1 = x^3;
p = t1;
r = 0;
повторять
read(p);
r = r+p*t1;
t1 = t1 * p;
пока есть коефициенты.
рассчитаем t3 = (a+bx+cx^2)
рассчитаем t4 = r*t3
Галочка "подтверждения прочтения" - вселенское зло.
Ruslan

Ruslan (статус: 1-ый класс), 10 сентября 2009, 13:14 [#12]:

это все ясно
вот именно чему нас учат на 1 курсе))
решать задачу вначале как математики
а потом уже писать
ваше решение понятно и ясно
но все ж я думаю, что нельзя представлять квадратное уравнение как число и после нахождения полинома P(x^3) просто умножить




>>вот пояснения
нам же задали несколько задач
вот вторая например:
дан p(x)=p0+p1*x+p2*x^2+p3*x^3+pn*x^n
вычислить p(x)*(a+bx+cx^2)
=p0'+p1'*x+p2'*x+...
и преподаватель говорил что здесь "что-то на что-то накладывается"

то есть, что это пример посложнее чем первый
поэтому квадратное уравнение не превращается в число((
Ruslan

Ruslan (статус: 1-ый класс), 10 сентября 2009, 13:15 [#13]:

надо думать не как программер - а как математик в данном примере имхо - иначе пример не будет иметь никакого смысла!
Ruslan

Ruslan (статус: 1-ый класс), 10 сентября 2009, 13:16 [#14]:

вот я и хотел спросить что будет когда P(x^3)*квадратное уравнение!
Вадим К

Вадим К (статус: Академик), 10 сентября 2009, 13:24 [#15]:

что будет? просто число. если известны все коэффициенты, то любое выражение может быть превращено в число.
Чем второй пример сложнее - я не понимаю. Вот если были бы неизвестны a,b,c - вот тогда другое дело.
Эту задачу можно решать как математик - ввести все коэффициенты, потом сделать преобразования с раскрытием скобок, приведением коэффициентов... и так далее до удобной для вычисления формы. и только потом сосчитать. Но это уже может попахивать крупной дипломной работой.
Галочка "подтверждения прочтения" - вселенское зло.
Ruslan

Ruslan (статус: 1-ый класс), 10 сентября 2009, 13:30 [#16]:

понятно
сегодня я узнаю истину!
спасибо за помощь!
огромное спасибо!
min@y™

min@y™ (статус: Доктор наук), 10 сентября 2009, 13:38 [#17]:

У всех на первом курсе по программизму были такие задачи и все их решали численными методами.
Хватит заниматься ерундой, делай, как все. Препод твой гонит или ты чего-то не понял.
Не путай квадратное уравнение ax2 + bx + с = 0 с квадратным трёхчленом (ax2 + bx + с). Это разные вещи.
Напиши несколько функций:

  • вычисление степени аргумента;
  • вычисление значения полинома;
  • вычисление значения квадратного трёхчлена.

Затем воспользуйся ими для получения конечного результата.
И не надо морочить людям бошки высказываниями, типа "и преподаватель говорил что здесь "что-то на что-то накладывается"".
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:31
Выполнено за 0.03 сек.