Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.12.2010, 15:48   #1
h8#
Новичок
Джуниор
 
Регистрация: 07.12.2010
Сообщений: 2
Вопрос Интерполирование полиномом Чебышева

Портировал найденный мною код с C++ на Delphi. На C++ программа работала и выдавала верные значения, но после запуска на Delphi на строках обнуляет весь массив A.
Код:
 for j:=1 to n-1 do
  for i:=n-1 downto j do
   if (A[i,j]>1E-30) or (A[i,j]<-1E-30) then
    begin
     temp:=A[i-1,j]/A[i,j];
     for k:=j to n do
      A[i,k]:=A[i,k]*temp-A[i-1,k];
     Z[i]:=Z[i]*temp-Z[i-1];
    end;
Код:
function TForm1.Pol(xx:extended):extended;
begin
 for i:=1 to n do
  for j:=1 to n do
   if (X[i]=0) and (j=1) then
    A[i,j]:=1
   else
    A[i,j]:=Power(X[i],j);

 for i:=1 to n do
  Z[i]:=Y[i];

 for j:=1 to n-1 do
  for i:=n-1 downto j do
   if (A[i,j]>1E-30) or (A[i,j]<-1E-30) then
    begin
     temp:=A[i-1,j]/A[i,j];
     for k:=j to n do
      A[i,k]:=A[i,k]*temp-A[i-1,k];
     Z[i]:=Z[i]*temp-Z[i-1];
    end;

 for i:=1 to n do
  for j:=1 to n do
   StringGrid2.Cells[i,j]:=FloatToStr(A[i,j]);

 for i:=n-1 downto 1 do
  begin
   dM:=0;
   for j:=i+1 to n do
    dT:=dM+A[i,j]*C[j];
    dM:=dT;
    C[i]:=(Z[i]-dM);
  end;

 {for i:=1 to n do
  dY:=dY+C[i]*Power(xx,i)/A[i,i];}

 Pol:=dY;
end;
Код:
void __fastcall TForm3::FormShow(TObject *Sender)
{ int i,j,k;
float M,y=0,temp;
float** A = new float*[n];
for (i=0; i<n; i++)
A[i] = new float[n];
for (i=0; i<n; i++)
for (j=0; j<n; j++)
if(X[i]==0 && j==0) A[i][j]=1;
else A[i][j] = pow(X[i],j);
float* Z = new float[n];
for (i=0; i<n; i++)
Z[i] = Y[i];
for(j=0; j<n-1; j++)
for(i=n-1; i>j; i--)
if (A[i][j] > 1.0E-30 || A[i][j] < -1.0E-30) {
temp = A[i-1][j] / A[i][j];
for (k=j; k<n; k++)
A[i][k] = A[i][k]*temp-A[i-1][k];
Z[i]= Z[i]*temp-Z[i-1]; }
float* C = new float[n];
for(i=n-1; i>=0; i--){
if(A[i][i]==0)
ShowMessage("Решения нет!");
M=0;
for(j=i+1;j<n;j++)
M+=A[i][j]*C[j];
C[i]=(Z[i]-M)/A[i][i];
}
for(i=0; i<n; i++)
y+=C[i]*pow(xx,i);
Edit1->Text=FloatToStr(xx).SetLength(8) ;
Edit2->Text=FloatToStr(y) ;
delete [] C;
}

Последний раз редактировалось h8#; 07.12.2010 в 15:59.
h8# вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ряд Тейлора и Полиномы Чебышева - что лучше? Ivan_32 Свободное общение 1 22.06.2010 19:08
Интерполирование функции LediDashuta Помощь студентам 2 24.05.2010 22:18
Многочлен чебышева Rыся Помощь студентам 2 11.01.2010 08:37
Помогите....с полиномом! alisa87 Общие вопросы C/C++ 1 26.05.2009 16:13
Интерполирование в Mathcad TIN Фриланс 2 15.12.2008 17:38