Консультация № 178457
18.05.2010, 10:34
43.34 руб.
18.05.2010, 12:32
0 8 1
Здравствуйте уважаемые эксперты! Не знаю туда ли задал вопрос Помогите пожалуйста с решением(до завтра) двух задач в MatLab'е(или хотя бы одну):

1. На внутреннем языке среды MatLab реализовать метод простой итерации для решения уравнения, тестирование программы проверить на примере этого уравнения:

-2x1 + x2 + x3 = 15
x1 - 2x2 + x3 = 10
-x1 + 3x2 - 6x3= 12

2. На внутреннем языке среды MatLab написать программу решения функционального уравнения с одной переменной методом половинного деления. Проверить на этом примере: x3 - 3x + 10 на отрезке[-5; 5]

Очень надеюсь на Вашу помощь

Обсуждение

давно
Академик
320937
2216
18.05.2010, 19:46
общий
Мироненко Николай Николаевич:
Добрый вечер!
1. На Matlab не работал, и он не установлен , проверять не смогу. Скачал в Сети программуpriter.zip (938 байт) Проверьте, пожалуйста, правильно ли работает. Возможно, у Вас есть какой-то образец. Выложите, пожалуйста. Попробую "привязать" к Вашей задаче
2. Вы пишете
метод простой итерации для решения уравнения
а приводите систему линейных уравнений
давно
Академик
320937
2216
18.05.2010, 20:09
общий
Мироненко Николай Николаевич:
Скачал с Каталог программ | MatLAB 7®


poldel.zip (533 байт)
Если сможете проверить работоспособность, попробуем также "привязать" программу
Неизвестный
18.05.2010, 21:22
общий
lamed:
Да вроде работает Я сам в Matlabe не работал, лекций по чис. методам на начитке не было, вчера только узнал, что на завтра уже экзамен поставили, вот такая вот жизнь заочника. Единственное что у меня есть - это описание обеих методов(взял у старших курсов), только на укр. языке.
давно
Академик
320937
2216
19.05.2010, 09:43
общий
Мироненко Николай Николаевич:
Метод половинного деления
Код:
%Метод половинного деления
%19.05.2010
fx=inline('g^3-3^g+10');
e=input ('Введите относительную погрешность:');
a=input ('Введите левый край промежутка:');
b=input ('Введите правый край промежутка:');
x0=a:e:b;
y=x0.^3-3^x0.+10;
plot (x0,y),grid
xlabel('x'),ylabel('y')
fa=fx(a);
n=0;
if fa*fx(b)<0
d=2*e;
while d>e,
n=n+1;
x=0.5*(a+b);
if fa*fx(x)>0
a=x;
else
b=x;
end
d=(b-a)/abs(x);
end
disp(sprintf('Ответ:%g',x))
disp(sprintf('f(x)=%g',fx(x)))
disp(sprintf('Количество итераций:%g',n))
else
disp('На введенном интервале функция одного знака!');
end
давно
Академик
320937
2216
19.05.2010, 10:43
общий
Мироненко Николай Николаевич:
Источник http://www.nsu.ru/matlab/Exponenta_RU/educat/class/courses/vvm/theme_6/matlab/ex3/ex3.htm
Код:
% Решить систему Ax=b методом простой итерации
A = [-2 1 1; 1 -2 1; -1 3 -6];
b = [15;10;12];

e = eig(A);
% Вычислим итерационный параметр
tau = 2 / (min(e) + max(e));

r = 1;

% Выполняем метод простой итерации с начальным приближением x0
x0 = [0;0;0];
y = x0;
while r > 100 * eps
x = y - tau * (A * y - b);
r = norm(x-y);
y = x;
end
% Проверим полученное значение
A * x - b

>>

давно
Академик
320937
2216
19.05.2010, 11:17
общий
это ответ
Здравствуйте, Мироненко Николай Николаевич! Ответ на второй вопрос.
Источник Каталог программ | MatLAB 7®

poldel.zip (533 байт)
Метод половинного деления

Код:
%Метод половинного деления
%19.05.2010
fx=inline('g^3-3^g+10');
e=input ('Введите относительную погрешность:');
a=input ('Введите левый край промежутка:');
b=input ('Введите правый край промежутка:');
x0=a:e:b;
y=x0.^3-3^x0.+10;
plot (x0,y),grid
xlabel('x'),ylabel('y')
fa=fx(a);
n=0;
if fa*fx(b)<0
d=2*e;
while d>e,
n=n+1;
x=0.5*(a+b);
if fa*fx(x)>0
a=x;
else
b=x;
end
d=(b-a)/abs(x);
end
disp(sprintf('Ответ:%g',x))
disp(sprintf('f(x)=%g',fx(x)))
disp(sprintf('Количество итераций:%g',n))
else
disp('На введенном интервале функция одного знака!');
end

Из-за отсутствия MatLAB код не проверялся.
5
Спасибо Вам большое! Нам как раз перенесли экзамен на ту неделю, за это время смогу освоить MatLab и разобраться с этими методами. Спасибо Вам :)
давно
Академик
320937
2216
19.05.2010, 11:43
общий
Мироненко Николай Николаевич:
Если возникнут проблемы - обращайтесь, так как к следующей неделе, возможно, удастся получить доступ к пакету
Неизвестный
19.05.2010, 11:51
общий
lamed:
Попробуйте, очень интересная и функциональная вещь, а самое главное что синтаксис очень похожий на синтаксис языка Pascal
Форма ответа