Помощь - Поиск - Пользователи - Календарь
Полная версия: Метод Якоби для решения СЛУР
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Visnyshka
Доброго времени суток!
Помогите пожалуйста решить задачу на Pascal. Мне дана система уравнений, необходимо написать программу решающую её методом Якоби. Не знаю с чего начать, подскажите пожалуйста! Прикрепляю файл с описанием метода. Заранее благодарю!

DOC-файл удален
volvo
Цитата
Не знаю с чего начать
С прочтения и осознания алгоритма. Ты его читала? Что именно непонятно? Я уж не говорю о том, что DOC-файлы выкладывать запрещено: Правила, пункт 1.11, поэтому файл удален.

Взамен - вот ссылка на описание метода в Вики: Метод Якоби. Зайди туда обязательно...
Visnyshka
О ужас(( я как раз и не понимаю алгоритм, вернее понимаю только частями(( спасибо за ссылку, но я уже много раз читала про этот метод...
Lapp
Цитата(Visnyshka @ 18.02.2010 18:42) *
О ужас(( я как раз и не понимаю алгоритм, вернее понимаю только частями(( спасибо за ссылку, но я уже много раз читала про этот метод...
Начни с того, что опиши саму матрицу и вектор решений. Это нужно для любого метода. Как ты собираешься задавать матрицу? Читать из файла? Какая ее максимальная размерность? Выведи хотя бы уравнения на экран. Сделай хотя бы это. Если не знаешь как - спроси нас )).
А дальше можно будет приступать и к методу..
Visnyshka
Хм...проще всего наверное будет сразу в программе задавать матрицу. У меня система из пяти уравнений:
10х1+х2+2х3-3х4+х5=10
х1+9х2+3х3+2х4+х5=40
х1-5х2+10х3-2х4-х5=9
4х1+2х2+5х3+15х4+х5=87
2х1+2х2-х3+х4-8х5=-25
если я все правильно понимаю матрица состоит из коэффициентов при х, а вектор B это то чему равны уравнения) Так?))
Lapp
Цитата(Visnyshka @ 25.02.2010 19:13) *
Хм...проще всего наверное будет сразу в программе задавать матрицу. У меня система из пяти уравнений:
...
если я все правильно понимаю матрица состоит из коэффициентов при х, а вектор B это то чему равны уравнения) Так?))
Ну, пусть он будет B - хоть горшком назови smile.gif. Главное состоит в том, что для реализации МЯ тебе потребуются операции над веторами и матрицами. И, значит, тебе нужно их сначала воплотить - либо сделать самой с нашей помощью, либо где-то позаимствовать юнит. И реализация самих матриц и векторов будет определяться этим.
Так что выбирай. Сделать свой модуль для работы с матрицами несложно (особенно, если заглянуть в наш FAQ).
Visnyshka
А разве в паскале не предусмотрен юнит который работает с матрицами? Вот я задаю матрицу:
Код

program metodyakobi;
uses crt;

var A: array[1..5,1..5]of integer;
    i,j: integer;

begin
clrscr;
A[1,1]:=10;
A[1,2]:=1;
A[1,3]:=2;
A[1,4]:=-3;
A[1,5]:=1;

A[2,1]:=1;
A[2,2]:=9;
A[2,3]:=3;
A[2,4]:=2;
A[2,5]:=1;

A[3,1]:=1;
A[3,2]:=-5;
A[3,3]:=10;
A[3,4]:=-2;
A[3,5]:=-1;

A[4,1]:=4;
A[4,2]:=2;
A[4,3]:=5;
A[4,4]:=15;
A[4,5]:=1;

A[5,1]:=2;
A[5,2]:=2;
A[5,3]:=-1;
A[5,4]:=1;
A[5,5]:=-8;

writeln('пробую вывести один эл-т ',A[2,5]); end;
readkey;
end.
Ozzя
Цитата
А разве в паскале не предусмотрен юнит который работает с матрицами?

