0 / 0 / 0
Регистрация: 18.03.2014
Сообщений: 15

Решение нелинейных уравнений (НУ), метод Ньютона

04.06.2014, 21:13. Показов 25231. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Выдает ошибку и ничего не решается , помогите,пожалуйста,завтра сдавать уже
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function [Xk k] = newton(f,df,tx)
x0 = tx(1); % нижняя граница интервала
x1 = tx(2); % верхняя граница интервала
F = inline(f); % определяем функцию
DF = inline(df); % определяем производную
e = 1e-5; % Погрешность
% начальные приближения
Xkm = (x0+x1)/2; 
Yo = F(x0);
k = 0; % счетчик итераций
while abs(Yo) > e 
    Xk = Xkm - F(Xkm)/DF(Xkm);
    Xkm = Xk;
    Yo = F(Xk);
    k = k + 1;
end
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
clear, clc
 
diap = [0, 3]; % диапазон x
fun = 'x^3 -2*x - 5'; % функция
dfun = char(diff(sym(fun))) % производная
 
[x0 n] = newton(fun,dfun,diap);
x00 = fzero(fun, (diap(1)+diap(2))/2); % решение встроенной ф-цией
fprintf('Корень уравнения х = %f, \n', x0);
fprintf('Количество итераций равно %d. \n',n);
fprintf('Результат встроенной функции x = %f \n',x00);
fprintf('Абсолютное погрешность равна %e, относительная: %e \n', abs(x0-x00), abs(x0-x00)/x00);
Не работает функция eval, выдает ошибку (argument contain must a string)...что с этим можно сделать? может быть можно как-нибудь заменить?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.06.2014, 21:13
Ответы с готовыми решениями:

Решение нелинейных уравнений, метод Ньютона
у вас есть примера задачи решение нелинейных уравнений в matlab'e Добавлено через 4 минуты пожалуста помагите Добавлено через 2...

Решение систем нелинейных уравнений. Метод Ньютона
как решается такое задания?

Решение нелинейных уравнений методом Ньютона
Здравствуйте! Помогите решить следующую задачу в матлаб: Создайте программу, которая методом Ньютона определяет решения системы двух...

18
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
05.06.2014, 19:57
странно... у меня работает:
Code
1
2
3
4
5
6
7
8
dfun =
 
3*x^2 - 2
 
Корень уравнения х = 2.094551, 
Количество итераций равно 5. 
Результат встроенной функции x = 2.094551 
Абсолютное погрешность равна 3.160139e-012, относительная: 1.508742e-012
0
0 / 0 / 0
Регистрация: 18.03.2014
Сообщений: 15
05.06.2014, 21:12  [ТС]
А через какой Matlab вы работаете?
0
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
05.06.2014, 21:28
Успешно запускал на R2009a и R2013b
0
0 / 0 / 0
Регистрация: 18.03.2014
Сообщений: 15
05.06.2014, 22:28  [ТС]
Спасибо,надо еще раз попробовать!
0
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
05.06.2014, 22:51
Aннa1405, ты файл функцию newton.m сохранила?
Как создать и использовать файл-функцию?
0
0 / 0 / 0
Регистрация: 18.03.2014
Сообщений: 15
08.06.2014, 12:37  [ТС]
У меня в коде выдает ошибку, где [x0 n]=newton(fun,dfun, diap);
и в названии функции..function [Xk k] = newton(f,df,tx)...может названии функции как-нибудь поменять можно..не знаю почему не считает
0
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
08.06.2014, 13:17
имя функции тут не причем можешь его поменять везде, но сомневаюсь, что это что-то изменит
возможно дело в том, что файл newton.m лежит в другой папке.
ты смотрела эту тему?

*как появится возможность, я постараюсь записать видео, как создавать и работать с файл-функциями
0
0 / 0 / 0
Регистрация: 18.03.2014
Сообщений: 15
08.06.2014, 13:29  [ТС]
Да,я смотрела сделала все так же...но все равно бред получается...и лежат они в одном месте на рабочем столе

Добавлено через 2 минуты
А можно тоже самое ,записать без функции?
0
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
08.06.2014, 13:39
совсем без функции нет, но можно все организовать в один файлик - запустишь и посчитает

Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
function reshenie
clear, clc
diap = [0, 3]; % диапазон x
fun = 'x^3 -2*x - 5'; % функция
dfun = char(diff(sym(fun))) % производная
 
[x0 n] = newton(fun,dfun,diap);
x00 = fzero(fun, (diap(1)+diap(2))/2); % решение встроенной ф-цией
fprintf('Корень уравнения х = %f, \n', x0);
fprintf('Количество итераций равно %d. \n',n);
fprintf('Результат встроенной функции x = %f \n',x00);
fprintf('Абсолютное погрешность равна %e, относительная: %e \n', abs(x0-x00), abs(x0-x00)/x00); 
ezplot(fun,diap), grid on
hold on
f = inline(fun);
plot(x0, f(x0),'+r')
end
 
 
function [Xk k] = newton(f,df,tx)
x0 = tx(1); % нижняя граница интервала
x1 = tx(2); % верхняя граница интервала
F = inline(f); % определяем функцию
DF = inline(df); % определяем производную
e = 1e-5; % Погрешность
% начальные приближения
Xkm = (x0+x1)/2; 
Yo = F(x0);
k = 0; % счетчик итераций
while abs(Yo) > e 
    Xk = Xkm - F(Xkm)/DF(Xkm);
    Xkm = Xk;
    Yo = F(Xk);
    k = k + 1;
end
end
0
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
11.06.2014, 21:09
Цитата Сообщение от Зосима Посмотреть сообщение
как появится возможность, я постараюсь записать видео
как и обещал https://www.cyberforum.ru/post6306172.html
0
0 / 0 / 0
Регистрация: 23.03.2015
Сообщений: 15
24.03.2015, 20:35
Попробовал вогнать данный код в Gui чтоб сделать приятный пользовательский интерфейс, тренируюсь с визуализацией, и обнаружил что выдает ошибку обращения к функции, не могу разобраться в чём проблема, хоть в м файле обращается к функции без проблем.
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
function varargout = Uravnenie(varargin)
 
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @Uravnenie_OpeningFcn, ...
                   'gui_OutputFcn',  @Uravnenie_OutputFcn, ...
                   'gui_LayoutFcn',  [] , ...
                   'gui_Callback',   []);
if nargin && ischar(varargin{1})
    gui_State.gui_Callback = str2func(varargin{1});
end
 
if nargout
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
    gui_mainfcn(gui_State, varargin{:});
end
 
function Uravnenie_OpeningFcn(hObject, eventdata, handles, varargin)
 
handles.output = hObject;
 
guidata(hObject, handles);
 
 
function varargout = Uravnenie_OutputFcn(hObject, eventdata, handles) 
 
varargout{1} = handles.output;
 
 
 
function uravnenie_Callback(hObject, eventdata, handles)
 
function uravnenie_CreateFcn(hObject, eventdata, handles)
 
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end
 
 
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
a=-10;
b=10;
diap= [a, b];
fun= str2double(get(handles.fun, 'String'));
dfun = char(diff(sym(fun)));
[x0 n] = fun(fun,dfun,diap);
x00 = fzero(fun, (diap(1)+diap(2))/2);
set(handles.finish1,'String',x0);
set(handles.finish2,'String',n);
set(handles.finish3,'String',x00);
set(handles.finish4,'String',abs(x0-x00));
set(handles.finish5,'String',abs(x0-x00)/x00);
вот функция
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function [Xk k] = fun(f,df,tx)
x0 = tx(1); % нижняя граница интервала
x1 = tx(2); % верхняя граница интервала
F = inline(f); % определяем функцию
DF = inline(df); % определяем производную
e = 1e-5; % Погрешность
% начальные приближения
Xkm = (x0+x1)/2; 
Yo = F(x0);
k = 0; % счетчик итераций
while abs(Yo) > e 
    Xk = Xkm - F(Xkm)/DF(Xkm);
    Xkm = Xk;
    Yo = F(Xk);
    k = k + 1;
end
0
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
25.03.2015, 17:32
Danya_from_174, а тебя не смущают одинаковые имена введенной функции и функции метода Ньютона?
Matlab M
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
a=-10;
b=10;
diap= [a, b];
fun= str2double(get(handles.fun, 'String'));
dfun = char(diff(sym(fun)));
[x0 n] = MyLittleNewton(fun,dfun,diap);
x00 = fzero(fun, (diap(1)+diap(2))/2);
set(handles.finish1,'String',x0);
set(handles.finish2,'String',n);
set(handles.finish3,'String',x00);
set(handles.finish4,'String',abs(x0-x00));
set(handles.finish5,'String',abs(x0-x00)/x00);
 
% там же, продолжение
% решатель методом Ньютона
function [Xk k] = MyLittleNewton(f,df,tx)
x0 = tx(1); % нижняя граница интервала
x1 = tx(2); % верхняя граница интервала
F = inline(f); % определяем функцию
DF = inline(df); % определяем производную
e = 1e-5; % Погрешность
% начальные приближения
Xkm = (x0+x1)/2; 
Yo = F(x0);
k = 0; % счетчик итераций
while abs(Yo) > e 
    Xk = Xkm - F(Xkm)/DF(Xkm);
    Xkm = Xk;
    Yo = F(Xk);
    k = k + 1;
end
1
0 / 0 / 0
Регистрация: 23.03.2015
Сообщений: 15
25.03.2015, 19:30
Большое спасибо за подсказку, но всё равно не удалось увидеть заветный ответ.
Говорит не существует fun как я понял : "to non-existent field 'fun'."
Возможно он его не распознает..?
0
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
25.03.2015, 19:52
здесь: "get(handles.fun[/B]" fun- это имя(tag) EditText-a, в которое вводится формула проверь, правильно ли? (они по умолчанию обзываются edit1, edit2, edit3...)
1
0 / 0 / 0
Регистрация: 23.03.2015
Сообщений: 15
25.03.2015, 21:18
понял, исправил но теперь опять выдаёт ошибку : "Error using inline (line 50)
Input must be a string."
хотя вроде ввод не менял ни где...

Добавлено через 54 секунды
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
function varargout = Uravnenie(varargin)
 
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @Uravnenie_OpeningFcn, ...
                   'gui_OutputFcn',  @Uravnenie_OutputFcn, ...
                   'gui_LayoutFcn',  [] , ...
                   'gui_Callback',   []);
if nargin && ischar(varargin{1})
    gui_State.gui_Callback = str2func(varargin{1});
end
 
if nargout
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
    gui_mainfcn(gui_State, varargin{:});
end
 
function Uravnenie_OpeningFcn(hObject, eventdata, handles, varargin)
 
handles.output = hObject;
 
guidata(hObject, handles);
 
 
function varargout = Uravnenie_OutputFcn(hObject, eventdata, handles) 
 
varargout{1} = handles.output;
 
 
 
function fun_Callback(hObject, eventdata, handles)
 
function fun_CreateFcn(hObject, eventdata, handles)
 
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end
 
 
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
a=-10;
b=10;
diap= [a, b];
fun= str2double(get(handles.fun, 'String'));
dfun = char(diff(sym(fun)));
[x0 n] = MyLittleNewton(fun,dfun,diap);
x00 = fzero(fun, (diap(1)+diap(2))/2);
set(handles.finish1,'String',x0);
set(handles.finish2,'String',n);
set(handles.finish3,'String',x00);
set(handles.finish4,'String',abs(x0-x00));
set(handles.finish5,'String',abs(x0-x00)/x00);
0
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
25.03.2015, 22:25
выложи в архиве свои файлы (*.m и *.fig)

Добавлено через 3 минуты
тут fun = str2double(get(handles.fun, 'String')); str2double не нужно!

Просто: fun = get(handles.fun, 'String');

*и MyLittleNewton вконец втыкни:
Кликните здесь для просмотра всего текста
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
function varargout = Uravnenie(varargin)
 
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @Uravnenie_OpeningFcn, ...
                   'gui_OutputFcn',  @Uravnenie_OutputFcn, ...
                   'gui_LayoutFcn',  [] , ...
                   'gui_Callback',   []);
if nargin && ischar(varargin{1})
    gui_State.gui_Callback = str2func(varargin{1});
end
 
if nargout
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
    gui_mainfcn(gui_State, varargin{:});
end
 
function Uravnenie_OpeningFcn(hObject, eventdata, handles, varargin)
 
handles.output = hObject;
 
guidata(hObject, handles);
 
 
function varargout = Uravnenie_OutputFcn(hObject, eventdata, handles) 
 
varargout{1} = handles.output;
 
 
 
function fun_Callback(hObject, eventdata, handles)
 
function fun_CreateFcn(hObject, eventdata, handles)
 
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end
 
 
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
a=-10;
b=10;
diap= [a, b];
fun = get(handles.fun, 'String');
dfun = char(diff(sym(fun)));
[x0 n] = MyLittleNewton(fun,dfun,diap);
x00 = fzero(fun, (diap(1)+diap(2))/2);
set(handles.finish1,'String',x0);
set(handles.finish2,'String',n);
set(handles.finish3,'String',x00);
set(handles.finish4,'String',abs(x0-x00));
set(handles.finish5,'String',abs(x0-x00)/x00);
 
% решатель методом Ньютона
function [Xk k] = MyLittleNewton(f,df,tx)
x0 = tx(1); % нижняя граница интервала
x1 = tx(2); % верхняя граница интервала
F = inline(f); % определяем функцию
DF = inline(df); % определяем производную
e = 1e-5; % Погрешность
% начальные приближения
Xkm = (x0+x1)/2; 
Yo = F(x0);
k = 0; % счетчик итераций
while abs(Yo) > e 
    Xk = Xkm - F(Xkm)/DF(Xkm);
    Xkm = Xk;
    Yo = F(Xk);
    k = k + 1;
end
1
0 / 0 / 0
Регистрация: 23.03.2015
Сообщений: 15
26.03.2015, 04:53
Все сработало, отлично, я вам оч благодарен вот мои файлы, если они еще нужны кому
Вложения
Тип файла: rar Uravnenie.rar (4.5 Кб, 202 просмотров)
0
0 / 0 / 0
Регистрация: 30.11.2015
Сообщений: 6
30.11.2015, 21:08
Спасибо , тоже проблемы были , очень помогли[BASH]
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.11.2015, 21:08
Помогаю со студенческими работами здесь

Решение систем нелинейных уравнений методом Ньютона
Задача :Разработать программу для Решения Систем нелинейны уравнений методом Ньютона. Предполагается, что исходные данные введены...

Решение системы нелинейных уравнений методом Ньютона
Здравствуйте. Помогите пожалуйста реализовать метод простых итераций и метод Ньютона для решения системы нелинейных уравнений. ...

Метод Ньютона для нелинейных систем уравнений.
Здравствуйте, я здесь первый раз поэтому не судите строго если что не так.Помогите пожалуйста написать программу в матлабе Метод...

Решение нелинейных уравнений (метод простой итерации)
Всем привет. Помогите пожалуйста найти все корни нелинейного уравнения и написать программу для МАТЛАБ. x*(2+x)^(-1) - log(x) = 0 Судя...

Решение нелинейных уравнений (НУ)
3(x+S) – 14 + ex - e –x = R ,-границы отрезка, R,S,погрешность-числа которые должны вводиться с клавиатуры... Помогите,пожалуйста,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Опции темы

Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru