1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code]. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
Задана таблица значений функции в конечном наборе точек. Точки распределены равномерно по заданному отрезку заданным шагом dx. Построить таблицу значений этой же функции в точках, равномерно распределенных по тому же отрезку с шагом dx/2. Значение определить методом интерполяции (в идеале - кубический сплайн).
... ...Яндекс немного помог в определениях но как делать в душе не представляю...Volvo, плиз не ругайся что тему не так создал и т.д. просто Я не знаю как ее назвать так чтобы было информативно, а тем кто знает помогите плиз, хотя бы с алгоритмом на словах...Программу просить уж не буду , но если дадите не обижусь... ... ...
///////////////////////////////////////////////////////////////////////// // arrays ///////////////////////////////////////////////////////////////////////// type Complex = record X, Y: Double; end;
TInteger1DArray = array of LongInt; TReal1DArray = array of Double; TComplex1DArray = array of Complex; TBoolean1DArray = array of Boolean;
TInteger2DArray = array of array of LongInt; TReal2DArray = array of array of Double; TComplex2DArray = array of array of Complex; TBoolean2DArray = array of array of Boolean;
///////////////////////////////////////////////////////////////////////// // Functions/procedures ///////////////////////////////////////////////////////////////////////// function AbsReal(X : Extended):Extended; function AbsInt (I : Integer):Integer; function RandomReal():Extended; function RandomInteger(I : Integer):Integer; function Sign(X:Extended):Integer;
function DynamicArrayCopy(const A: TInteger1DArray):TInteger1DArray;overload; function DynamicArrayCopy(const A: TReal1DArray):TReal1DArray;overload; function DynamicArrayCopy(const A: TComplex1DArray):TComplex1DArray;overload; function DynamicArrayCopy(const A: TBoolean1DArray):TBoolean1DArray;overload;
function DynamicArrayCopy(const A: TInteger2DArray):TInteger2DArray;overload; function DynamicArrayCopy(const A: TReal2DArray):TReal2DArray;overload; function DynamicArrayCopy(const A: TComplex2DArray):TComplex2DArray;overload; function DynamicArrayCopy(const A: TBoolean2DArray):TBoolean2DArray;overload;
function AbsComplex(const Z : Complex):Double; function Conj(const Z : Complex):Complex; function CSqr(const Z : Complex):Complex;
function C_Complex(const X : Double):Complex; function C_Opposite(const Z : Complex):Complex; function C_Add(const Z1 : Complex; const Z2 : Complex):Complex; function C_Mul(const Z1 : Complex; const Z2 : Complex):Complex; function C_AddR(const Z1 : Complex; const R : Double):Complex; function C_MulR(const Z1 : Complex; const R : Double):Complex; function C_Sub(const Z1 : Complex; const Z2 : Complex):Complex; function C_SubR(const Z1 : Complex; const R : Double):Complex; function C_RSub(const R : Double; const Z1 : Complex):Complex; function C_Div(const Z1 : Complex; const Z2 : Complex):Complex; function C_DivR(const Z1 : Complex; const R : Double):Complex; function C_RDiv(const R : Double; const Z2 : Complex):Complex; function C_Equal(const Z1 : Complex; const Z2 : Complex):Boolean; function C_NotEqual(const Z1 : Complex; const Z2 : Complex):Boolean; function C_EqualR(const Z1 : Complex; const R : Double):Boolean; function C_NotEqualR(const Z1 : Complex; const R : Double):Boolean;
implementation
///////////////////////////////////////////////////////////////////////// // Functions/procedures ///////////////////////////////////////////////////////////////////////// function AbsReal(X : Extended):Extended; begin Result := Abs(X); end;
function AbsInt (I : Integer):Integer; begin Result := Abs(I); end;
function RandomReal():Extended; begin Result := Random; end;
function RandomInteger(I : Integer):Integer; begin Result := Random(I); end;
function Sign(X:Extended):Integer; begin if X>0 then Result := 1 else if X<0 then Result := -1 else Result := 0; end;
///////////////////////////////////////////////////////////////////////// // dynamical arrays copying ///////////////////////////////////////////////////////////////////////// function DynamicArrayCopy(const A: TInteger1DArray):TInteger1DArray;overload; var I: Integer; begin SetLength(Result, High(A)+1); for I:=Low(A) to High(A) do Result[I]:=A[I]; end;
function DynamicArrayCopy(const A: TReal1DArray):TReal1DArray;overload; var I: Integer; begin SetLength(Result, High(A)+1); for I:=Low(A) to High(A) do Result[I]:=A[I]; end;
function DynamicArrayCopy(const A: TComplex1DArray):TComplex1DArray;overload; var I: Integer; begin SetLength(Result, High(A)+1); for I:=Low(A) to High(A) do Result[I]:=A[I]; end;
function DynamicArrayCopy(const A: TBoolean1DArray):TBoolean1DArray;overload; var I: Integer; begin SetLength(Result, High(A)+1); for I:=Low(A) to High(A) do Result[I]:=A[I]; end;
function DynamicArrayCopy(const A: TInteger2DArray):TInteger2DArray;overload; var I,J: Integer; begin SetLength(Result, High(A)+1); for I:=Low(A) to High(A) do begin SetLength(Result[I], High(A[I])+1); for J:=Low(A[I]) to High(A[I]) do Result[I,J]:=A[I,J]; end; end;
function DynamicArrayCopy(const A: TReal2DArray):TReal2DArray;overload; var I,J: Integer; begin SetLength(Result, High(A)+1); for I:=Low(A) to High(A) do begin SetLength(Result[I], High(A[I])+1); for J:=Low(A[I]) to High(A[I]) do Result[I,J]:=A[I,J]; end; end;
function DynamicArrayCopy(const A: TComplex2DArray):TComplex2DArray;overload; var I,J: Integer; begin SetLength(Result, High(A)+1); for I:=Low(A) to High(A) do begin SetLength(Result[I], High(A[I])+1); for J:=Low(A[I]) to High(A[I]) do Result[I,J]:=A[I,J]; end; end;
function DynamicArrayCopy(const A: TBoolean2DArray):TBoolean2DArray;overload; var I,J: Integer; begin SetLength(Result, High(A)+1); for I:=Low(A) to High(A) do begin SetLength(Result[I], High(A[I])+1); for J:=Low(A[I]) to High(A[I]) do Result[I,J]:=A[I,J]; end; end;
///////////////////////////////////////////////////////////////////////// // complex numbers ///////////////////////////////////////////////////////////////////////// function AbsComplex(const Z : Complex):Double; var W : Double; XABS : Double; YABS : Double; V : Double; begin XABS := AbsReal(Z.X); YABS := AbsReal(Z.Y); W := Max(XABS, YABS); V := Min(XABS, YABS); if V=0 then begin Result := W; end else begin Result := W*SQRT(1+Sqr(V/W)); end; end;
function Conj(const Z : Complex):Complex; begin Result.X := Z.X; Result.Y := -Z.Y; end;
function CSqr(const Z : Complex):Complex; begin Result.X := Sqr(Z.X)-Sqr(Z.Y); Result.Y := 2*Z.X*Z.Y; end;
function C_Complex(const X : Double):Complex; begin Result.X := X; Result.Y := 0; end;
function C_Opposite(const Z : Complex):Complex; begin Result.X := -Z.X; Result.Y := -Z.Y; end;
function C_Add(const Z1 : Complex; const Z2 : Complex):Complex; begin Result.X := Z1.X+Z2.X; Result.Y := Z1.Y+Z2.Y; end;
function C_Mul(const Z1 : Complex; const Z2 : Complex):Complex; begin Result.X := Z1.X*Z2.X-Z1.Y*Z2.Y; Result.Y := Z1.X*Z2.Y+Z1.Y*Z2.X; end;
function C_AddR(const Z1 : Complex; const R : Double):Complex; begin Result.X := Z1.X+R; Result.Y := Z1.Y; end;
function C_MulR(const Z1 : Complex; const R : Double):Complex; begin Result.X := Z1.X*R; Result.Y := Z1.Y*R; end;
function C_Sub(const Z1 : Complex; const Z2 : Complex):Complex; begin Result.X := Z1.X-Z2.X; Result.Y := Z1.Y-Z2.Y; end;
function C_SubR(const Z1 : Complex; const R : Double):Complex; begin Result.X := Z1.X-R; Result.Y := Z1.Y; end;
function C_RSub(const R : Double; const Z1 : Complex):Complex; begin Result.X := R-Z1.X; Result.Y := -Z1.Y; end;