Нет.
Lapp
И не лень тебе было это все писать? smile.gif
Не проще ли так:
const
m=5;
var
A: array[1..m,1..m]of integer;
i,j: integer;
f: text;

begin
Assign(f,'in.txt');
ReSet(f);
for i:=1 to m do begin
for j:=1 to m do Read(A[i,j];
ReadLn(f)
end;
Close(f);
writeln('пробую вывести один эл-т ',A[2,5]);
end.

И сделать файл in.txt (например, в блокноте)
10 1 2 -3 1
1 9 3 2 1
1 -5 10 -2 -1
4 2 5 15 1
2 2 -1 1 -8


Юнит для алгебры нужно написать. В этом вся прелесть! smile.gif
Visnyshka
Нет, не легче, как препод требует так и пишу)) а если будет слишком заумно все равно не поверит и придерёться))
volvo
Visnyshka
program metodyakobi;
uses crt;

const
A: array[1 .. 5, 1 .. 5] of integer =
(
(10, 1, 2, -3, 1),
( 1, 9, 3, 2, 1),
( 1, -5, 10, -2, -1),
( 4, 2, 5, 15, 1),
( 2, 2, -1, 1, -8)
);

var i,j: integer;

begin
clrscr;
writeln('пробую вывести один эл-т ', A[2,5]);
readkey;
end.
У кого "заумнее", как ты думаешь? Тот код, что ты привела, или этот - практически математическое описание матрицы?
Visnyshka
Ой здорово))) спасибо, просто я даже не подумала что можно как константу задать, а элементы так же как и в обычном массиве вызываются?
Ozzя
Цитата
а элементы так же как и в обычном массиве вызываются?


Для кого писано? Постом выше? blink.gif
 writeln('пробую вывести один эл-т ', A[2,5]);
Visnyshka
Что вы тут все на меня так кидаетесь?!((( Да, я не умею на pascal программировать, ну так поэтому и пишу сюда, а вы прям сразу такие не довольные((( и спрашивай после этого...((
Lapp
Цитата(Visnyshka @ 5.03.2010 16:20) *
Что вы тут все на меня так кидаетесь?!((( Да, я не умею на pascal программировать, ну так поэтому и пишу сюда, а вы прям сразу такие не довольные((( и спрашивай после этого...((
Все правильно, Visnyshka, продолжай спрашивать. Я извиняюсь от имени всего Форума. Надеюсь, дальнейшие ответы будут корректнее.

Да, работа с массивом, заданным константой, абсолютно ничем не отличается от работы с массивом, не заданным константой.

Можно, один совет тебе дам? Смотри, допустим - возник у тебя вопрос: "элементы так же как и в обычном массиве вызываются?" У тебя есть компилятор, перед тобой редактор - этого достаточно, чтоб быстро найти ответ на этот вопрос. Набираешь простенькую программу, задаешь массив константой и вызываешь элемент, как обычно, и выводишь его на печать - а потом смотришь на результат. Вывод получился верный? Значит, твоя гипотеза о том, что элементы вызываются, как в обычном массиве - верна. И ты это сама выяснила! smile.gif Если гипотеза не подтверждается и других гипотез для проверки нет - смело спрашивай тут.

Понимаешь? Активнее экспериментируй, у тебя есть для этого все средства. Если же эксперимент не дает ответа или вопрос сложный (не знаешь, как что-то написать) - тогда спрашивай. Экспериментирование СИЛЬНО ускорит твое обучение. Не бойся его. А мы поможем.

Тебе надо бы и учебник почитать.. Как минимум до раздела "процедуры и функции". Давай, тут ничего сложного нет. Начни писать процедуру для умножения матрицы на вектор. Показывай, что выходит (даже если ПОЧТИ ничего не выходит). Поможем.
Visnyshka
Да я читала учебник, и по делфи тоже, там все одинаково, просто возникают некоторые вопросы)) Пока кое что получается с программой, чуть позже когда будет явный результат выложу прогу) похвастаюсь)))
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.