RRYTY писал(а):Но осознать некогда, роботы атакуе, прога почему-то напечатала очереднму ...
Вот она сама себя может и воспроизвести, вот, по моей просьбе, она и напечатала, проверяйте:
- Попробовал твое рисование - не впечатлило. Вместо моста, кота нарисовал. Попробуй мне написать функцию вычисления чисел Фибоначчи на языке Паскаль
*Конечно, вот пример функции вычисления чисел Фибоначчи на языке Паскаль:
function fibonacci(n: integer): integer;
begin
if (n = 0) then
fibonacci := 0
else if (n = 1) then
fibonacci := 1
else
fibonacci := fibonacci(n - 1) + fibonacci(n - 2);
end;
Вы можете вызвать эту функцию, передавая ей номер числа Фибоначчи, которое вы хотите вычислить. Например, fibonacci(10) вернет значение 55. Надеюсь, это поможет вам!
- А теперь мне нужен код быстрого преобразования Фурье на Паскале
*Приведенный ниже код демонстрирует простую реализацию быстрого преобразования Фурье на языке программирования Pascal:
program FFT;
const
N = 8;
type
Complex = record
RealPart: real;
ImagPart: real;
end;
var
Input: array[0..N-1] of Complex;
Output: array[0..N-1] of Complex;
Omega: array[0..N-1] of Complex;
procedure FFTRecursive(var X: array of Complex; var Y: array of Complex; s: integer; s2: integer; N: integer);
var
i, j, k: integer;
t, w: Complex;
begin
if N = 1 then
begin
Y[s] := X[s];
end
else
begin
FFTRecursive(X, Y, s, s2, N div 2);
FFTRecursive(X, Y, s+s2, s2, N div 2);
for k := 0 to N div 2 - 1 do
begin
i := s+k;
j := s+k+N div 2;
w.RealPart := cos(2*Pi*k/N);
w.ImagPart := -sin(2*Pi*k/N);
t.RealPart := w.RealPart * Y[j].RealPart - w.ImagPart * Y[j].ImagPart;
t.ImagPart := w.RealPart * Y[j].ImagPart + w.ImagPart * Y[j].RealPart;
Y[j].RealPart := Y[i].RealPart - t.RealPart;
Y[j].ImagPart := Y[i].ImagPart - t.ImagPart;
Y[i].RealPart := Y[i].RealPart + t.RealPart;
Y[i].ImagPart := Y[i].ImagPart + t.ImagPart;
end;
end;
end;
begin
Input[0].RealPart := 1;
Input[0].ImagPart := 0;
Input[1].RealPart := 2;
Input[1].ImagPart := 0;
Input[2].RealPart := 3;
Input[2].ImagPart := 0;
Input[3].RealPart := 4;
Input[3].ImagPart := 0;
Input[4].RealPart := 5;
Input[4].ImagPart := 0;
Input[5].RealPart := 6;
Input[5].ImagPart := 0;
Input[6].RealPart := 7;
Input[6].ImagPart := 0;
Input[7].RealPart := 8;
Input[7].ImagPart := 0;
FFTRecursive(Input, Output, 0, 1, N);
for i := 0 to N-1 do
begin
writeln('FFT of Input[', i, '] = ', Output[i].RealPart:0:2, ' + ', Output[i].ImagPart:0:2, 'i');
end;
end.
Этот код реализует рекурсивный алгоритм быстрого преобразования Фурье для массива комплексных чисел заданного размера. Он выполняет преобразование на восьми элементах входного массива Input и сохраняет результат в массиве Output. Каждый элемент результата выводится на экран с вещественной и мнимой частями.
Пожалуйста, обратите внимание, что данный код представлен только в качестве примера и может потребоваться дальнейшая доработка и оптимизация для удовлетворения ваших конкретных требований и особенностей проекта.