Схема Горнера - Pascal (10276)
Формулировка задачи:
Даны натуральное числа n, действительные числа x, y, an, bn, an-1, bn-1, ... , a0, b0. Вычислить по схеме Горнера значение многочлена с комплексными коэффициентами
(an + ibn)(x + iy)n + (an-1 + ibn-1)(x + iy)n-1 + ... + (a0 + ib0).
(Определить процедуры выполнения арифметических операций над комплексными числами.)
(x + iy)n-1 - в степени n-1
Прошу помочь, потому что вообще не представляю что нужно делать.
Up..
up
Решение задачи: «Схема Горнера»
textual
Листинг программы
Program Gorner; var y,x,f,e,m,l:real; i,k,j,n:integer; a,b:array[0..30] of real; procedure AddC(x,y,a,b: real; var c,d: real); begin c:= x + a; d:= y + b; end; procedure MulC(x,y,a,b: real; var c,d: real); begin c:= x * a; d:= y + b; end; begin Writeln('BBeguTe x:'); readln(x); writeln('BBeguTe y:'); readln(y); m:=x; l:=y; writeln('Vvedite N:'); readln(n); for i:=n downto 0 do begin writeln('Vvedite a[',i,']:'); readln(a[i]); end; f:=0; e:=0; k:=n; for i:=n downto 0 do begin if i<>0 then begin x:=m; y:=l; for j:=1 to i-1 do MulC(x,y,m,l,x,y); end else x:=1; MulC(x,y,a[k],b[k],x,y); AddC(f,e,x,y,f,e); k:=k-1; end; Writeln('Otvet= ',f:2:2,'+i',e:2:2); readln; end.
Объяснение кода листинга программы
- В начале программы объявляются переменные y, x, f, e, m, l типа real и переменные i, k, j, n типа integer. Также объявляется массив a[0..30] типа real.
- В процедуре AddC переменные c и d инициализируются суммой x и a, и суммой y и b соответственно.
- В процедуре MulC переменные c и d инициализируются произведением x и a, и y и b соответственно.
- В основной части программы считываются значения x, y, n и a[i] для i от 0 до n.
- Переменные f и e инициализируются нулем, а переменная k инициализируется значением n.
- Затем происходит цикл for, который выполняется n раз. Внутри цикла проверяется условие i<>0. Если оно истинно, то значения x и y считываются из предыдущих значений m и l, и выполняется вызов процедур MulC и AddC.
- Если условие i<>0 не выполняется, то значение x считывается равным 1, и выполняется вызов процедуры MulC и AddC с текущими значениями y, f и e.
- После завершения цикла k уменьшается на 1.
- В конце программы выводится ответ f и e.
- Программа завершается вызовом функции readln.