📄 triangle.cpp
字号:
#include<iostream>
using namespace std;
#define N 2
#define MAX 100
void triangle(double (*p)[N],double (*q)[N],double (*r)[N]);
void triangle(double (*A)[N],double (*L)[N],double (*U)[N])
{
int i,r,k;
for(i=0;i<N;i++) //figure out L and U
{
U[0][i]=A[0][i];
L[i][0]=A[i][0]/U[0][0];
}
for(r=1;r<N;r++)
{
for(i=r;i<N;i++)
{
double sum=0;
for(k=0;k<r;k++)
sum+=L[r][k]*U[k][i];
U[r][i]=A[r][i]-sum;
}
for(i=r+1;i<N;i++)
{
if(r==N-1) continue;
double sum=0;
for(k=0;k<r;k++)
sum+=L[i][k]*U[k][r];
L[i][r]=(A[i][r]-sum)/U[r][r];
}
}
for(i=0;i<N;i++)
for(r=0;r<N;r++)
{
if(i<r)
L[i][r]=0;
if(i==r)
L[i][r]=1;
if(i>r)
U[i][r]=0;
}
}
void initialnise(double (*p)[N],double *);
int main()
{
double A[N][N],B[N],X[N];
double L[N][N],U[N][N];
int i;
initialnise(A,B);
triangle(A,L,U);
return 0;
}
void initialnise(double (*A)[N],double *B)
{
int k;
cout<<"Which exercise do you want to solve"<<endl;
cout<<"1-exercise 1"<<endl;
cout<<"2-exercise 2"<<endl;
cout<<"3-exercise 3.1"<<endl;
cout<<"4-exercise 3.2"<<endl;
cout<<"5-exercise 3.3"<<endl;
cin>>k;
int i,j;
switch (k)
{
case 1:
for(i=0;i<N;i++) //exercise 1
{
B[i]=0;
for(j=0;j<N;j++)
A[i][j]=N-fabs(i-j);
}
B[0]=1;
case 2:
A[0][0]=2,A[0][1]=1,A[0][2]=0,A[0][3]=0; //exercise 2
A[1][0]=1,A[1][1]=2,A[1][2]=1,A[1][3]=0;
A[2][0]=0,A[2][1]=1,A[2][2]=2,A[2][3]=1;
A[3][0]=0,A[3][1]=0,A[3][2]=1,A[3][3]=2;
B[0]=-7,B[1]=-5,B[2]=0,B[3]=-5;
case 3:
A[0][0]=6,A[0][1]=2,A[0][2]=-1; //exercise 3.1
A[1][0]=1,A[1][1]=4,A[1][2]=-2;
A[2][0]=-3,A[2][1]=1,A[2][2]=4;
B[0]=-3,B[1]=2,B[2]=4;
B[0]=100,B[1]=-200,B[2]=345;
case 4:
A[0][0]=1,A[0][1]=0.8,A[0][2]=0.8; //exercise 3.2
A[1][0]=0.8,A[1][1]=1,A[1][2]=0.8;
A[2][0]=0.8,A[2][1]=0.8,A[2][2]=1;
B[0]=3,B[1]=2,B[2]=1;
B[0]=5,B[1]=0,B[2]=-10;
case 5:
A[0][0]=1,A[0][1]=3; //exercise 3.3
A[1][0]=-7,A[1][1]=1;
B[0]=4,B[1]=-6;
}
for(i=0;i<N-1;i++)
{
A[i][i]=-4;
A[i][i+1]=1;
A[i+1][i]=1;
B[i]=-2;
}
A[N-1][N-1]=-4;
B[0]=-3;
B[N-1]=-3;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -