首页 > 代码库 > JSOI球形空间产生器 (高斯消元)
JSOI球形空间产生器 (高斯消元)
按照朴素的列方程,可以列出n+1个n元2次方程。
将相邻的两个方程相减就可以得到n个n元1次方程,进行高斯消元就可以了。
1 var a,b:array[0..100,0..100] of extended; 2 temp,ans:array[0..100] of extended; 3 i,j,k,n:longint; 4 cnt:extended; 5 begin 6 readln(n); 7 for i:=1 to n+1 do 8 for j:=1 to n do 9 read(b[i,j]);10 for i:=1 to n do11 for j:=1 to n do12 begin13 a[i,j]:=2*(b[i+1,j]-b[i,j]);14 a[i,n+1]:=a[i,n+1]+b[i+1,j]*b[i+1,j]-b[i,j]*b[i,j];15 end;16 //--------------------------------rpCardinal Orz--------------------------------------17 for i:=1 to n-1 do18 begin19 for j:=i+1 to n do20 if a[j,i]>a[i,i] then21 begin22 temp:=a[i];23 a[i]:=a[j];24 a[j]:=temp;25 end;26 for j:=i+1 to n do27 begin28 cnt:=a[j,i]/a[i,i]; a[j,i]:=0;29 for k:=i+1 to n+1 do30 a[j,k]:=a[i,k]*cnt-a[j,k];31 end;32 end;33 ans[n]:=a[n,n+1]/a[n,n];34 for i:=n-1 downto 1 do35 begin36 for j:=i+1 to n do a[i,n+1]:=a[i,n+1]-ans[j]*a[i,j];37 ans[i]:=a[i,n+1]/a[i,i];38 end;39 for i:=1 to n do write(ans[i]:0:3,‘ ‘);40 end.
JSOI球形空间产生器 (高斯消元)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。