![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 13.04.2008
Сообщений: 9
|
![]()
Может кто-нибудь помочь перевести Delphi код в C# ? код очень простой, но С# не знаю..
const CountF=3; type Arr=array[0..1] of real; Arr2=array [0..1,0..1] of real; Arr3=array [0..2,0..1] of real; ArrSimp=array[0..2] of real; type TLogic= class public procedure Dihotomiya(a,b,eps:real;var Iter:Integer;var AnswerX:real;var Answerf:real); procedure Newton(x,y,eps:real;var Iter:Integer;var AnswerX:Arr;var Answerf:real); procedure Simplex(eps,x,y:real;var Answer:Arr; var Answerf:real;var Iter:integer); private function f(x:real):real; function Round(x,eps:real):real; function df(x:Arr):Arr; function proizv(x:Arr;y:Arr2):Arr; function Gesse(x:Arr):Arr2; function df2(X11:Arr2;x:Arr):Arr2; function SimpF(x,y:real): real; end; implementation procedure TLogic.Dihotomiya(a,b,eps:real;var Iter:Integer;var AnswerX:real;var Answerf:real); var x1,x2,delta,f1,f2,EpsMeth:real; Begin Iter:=0; delta:=eps/4; repeat Iter:=Iter+1; x1:=(a+b-delta)/2; x2:=(a+b+delta)/2; f1:=f(x1); f2:=f(x2); if f1<=f2 then b:=x2 else a:=x1; EpsMeth:=(b-a)/2; until EpsMeth<=eps; AnswerX:=(a+b)/2; Answerf:=f(AnswerX); end; function TLOgic.f(x:real):real; var Temp:real; Begin Temp:=Exp(-x)+Math.Power(x,4); Result:= Temp; end; procedure TLogic.Newton(x,y,eps:real;var Iter:Integer;var AnswerX:Arr;var Answerf:real); var it1:integer; x0,x1: Arr; //ïåðåìåííûå df1,proiz:Arr; Gess:Arr2; Begin Iter:=0; x1[0]:=x; x1[1]:=y; repeat x0:=x1; Gess:=Gesse(x0); Iter:=Iter+1; df1:=df(x0); Gess:=df2(Gess,x0); proiz:=proizv(df1,Gess); for it1:=0 to Length(x1)-1 do x1[it1]:=x0[it1]- proiz[it1]; until ((Abs(x1[0]-x0[0])<=eps) AND ((Abs(x1[1]-x0[1])<=eps)) OR (Iter=50)); AnswerX:=x1; Answerf:=0; end; function TLogic.df(x:Arr):Arr; var Temp:Arr; Begin // Temp[0]:=3*SQR(x[0])-3; // Temp[1]:=2*x[1]-2; // Temp[0]:=8*x[0]-4*x[1]+1; // Temp[1]:=6*x[1]-4*x[0]; Temp[0]:=2*x[0]-40*x[0]*(x[1]-Sqr(x[0]))-2; Temp[1]:=20*x[1]-20*Sqr(x[0]); //Temp[0]:=(exp(-0.5*x[0])*(-0.5-0.5*sqr(x[0])+2*x[0]))*sin(x[1]); //Temp[1]:=(1+sqr(x[0]))*exp(-0.5/x[0])*cos(x[1]); Result:=Temp; end; function TLogic.proizv(x:Arr;y:Arr2):Arr; var Temp:Arr; i,j:integer; Begin for i:=0 to Length(x)-1 do Temp[i]:=0; for i:=0 to Length(x)-1 do for j:=0 to Length(x)-1 do Temp[i]:=x[j]*y[j,i]+Temp[i]; Result:=Temp; end; function TLogic.Gesse(x:Arr):Arr2; var Temp:Arr2; Begin Temp[0,0]:=120*Sqr(x[0])-40*x[1]+2; Temp[0,1]:=-40*x[0]; Temp[1,0]:=Temp[0,1]; Temp[1,1]:=20; result:=Temp; End; function TLogic.df2(X11:Arr2;x:Arr):Arr2; var i,j:integer; TempVal1,Opred:real; Begin Opred:=X11[0,0]*X11[1,1]-X11[1,0]*X11[0,1]; if Opred<>0 then Begin TempVal1:=X11[0,0]; X11[0,0]:=X11[1,1]; X11[1,1]:=TempVal1; TempVal1:=X11[1,0]; X11[1,0]:=X11[0,1]; X11[0,1]:=TempVal1; for i:=0 to Length(x)-1 do for j:=0 to Length(x)-1 do X11[i,j]:=Math.Power(-1,i+j) *X11[i,j]/Opred; end; Result:=X11; end; |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 04.10.2009
Сообщений: 147
|
![]()
могу попробовать но где то в среду)))
Ув. Форумчане! Если мои советы были Вам полезны, не забывайте благодарить в виде повышение рейтинга!!!
http://vkontakte.ru/id6715558 Последний раз редактировалось Arnezami; 21.12.2009 в 20:54. |
![]() |
![]() |
![]() |
#3 |
Форумчанин Подтвердите свой е-майл
Регистрация: 31.03.2008
Сообщений: 179
|
![]() Код:
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
конвертирование типов | larry | Win Api | 4 | 15.07.2009 21:36 |
конвертирование | Lesj | Помощь студентам | 4 | 10.06.2009 20:24 |
Конвертирование видео файлов | littlecoder | Мультимедиа в Delphi | 6 | 16.12.2008 22:04 |
Конвертирование изображений | e@gle | Мультимедиа в Delphi | 7 | 16.12.2008 21:54 |