FKM(matek)

FKM(matek)
2009-01-04T21:24:23+01:00
2009-01-04T23:06:38+01:00
2022-11-12T02:40:40+01:00
stY
Hello!
Sikerült átültetnem delphibe egy kódot, ami az

x(i)=Sum(j=1-től 10-ig) : (x(j)/(i+2)^j)+1 (i=1,2,..,10) egyenletrendszert közelíti a fokozatos közelítések módszerével, íme:


unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,Math; type Bt= array [1..10,1..11] of Extended; Tt= array [1..11] of Extended; Ttetel6 = class(TForm) Button1: TButton; Label1: TLabel; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var tetel6: Ttetel6; B: Bt; T: Tt; implementation {$R *.dfm} //Az FKM modszer: procedure FKM(N:integer;Bi:Bt;E:Extended;Ti:Tt); var i,j:integer; S: array [1..1000] of Extended; //1..N-ig menne csak igazabol label c; begin for i:=1 to N do S[i]:=Bi[i,N+1]; c: For i:=1 to N do begin Ti[I]:=Bi[I,N+1]; For j:=1 to N do Ti[i]:=Ti[i]+Bi[i,j]*S[j]; end; For i:=1 to n do if Abs(S[i]-Ti[i])>E then begin for j:=1 to n do S[j]:=Ti[j]; goto c; End; //Átadjuk a tömböt: For j:=1 to N do T[i]:=Ti[i]; End; procedure Ttetel6.Button1Click(Sender: TObject); var i,j: integer; begin For i:=1 to 10 do //Pl 10-ig begin for j:=1 to 10 do B[i,j]:=power(i+2,-j); //Hatványozás? B[i,11]:=1; End; FKM(10,B,power(10,-6),T); //10 a minusz 6-on //Kiiratas: for i:=1 to 10 do begin ShowMessage(FloattoStr(T[i])); End; end; end.

A probléma, hogy outputban: csupa nullátkapok eredményül, holott ezt kellene:


1,884912 1,601056 stb... . . .

Nem látom a hiba hollétét, egy az egyben ekvivalens a kód egy könyvben írt fortran kóddal(Vagy mégse? ) (A goto-ert ne tessék felháborodni, a könyv 1973-as és az egyszerűbb átírás kedvéért hagytam benne)
Mutasd a teljes hozzászólást!
Ez itt elég gyanús:
//Átadjuk a tömböt: For j:=1 to N do T[i]:=Ti[i];
j-t használod ciklusváltozónak, de i-vel indexelsz
Mutasd a teljes hozzászólást!

Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd