на тему рефераты Информационно-образоательный портал
Рефераты, курсовые, дипломы, научные работы,
на тему рефераты
на тему рефераты
МЕНЮ|
на тему рефераты
поиск
Решение системы линейных уравнений методом Крамера и с помощью расширенной матрицы
p align="left">for(j=0;j<3;j++)

cin>>A[i][j];

4.2.11 Операторы ввода-вывода

При вводе-выводе потока все данные рассматриваются как поток отдельных байтов.

Чтобы использовать функции ввода-вывода необходимо подключить библиотеку ввода-вывода

#include <iostream.h>

Формат записи операторов ввода-вывода:

cin [ >> values ];

cout << data [ << data << "\n"] [5];

Например:

cin>>А[i][j];

cout<<"x1="<<x1<<endl;

4.2.12 Массивы и указатели

Массив - это последовательная группа ячеек памяти, которые имеют одинаковый тип и имеют общее имя. Доступ к отдельному элементу массива осуществляется с помощью индекса.

В языке С/С++ предусмотрены многомерные массивы. Простейшим из них является двумерный. Объявление двумерного массива А, состоящего из 3 строк и 3 столбцов выглядит следующим образом:

double А[3][3];

Обращение к элементу двумерного массива выглядит так:

А[0][0], А[0][1] и т.д.

В языке С/С++ указатели и массивы тесно связаны между собой. Как известно, имя массива без индекса - это указатель на его первый элемент [4]. Рассмотрим, например, следующий массив:

double А[3][3];

Следующие два выражения абсолютно идентичны:

А

&А[0][0]

Доступ к элементам массива может осуществляться следующим образом:

А[i][j];

*(*(А+i)+j);

Записи являются идентичными.

4.2.13 Функции

Функция - это процедура(подпрограмма), которая несёт законченную смысловую нагрузку.

Определение функции состоит из заголовка функции и тела функции, которое заключается в ( ) и несёт смысловую нагрузку.

Общий вид функции выглядит следующим образом:

тип_функции имя_функции(список_аргументов)

{ тело_функции };

Тип_функции - это тип значения, которое возвращает функция. Если функция не возвращает никакого значения, то ей тип всегда void. Возврат значения из функции происходит с использованием оператора return, который имеет следующий вид

return выражение

Операторов return может быть сколько угодно, но функция возвращает всегда только одно значение.

По умолчанию если тип функции не определён явно, то функция имеет тип int.

Список_аргументов может быть либо пустим, либо, например

float fun(int, float);

Тело_функции - это всегда блок или составной оператор, т.е. последовательность описаний и операторов, заключённых в { } [6].

Для того, чтобы функция выполнила некоторые действия, она должна быть вызвана. Вызов функции имеет вид

имя_функции(список_фактических_параметров);

Например:

Kramer(A,B);

4.3 Описание разработанных функций

Разработанная в ходе выполнения работы программа содержит функцию Kramer.

Функция Kramer решает систему уравнений, заданную матрицей коэффициентов при неизвестных и столбцом свободных членов по методу Крамера, и выводит полученные значения неизвестных на экран.

Блок-схема выполнения функции изображена на рисунке 4.3.1 [3].

Рисунок 4.3.1 - Алгоритм функции Kramer.

Функция Kramer имеет тип возвращаемого значения void, т. к. она ничего не возвращает, а только выводит найденные неизвестные.

5 ИНСТРУКЦИЯ ПОЛЬЗОВАТЕЛЯ

Программа, которая была разработана в ходе выполнения курсовой работы, позволяет с помощью метода Крамера и с помощью расширенной матрицы решить систему линейных уравнений.

Минимальные системные требования для работы программы:

- OS MS-DOS или Windows

- 5 МБ на жестком диске

- 8 МБ оперативной памяти

Прилагаемая к курсовой работе дискета содержит следующие файлы:

- Kramer.exe (разработанная программа)

- Kramer.cpp (текст программы)

- Курсовой.doc (пояснительная записка)

- Данные.txt (исходные данные)

- Результаты. txt (полученные результаты)

- Readme. txt (инструкция пользователя)

Для запуска программы Kramer необходимо запустить находящуюся на дискете программу Kramer.exe.

В ответ на запрос программы: «"Vvedite koefisienti pri neizvestnih x1,x2,x3 v 1-om,2-om,3-em yravneniax"» необходимо ввести матрицу коэффициентов при неизвестных. Числа вводятся через пробел или Enter. Для ввода десятичных чисел целая часть отделяется от дробной точкой. После ввода всех девяти чисел (в случае ввода их через пробел) для дальнейшей работы программы необходимо нажать клавишу Enter. В ответ на запрос программы: "Vvedite cvobodnii chleni v 1-om,2-om,3-em yravneniax"» необходимо ввести матрицу-столбец свободных членов. После ввода всех 3 чисел (в случае ввода их через пробел) для дальнейшей работы программы необходимо нажать клавишу Enter. Полученное решение системы уравнений методом Крамера включает в себя систему линейных уравнений, расширенную матрицу, результаты нахождения определителя матриц и конечные решения.

ВЫВОДЫ

В ходе выполнения курсовой работы была разработана программа, с помощью которой можно решить систему линейных уравнений по методу Крамера и с помощью расширенной матрицы.

Ниже приведен результат работы программы

Vvedite koefisienti pri neizvestnih x1,x2,x3 v 1-om,2-om,3-em yravneniax

3 6 1 2 1 0 1 5 -1

Vvedite cvobodnii chleni v 1-om,2-om,3-em yravneniax

20 0 9

Dannaya sistema vigladit tak

3x1+6x2+1x3=20

2x1+1x2+0x3=0

1x1+5x2-1x1=9

C pomochy rashirenoi matrici mi mogem predstaviy dannyy sistemy tak:

3 6 1 |20

2 1 0 |0

1 5 -1|9

Reshenie sistemi yravnenii metodom Kramera

Nahogdenie opredelitelei

opredelitel=18

opredelitel1=-29

opredelitel2=58

opredelitel3=99

x1=-1.61111

x2=3.22222

x3=5.5

СПИСОК ЛИТЕРАТУРЫ

1. Апатёнок Р.Ф. Элементы линейной алгебры и аналитической геометрии. - Минск: Вышэйшая школа, 1977 г. - 257 с.

2. Глушаков С.В. и др. Язык программирования С++. --Харьков: Фолио, 2002. -- 500 с.

3. ГОСТ 19.701--90. ЕСПД. Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения.-- М.: 1991.

4. Дейтел Х.М. Дейтел П.Дж. Как программировать на С++: Пер. с англ. - М.: ЗАО “Издательство БИНОМ”, 2000 г. - 1024 с.: ил.

5. Страуструп Б. Язык программирования С++. Часть 1. -- Киев: "ДиаСофт", 1993. -- 264 с.

6. Страуструп Б. Язык программирования С++. Часть 2. -- Киев: "ДиаСофт", 1993. -- 296 с.

7. Холзнер С. VISUAL C++6: учебный курс -- СПб: Издательство “ Питер”, 2000. --576 с.

Приложение А

Текст программы

#include <iostream.h>

#include <iomanip.h>

#include <conio.h>

void Kramer(double C[3][3],double D[3][1]);//Prototip funkcii

void main()

{

int i,j;

double A[3][3],B[3][1];

char z='y';

cout<<"\n"<<endl;

cout<<"\n"<<endl;

cout<<"Vipolnil stydent gryppi KI-05-3"<<endl;

cout<<"Homenko Igor"<<endl;

cout<<"\n"<<endl;

cout<<"\n"<<endl;

while (z=='y')

cout<<"Vvedite koefisienti pri neizvestnih x1,x2,x3 v 1-om,2-om,3-em yravneniax"<<endl;

for(i=0;i<3;i++)//vvod matrici koeficientov pri neizvesnix

for(j=0;j<3;j++)

cin>>A[i][j];

cout<<"\n"<<endl;

cout<<"Vvedite cvobodnii chleni v 1-om,2-om,3-em yravneniax"<<endl;

for (i=0;i<3;i++)// Vvod stolbca svobodnix chlenov

cin>>B[i][0];

cout<<"\n"<<endl;

cout<<"Dannaya sistema vigladit tak"<<endl;//Vvivod na ekran SLY

if(A[0][1]>=0 && A[0][2]>=0)

cout<<A[0][0]<<"x1"<<"+"<<A[0][1]<<"x2"<<"+"<<A[0][2]<<"x3"<<"="<< B[0][0]<<endl;

if(A[0][1]>=0 && A[0][2]<0)

cout<<A[0][0]<<"x1"<<"+"<<A[0][1]<<"x2"<<A[0][2]<<"x3"<<"="<<B[0][0] <<endl;

if(A[0][2]>=0 && A[0][1]<0)

cout<<A[0][0]<<"x1"<<A[0][1]<<"x2"<<"+"<<A[0][2]<<"x3"<<"="<<B[0][0] <<endl;

if(A[0][1]<0 && A[0][2]<0)

cout<<A[0][0]<<"x1"<<A[0][1]<<"x2"<<A[0][2]<<"x3"<<"="<<B[0][0] <<endl;

if(A[1][1]>=0 && A[1][2]>=0)

cout<<A[1][0]<<"x1"<<"+"<<A[1][1]<<"x2"<<"+"<<A[1][2]<<"x3"<<"="<< B[1][0]<<endl;

if(A[1][1]>=0 && A[1][2]<0)

cout<<A[1][0]<<"x1"<<"+"<<A[1][1]<<"x2"<<A[1][2]<<"x3"<<"="<<B[1][0] <<endl;

if(A[1][2]>=0 && A[1][1]<0)

cout<<A[1][0]<<"x1"<<A[1][1]<<"x2"<<"+"<<A[1][2]<<"x3"<<"="<<B[1][0] <<endl;

if(A[1][1]<0 && A[1][2]<0)

cout<<A[1][0]<<"x1"<<A[1][1]<<"x2"<<A[1][2]<<"x3"<<"="<<B[1][0]

<<endl;

if(A[2][1]>=0 && A[2][2]>=0)

cout<<A[2][0]<<"x1"<<"+"<<A[2][1]<<"x2"<<"+"<<A[2][2]<<"x3"<<"="<< B[2][0]<<endl;

if(A[2][1]>=0 && A[2][2]<0)

cout<<A[2][0]<<"x1"<<"+"<<A[2][1]<<"x2"<<A[2][2]<<"x3"<<"="<<B[2][0] <<endl;

if(A[2][2]>=0 && A[2][1]<0)

cout<<A[2][0]<<"x1"<<A[2][1]<<"x2"<<"+"<<A[2][2]<<"x3"<<"="<<B[2][0] <<endl;

if(A[2][1]<0 && A[2][2]<0)

cout<<A[2][0]<<"x1"<<A[2][1]<<"x2"<<A[2][2]<<"x3"<<"="<<B[2][0]

<<endl;

cout<<"\n"<<endl;

cout<<"C pomochy rashirenoi matrici mi mogem predstaviy dannyy sistemy tak:"<<endl;//Vivod na ekran rachirennoi matrici

cout<<A[0][0]<<setw(4)<<A[0][1]<<setw(4)<<A[0][2]<<setw(5)<<"

}

void Kramer(double C[3][3],double D[3][1])//realizacia funkcii Kramer

{

double det,det1,det2,det3,x1,x2,x3;

cout<<"Nahogdenie opredelitelei"<<endl;

det=C[0][0]*C[1][1]*C[2][2]+C[1][0]*C[2][1]*C[0][2]+C[0][1]*C[1][2]*C[2][0]-C[0][2]*C[1][1]*C[2][0]-C[1][0]*C[0][1]*C[2][2]-C[0][0]*C[2][1]*C[1][2];

cout<<"opredelitel="<<det<<endl;//vichislenie opredelitela

det1=D[0][0]*C[1][1]*C[2][2]+D[1][0]*C[2][1]*C[0][2]+C[0][1]*C[1][2]*D[2][0]-C[0][2]*C[1][1]*D[2][0]-D[1][0]*C[0][1]*C[2][2]-D[0][0]*C[2][1]*C[1][2];

cout<<"opredelitel1="<<det1<<endl;//vichislenie opredelitela1

det2=C[0][0]*D[1][0]*C[2][2]+C[1][0]*D[2][0]*C[0][2]+D[0][0]*C[1][2]*C[2][0]-C[0][2]*D[1][0]*C[2][0]-C[1][0]*D[0][0]*C[2][2]-C[0][0]*D[2][0]*C[1][2];

cout<<"opredelitel2="<<det2<<endl;//vichislenie opredelitela2

det3=C[0][0]*C[1][1]*D[2][0]+C[1][0]*C[2][1]*D[0][0]+C[0][1]*D[1][0]*C[2][0]-D[0][0]*C[1][1]*C[2][0]-C[1][0]*C[0][1]*D[2][0]-C[0][0]*C[2][1]*D[1][0];

cout<<"opredelitel3="<<det3<<endl;//vichislenie opredelitela3

cout<<"\n"<<endl;

if(det!=0)

{x1=det1/det;//vichislenie x1

x2=det2/det;//vichislenie x2

x3=det3/det;//vichislenie x3

cout<<"x1="<<x1<<endl;

cout<<"x2="<<x2<<endl;

cout<<"x3="<<x3<<endl;}

else

cout<<"Sistema ne imeet reshenii, tak kak opredelitel=0"<<endl;

getch() ;

}

ЛИСТ-ЗАДАНИЕ

Методом Крамера и с помощью расширенной матрицы решить систему линейных уравнений, например,

3x1+6x2+x3=20

2x1+x2=0

x1+5x2-x3=9

Страницы: 1, 2, 3



© 2003-2013
Рефераты бесплатно, курсовые, рефераты биология, большая бибилиотека рефератов, дипломы, научные работы, рефераты право, рефераты, рефераты скачать, рефераты литература, курсовые работы, реферат, доклады, рефераты медицина, рефераты на тему, сочинения, реферат бесплатно, рефераты авиация, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент.