Автор работы: Пользователь скрыл имя, 07 Апреля 2011 в 17:05, курсовая работа
Целью курсовой работы является приобретение навыков программирования на языке программирования Си посредством написания программного модуля, реализующего решение системы линейных уравнений различными методами.
Введение………………………………………………………………………4
Постановка задачи………………………………………………………….5
Математическое описание задачи…………………………………………6
Математическое описание метода Гаусса………………………………6
Математическое описание метода итераций……………………………9
Разработка схемы алгоритма……………………………………………...10
Описание входной и выходной информации……………………………15
Разработка и описание программы……………………………………….16
6 Расчет решения задания и анализ полученных результатов …………..17
Заключение…………………………………………………………………..19
Список использованных источников……………………………………….20
#include <stdio.h>
#include<stdlib.h>
#include <math.h>
#include
<conio.h>
float vvod(float a[4][5])
{
int i,j;
float t;
printf("Enter kolichestvo peremennih-\n");
scanf("%f",&t);
if(t<2||t>4)
{
printf("vvedeno nepravil'noe kolichestvo peremennih");
getch();
exit(1);
}
else
{
printf("vvedite elementi a\n");
for(i=0;i<t;i++)
{
for(j=0;j<t+1;j++)
{
scanf("%f",&a[i][j]);
}
}
}
return t;
}
void iteracia (float x[4],float x1[4],float a[4][5],float y)
{
int k,i,j;
float e,s,c;
e=pow(10,-5);
do
{
for(i=0;i<y;i++)
{
s=a[i][y];
for(k=0;k<y;k++)
{
s-=a[i][k]*x[k];
}
s=s/a[i][i];
x1[i]=x[i]+s;
c=x1[i]-x[i];
x[i]=x1[i];
}
}
while(fabs(c)>e);
}
void gauss (float x[4],float a[4][5],float y)
{
int i,j,n,l;
float k;
for(i=0;i<y;i++)
{
for(j=(i+1);j<y;j++)
{
k=a[j][i]/a[i][i];
for(l=0;l<y+1;l++)
a[j][l]=a[i][l]*k-a[j][l];
}
}
x[y-1]=a[y-1][y]/a[y-1][y-1];
for(i=(y-2);i>=0;i--)
{
x[i]=a[i][y];
for(j=(y-1);j>=(i+1);j--)
{
x[i]=x[i]-a[i][j]*x[j];
}
x[i]=x[i]/a[i][i];
}
}
void vivod (float x[4],float y)
{
int i;
for(i=0;i<y;i++)
printf ("\nx%i=%f",i+1,x[i]);
}
void main (void)
{
float a[4][5],x[4],x1[4],y;
clrscr();
printf("1 - reshenie sistemi metodom gaussa\n");
printf("2 - reshenie sistemi metodom iteracii\n");
printf("3 - Exit\n");
char ch;
do
{
ch=getch();
printf("Vash vibor - %c,\n\n",ch);
switch(ch){
case '2':{
y=vvod(a);
iteracia(x,x1,a,y);
vivod(x,y);
printf("\nChoise any punkt menu\n");
}break;
case '1':{
y=vvod(a);
gauss(x,a,y);
vivod(x,y);
printf("\nChoise any punkt menu\n");
}break;
}
}
while(ch<'3');
}
Информация о работе Разработка специализированного программного модуля