📄 aaz_qr_r2b.c
字号:
/* .h freeware http://groups.yahoo.com/group/mathc/ */
/* --------------------------------- INCLUDES ------------------------------- */
#include "y_ahfile.h"
/* ------------------------------------- FUNCTION -------------------------- */
/* Do : */
/* */
/* -------------------------------------------------------------------------- */
void AB(
int a)
{
int n;
int m;
int i;
complexZ det;
double pba [MXR][MXC];mZ A={MXR,MXC,&pba [0][0]};
double pbQ [MXR][MXC];mZ Q={MXR,MXC,&pbQ [0][0]};
double pbR [MXR][MXC];mZ R={MXR,MXC,&pbR [0][0]};
double pbQR[MXR][MXC];mZ QR={MXR,MXC,&pbQR[0][0]};
i = rndp_I(3);
A.rows = a; A.cols = a*C2+i*C2;
Q.rows = a; Q.cols = a*C2;
R.rows = a; R.cols = a*C2+i*C2;
QR.rows = a; QR.cols = a*C2+i*C2;
/*-------------------------------- PROGRAM ---------------------------------- */
do
{
rnd_mZ(&A,3);
det = det_Z(&A);
}while( (!det.r) && (!det.i));
clrscrn();
printf(" Copy/Past into the octave windows \n");
printf(" or into a m file. \n\n\n");
printf(" #! octave-interpreter-name -qf\n");
printf(" # a sample Octave program\n\n");
p_mZ_octave(&A,"A");
printf(" [Q, R] = qr(A); \n\n");
printf(" Q \n");
printf(" R \n");
getchar();
clrscrn();
QR_mZ(&A,&Q,&R);
printf(" A : ");
p_mZ(&A);
printf(" Q : ");
p_mZ(&Q);
printf(" R : ");
p_mZ(&R);
printf("\n");
p_innerprod_c_mZ(&Q,'q');
p_norm_c_mZ(&Q,'q');
getchar();
clrscrn();
printf(" A : ");
p_mZ(&A);
printf(" A = QR : ");
mul_mZ(&Q,&R,&QR);
p_mZ(&QR);
}
void hello(void)
{
printf("\n Freeware by : xhunga bernard 06000 Nice France. ");
printf("\n\n\n\n \n");
printf(" QR Decomposition, \n");
printf(" A = QR \n");
printf(" ****** ");
printf("\n\n\n \n\n\n\n\n\n\n\n ");
printf("\n ");
printf("\n Press return to continue ");
printf("\n ");
getchar();
}
/* --------------------------------- MAIN ----------------------------------- */
int main(int argc, char *argv[])
{
time_t t;
int n;
/*-------------------------------- PROGRAM ---------------------------------- */
srand(time(&t));
hello();
do
{
if( argc == 2 && atoi(argv[1]))
{ n = atoi(argv[1]); if( n > 3){n=3;}}
else
{ n = rndp_I(3);}
if( n < 2){n=2;}
AB(n);
printf("\n Press 'X' Return to stop");
} while(toupper(getchar())!='X');
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -