my->gg=(double*)calloc(ig[n]-1,sizeof(double));
for(i=0;i<ig[n]-1;i++)
my->jg[i]=jg[i];
printf("SST:");
//Перебор по строкам
for (i=0;i<n;i++)
{
//clrscr();
gotoxy(10,1);
printf("%5d%",(i+1)*100/n);
//Вычисление остальных эл-тов
for(k=ig[i]-1;k<ig[i+1]-1;k++)
{
sum=0;
j=jg[k]-1;
//Теперь необходимо Строку i умножить на строку j (j<i)
if(j>i) printf("ERROR IN MATRIX\n");
for(ll=ig[j]-1,kk=ig[i]-1;ll<ig[j+1]-1&&kk<ig[i+1]-1;)
{
if(jg[ll]==jg[kk])
{sum+=my->gg[ll]*my->gg[kk];ll++;kk++;}
else
if(jg[ll]>jg[kk]) kk++;
else ll++;
}
my->gg[k]=(gg[k]-sum)/my->d[j];
}
sum=0;
//Вычисление диагонального эл-та i
for(k=ig[i]-1;k<ig[i+1]-1;k++)
sum+=my->gg[k]*my->gg[k];
my->d[i]=sqrt(fabs(d[i]-sum));
}
printf("\n");
}
//-----------------------------------------------------void generate_slau(SLAU *my)
{
FILE *f=fopen("file\\test","r");
fscanf(f,"%d",&my->n);
my->d=(double*)calloc(my->n,sizeof(double));
for(long i=0;i<my->n;i++)
fscanf(f,"%lf",&my->d[i]);
my->ig=(long*)calloc(my->n+1,sizeof(long));
for(long i=0;i<=my->n;i++)
fscanf(f,"%d",&my->ig[i]);
my->jg=(long*)calloc(my->ig[my->n]-1,sizeof(long));
my->gg=(double*)calloc(my->ig[my->n]-1,sizeof(double));
for(long i=0;i<my->ig[my->n]-1;i++)
fscanf(f,"%d",&my->jg[i]);
for(long i=0;i<my->ig[my->n]-1;i++)
fscanf(f,"%lf",&my->gg[i]);
VECTOR temp(my->n);
for(long i=0;i<my->n;i++)
fscanf(f,"%lf",&temp.vect[i]);
my->f=temp;
my->x.call_memory(my->n);
fclose(f);
}
//-------------------------------------void generate_slau2(SLAU *my)
{
FILE *f=fopen("d:\\test\\kuslau","r");
fscanf(f,"%d",&my->n);
fclose(f);
f=fopen("d:\\test\\di","r");
my->d=(double*)calloc(my->n,sizeof(double));
for(long i=0;i<my->n;i++)
fscanf(f,"%lf",&my->d[i]);
fclose(f);
f=fopen("d:\\test\\ig","r");
my->ig=(long*)calloc(my->n+1,sizeof(long));
for(long i=0;i<=my->n;i++)
fscanf(f,"%d",&my->ig[i]);
fclose(f);
my->jg=(long*)calloc(my->ig[my->n]-1,sizeof(long));
my->gg=(double*)calloc(my->ig[my->n]-1,sizeof(double));
f=fopen("d:\\test\\jg","r");
for(long i=0;i<my->ig[my->n]-1;i++)
fscanf(f,"%d",&my->jg[i]);
fclose(f);
f=fopen("d:\\test\\gg","r");
for(long i=0;i<my->ig[my->n]-1;i++)
fscanf(f,"%lf",&my->gg[i]);
fclose(f);
f=fopen("d:\\test\\pr","r");
VECTOR temp(my->n);
for(long i=0;i<my->n;i++)
fscanf(f,"%lf",&temp.vect[i]);
my->f=temp;
my->x.call_memory(my->n);
fclose(f);
}
//------------------------------------void test_ig_jg(SLAU my)
{
int des=open("d:\\test_ig_jg\\ig.2d",O_BINARY|O_RDONLY);
long tmp;
int flag=1;
for(long i=0;i<=my.n&&flag;i++)
{
read(des,&tmp,sizeof(long));
if(tmp!=my.ig[i]) flag=0;
}
read(des,&tmp,sizeof(long));
if(!flag) printf("ERROR IG");
close(des);
flag=1;
des=open("d:\\test_ig_jg\\jg.2d",O_BINARY|O_RDONLY);
for(long i=0;i<my.ig[my.n]-1&&flag;i++)
{
read(des,&tmp,sizeof(long));
if(tmp!=my.jg[i]) flag=0;
}
if(!flag) printf("ERROR JG");
//read(des,&tmp,sizeof(long));
//read(des,&tmp,sizeof(long));
//read(des,&tmp,sizeof(long));
close(des);
}
Изолинии для линейной задачи.
Изолинии для нелинейной задачи.
Telma |
Лаб2 |
Линейная |
|
0.0367286 0.117296 0.0546606 0.0604298 0.028071 0.0341835 |
0.0367286 0.117296 0.0546606 0.0604298 0.028071 0.0485489 |
Telma |
Лаб2 |
Не Линейная |
|
0.0367751 0.116999 0.0547206 0.0589276 0.0280942 0.034213 |
0.0365468 0.115487 0.0543574 0.0585488 0.0267882 0.095645 |
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.