1樓:匿名使用者
以下是約當消去法解方程組,供參考。
c 約當削去法解線性方程
c program jordan
real a(5,6)
data a/1,0,6,0,0,
1 0,1,0,0,0,
1 0,0,1,0,0,
1 0,0,0,1,0,
1 0,0,0,0,1,
1 1,1,7,1,1/
write(*,100)((a(i,j),j=1,6),i=1,5)write(*,*)
call jordan(a,5,6)
write(*,100)(a(i,6),i=1,5)100 format(1x,6f10.4)c read(*,*)
c選列主元的約當削去法子程式
subroutine jordan(a,n,m)real a(n,m)
do 10 k=1,n
big=abs(a(k,k))
l=kdo 5 j=k+1,n
if (abs(a(j,k)).gt.big) l=j5 continue
if (l.ne.k) then
do 15 j=k,n+1
r=a(k,j)
a(k,j)=a(l,j)
a(l,j)=r
15 continue
endif
do 20 j=n+1,k,-1
20 a(k,j)=a(k,j)/a(k,k)do 40 i=1,n
if (i.ne.k) then
do 30 j=n+1,k,-1
30 a(i,j)=a(i,j)-a(i,k)*a(k,j)endif
40 continue
write(*,100)((a(ii,jj),jj=1,6),ii=1,5)
write(*,*)
10 continue
100 format(1x,6f10.4)return
c不選主元的約當削去法子程式
subroutine jor10(a,n,m)dimension a(n,m)
do 10 k=1,n
do 20 j=n+1,k,-1
20 a(k,j)=a(k,j)/a(k,k)do 40 i=1,n
if (i.ne.k) then
do 30 j=n+1,k,-1
30 a(i,j)=a(i,j)-a(i,k)*a(k,j)endif
40 continue
10 continue
returnend
2樓:匿名使用者
program gauss
implicit real(kind=8)(a-z)integer,parameter:: n=3integer::i,j
real(kind=8) ::a(n,n),b(n),x(n)open(unit=11,file='fin.txt')open(unit=12,file='fout.
txt')read(11,*)
!讀入a矩陣
read(11,*)((a(i,j),j=1,n),i=1,n)!讀入b向量
read(11,*) (b(j),j=1,n)call solve(a,b,x,n)
write(12,999)x
999 format(t5,'高斯消去法計算結果',/,t4,'x=',4(/f12.8))
end program gauss
!子程式---------------
subroutine solve(a,b,x,n)implicit real*8(a-z)
integer::i,k,n
real(kind=8) ::a(n,n),b(n),x(n)real(kind=8) ::aup(n,n),bup(n)!ab為增廣矩陣 [ab]
real(kind=8) ::ab(n,n+1)ab(1:n,1:n)=a
ab(:,n+1)=b
! 這段是 高斯消去法的核心部分
do k=1,n-1
do i=k+1,n
temp=ab(i,k)/ab(k,k)
ab(i,:)=ab(i,:)-temp*ab(k,:)end do
end do
aup(:,:)=ab(1:n,1:n)
bup(:)=ab(:,n+1)
!呼叫用上三角方程組的迴帶方法
call uptri(aup,bup,x,n)end subroutine solve
subroutine uptri(a,b,x,n)implicit real*8(a-z)
integer::i,j,n
real(kind=8) ::a(n,n),b(n),x(n)x(n)=b(n)/a(n,n)
!迴帶部分
do i=n-1,1,-1
x(i)=b(i)
do j=i+1,n
x(i)=x(i)-a(i,j)*x(j)end do
x(i)=x(i)/a(i,i)
end do
end subroutine uptri
輸入資料放在fin.txt 記得開頭加!a.b輸出資料自動存放在fout.txt
3樓:酒神
daetrfyeryerqyryeryeryeqryeqqyeryeyreyreegbfhsdfa
二維波動方程的有限差分程式(詳細的matlab或者fortran程式) 15
4樓:鬥破了啊
^dx=8000;
dy=4000;
ix=400;
iy=80;
nx=dx/ix+1;
ny=dy/iy+1;
vel=1500*ones(ny,nx);
vel((fix(ny/3)):(fix(2*ny/3)))=1500;
vel((fix(2*ny/3)):ny)=1700;
fre=80;
it=0.01;
u_0=zeros(ny,nx);
u_1=zeros(ny,nx);
for i=1:nx;
for j=1:ny;
u_1(1,i)=-(it)^2*sin(2*pi*fre*it)*exp(-2*pi*fre*(it));
endend
u_1(1,1) = u_1(1,2);
u_1(1,nx) = u_1(1,(nx-1));
for k=2:n-1
for j=1:ny
for i=2:nx-1
if j=1
u_2(j,i) = ((it*vel(j,i))^2)/(ix^2)*(u_1(j,(i-1))+u_1(j,(i+1))-2*u_1(j,i)) + ((it*vel(j,i))^2)/(iy^2)*(u_1((j-1),i)+u_1((j+1),i)-2*u_1(j,i)) + 2*u_1(j,i) - u_0(j,i);
endu_2(1,i)= ((it*vel(1,i))^2)/(ix^2)*(u_1(1,(i+1))+u_1(1,(i-1))-2*u_1(j,j)+ ((it*vel(1,i))^2)/(iy^2)*2*(u_1(2,i)-u_1(1,i))+ 2*u_1(1,i)-u_0(1,i)- (it)^2*sin(2*pi*fre*k*it)*exp(-2*pi*fre*(it*k));
endelseif j=ny
u_2(i,j-1)=u_1(i,j)end
線性代數為什麼此題不能用高斯消元法而是需要用高斯若爾當
好像沒有必然的聯絡?就是高斯若爾當把矩陣化成單位的矩陣了 大一線性代數題目,用高斯消元法求解下列方程組 a 2 3 6 2 5 3 0 1 4 1 0 1 0 0 0 1 3 2 1 0 3 0 5 2 0 1 4 0 3 1 0 0 0 1 3 2 x1 3x3 5x5 2 x2 4x3 3x5 ...
一元五次方程用消元法怎麼求
二元一次方程的消元法是什麼,求解 解二元一次方程組的消元法一共有兩種 代入消元法 在一個二元一次方程中,用一個未知數表示另一個未知數,將其代入另一個方程,解得一個未知數 加減消元法 將兩個方程的進行變形,使其中一個未知數的係數相等或互為相反數,再將兩個方程對應相減或相加。求得另一個未知數,供參考,請...
線性代數題如圖,用消元法解方程組
標號 首先 減去 得 減 慢慢算吧 大一線性代數題目,用高斯消元法求解下列方程組 a 2 3 6 2 5 3 0 1 4 1 0 1 0 0 0 1 3 2 1 0 3 0 5 2 0 1 4 0 3 1 0 0 0 1 3 2 x1 3x3 5x5 2 x2 4x3 3x5 1 x4 3x5 2 ...