С Новым годом! Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
0 / 0 / 1
Регистрация: 14.12.2012
Сообщений: 31
1

Метод Адамса

10.06.2013, 16:05. Показов 2996. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
здравствуйте помогите доделать программу с интерфейсом, на старом матлабе она идёт на версии 6.5 и 7, а на 2012 не хочет, нужно чтобы работала на 2012.

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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
function varargout = Lab3 (varargin)
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @ Lab3_OpeningFcn, ...
                   'gui_OutputFcn',  @ Lab3_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 Lab3_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
guidata(hObject, handles);
function varargout = Lab3_OutputFcn(hObject, eventdata, handles) 
varargout{1} = handles.output;
function pushbutton1_Callback(hObject, eventdata, handles)
x(1)=handles.metricdata.x0;
u=handles.metricdata.xn;
i=1;
h=handles.metricdata.h;
while x(i)<u
    x(i+1)=x(i)+h;
    i=i+1;
end
handles.metricdata.x=x;
f=handles.metricdata.Fx;
y(1)=handles.metricdata.Yo;
for i=2:length(x)
    if i-1>0
        df=f(i)-f(i-1);
    else
        df=0;
    end
    if i-2>0
        d2f=f(i)-2*f(i-1)+f(i-2);
    else
        d2f=0;
    end
    if i-3>0
        d3f=f(i)-3*f(i-1)+3*f(i-2)-f(i-3);
    else
        d3f=0;
    end
    y(i)=y(i-1)+h*f(i-1)+(((h.^2)/2)*df)+(((5*h.^3)/12)*d2f)+(((3*h.^4)/8)*d3f);
end
handles.metricdata.y = y;
guidata(hObject,handles)
axes(handles.axes1);
cla;
g=plot(x,y);
handles.g=g;
function pushbutton2_Callback(hObject, eventdata, handles)
e(1,:)=handles.metricdata.x;
e(2,:)=handles.metricdata.y;
d=uiputfile('*.txt','Save Workspace As');
dlmwrite(d,e,'delimiter', '\t', 'precision', 6);
function pushbutton3_Callback(hObject, eventdata, handles)
initialize_gui(gcbf, handles, true);
function initialize_gui(fig_handle, handles, isreset)
if isfield(handles, 'metricdata') && ~isreset
    return;
end
handles.metricdata.x0 = 0;
handles.metricdata.xn = 0;
handles.metricdata.h = 0;
handles.metricdata.Fx = 0;
set(handles.x0, 'String', handles.metricdata.x0);
set(handles.xn,  'String', handles.metricdata.xn);
set(handles.h,  'String', handles.metricdata.h);
set(handles.Fx,  'String', handles.metricdata.Fx);
cla;
function Yo_Callback(hObject, eventdata, handles)
Yo = str2num(get(hObject, 'String'));
handles.metricdata.Yo = Yo;
guidata(hObject,handles)
function Yo_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end
function h_Callback(hObject, eventdata, handles)
h = str2num(get(hObject, 'String'));
handles.metricdata.h = h;
guidata(hObject,handles)
function h_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end
function Fx_Callback(hObject, eventdata, handles)
F = get(hObject, 'String');
Fx=inline(F);
handles.metricdata.Fx = Fx;
guidata(hObject,handles)
function Fx_CreateFcn(hObject, eventdata, handles)
 
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end
function xn_Callback(hObject, eventdata, handles)
xn = str2num(get(hObject, 'String'));
handles.metricdata.xn = xn;
guidata(hObject,handles)
function xn_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end
function x0_Callback(hObject, eventdata, handles)
x0 = str2num(get(hObject, 'String'));
handles.metricdata.x0 = x0;
guidata(hObject,handles)
function x0_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end
function pushbutton4_Callback(hObject, eventdata, handles)
exit
function pushbutton5_Callback(hObject, eventdata, handles)
helpdlg('   Данная программа позволяет решить обыкновенное дифференциальное уравнение многошаговым методом Адамса. Имея в распоряжении отрезок, на котором будет считаться дифференциал, закон распространения значений правой части и начальное значение дифференциального уравнения. Например: имеется функция f(x), х0, шаг, хn и Y(x0), многошаговый метод Адамса позволяет вычислить последующие значения дифференциального уравнения на заданном отрезке.                                                             ДЛЯ РАСЧЕТА НЕОБХОДИМО:
1)  Ввести поле "x0" начальное значения x от которого начнутся вычисления, в поле "xn" ввести последнее значение x, до которого будут ввестись подсчеты и ввести в поле "h" шаг, который будет показывать точность измерений. В поле "Yo" записываем первое значение дифференциального уравнения при x0.
 2)     В поле f(x) введите закон распределения правой части дифференциального уравнения (не забудьте перед / и ^ ставить. Закон распределения нужно вводить через переменную x.)
 3)  Нажать на кнопку "Рассчитать" (искомое значение отобразиться на графике).                                                        ПРИМЕЧАНИЕ: При нажатии на кнопку "Обнулить все поля", во всех полях будут значения равные нулю, т.е. произойдет сброс введенных данных. Можно сохранить результат, нажав на кнопку "Сохранить", при её нажатии появится "окно-проводник", где можно по своему усмотрению выбрать место для сохранения и имя сохраняемого файла. При нажатии кнопки "Выход" программа заканчивает свою работу и выходит из неё.', ' Справка');
Добавлено через 2 часа 31 минуту
получилось)
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
function varargout = untitled1(varargin)
 
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @untitled1_OpeningFcn, ...
                   'gui_OutputFcn',  @untitled1_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 untitled1_OpeningFcn(hObject, eventdata, handles, varargin)
 
handles.output = hObject;
 
 
guidata(hObject, handles);
 
 
function varargout = untitled1_OutputFcn(hObject, eventdata, handles) 
 
varargout{1} = handles.output;
 
 
 
function pushbutton1_Callback(hObject, eventdata, handles)
xostr=get(handles.xo,'String');
xo=str2num(xostr);
x(1)=xo
yostr=get(handles.yo,'String');
yo=str2num(yostr);
y(1)=yo
xnstr=get(handles.xn,'String');
xn=str2num(xnstr);
u=xn
hstr=get(handles.shag,'String');
h=str2num(hstr);
 
i=1;
while x(i)<u
    x(i+1)=x(i)+h;
    i=i+1;
end
fstr=get(handles.vvodf,'String');
f=inline(fstr);
 
 
 
for i=2:length(x)
    if i-1>0
        df=f(i)-f(i-1);
    else
        df=0;
    end
    if i-2>0
        d2f=f(i)-2*f(i-1)+f(i-2);
    else
        d2f=0;
    end
    if i-3>0
        d3f=f(i)-3*f(i-1)+3*f(i-2)-f(i-3);
    else
        d3f=0;
    end
    y(i)=y(i-1)+h*f(i-1)+(((h.^2)/2)*df)+(((5*h.^3)/12)*d2f)+(((3*h.^4)/8)*d3f);
end
y
plot(x,y)
set(handles.x,'String',x)
set(handles.y,'String',y)
set(handles.grafik,'Visible','on')
set(handles.x,'Visible','on')
set(handles.y,'Visible','on')
set(handles.pushbutton2,'Visible','on')
 
 
function pushbutton2_Callback(hObject, eventdata, handles)
set(handles.xo,'String','');
plot(0,0);
set(handles.yo,'String','');
set(handles.xn,'String','');
set(handles.shag,'String','');
set(handles.vvodf,'String','');
set(handles.x,'String','');
set(handles.y,'String','');
set(handles.grafik,'Visible','off')
set(handles.x,'Visible','off')
set(handles.y,'Visible','off')
 
function pushbutton3_Callback(hObject, eventdata, handles)
button = questdlg('Вы уверены, что хотите выйти?','Выход','Да','Нет','Нет');
switch button
            case 'Да',
             delete(gcf);
            case 'No',
              quit cancel;
end
 
 
function pushbutton4_Callback(hObject, eventdata, handles)
helpdlg('   Данная программа позволяет решить обыкновенное дифференциальное уравнение многошаговым методом Адамса. Имея в распоряжении отрезок, на котором будет считаться дифференциал, закон распространения значений правой части и начальное значение дифференциального уравнения. Например: имеется функция f(x), х0, шаг, хn и Y(x0), многошаговый метод Адамса позволяет вычислить последующие значения дифференциального уравнения на заданном отрезке.                                                             ДЛЯ РАСЧЕТА НЕОБХОДИМО:1)  Ввести поле "x0" начальное значения x от которого начнутся вычисления, в поле "xn" ввести последнее значение x, до которого будут ввестись подсчеты и ввести в поле  шаг, который будет показывать точность измерений. В поле "Yo" записываем первое значение дифференциального уравнения при x0.2)     В поле f(x) введите закон распределения правой части дифференциального уравнения (Закон распределения нужно вводить через переменную x.)3)  Нажать на кнопку "Вычислить" (искомое значение отобразиться на графике).                                                        ПРИМЕЧАНИЕ: При нажатии на кнопку "Сброс", во всех полях стерутся данные, т.е. произойдет сброс введенных данных.При нажатии кнопки "Выход" программа заканчивает свою работу и выходит из неё.', ' Справка');
 
 
 
 
function vvodf_Callback(hObject, eventdata, handles)
 
% --- Executes during object creation, after setting all properties.
function vvodf_CreateFcn(hObject, eventdata, handles)
 
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end
 
 
 
function yo_Callback(hObject, eventdata, handles)
 
function yo_CreateFcn(hObject, eventdata, handles)
 
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end
 
 
 
function xo_Callback(hObject, eventdata, handles)
 
function xo_CreateFcn(hObject, eventdata, handles)
 
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end
 
 
 
function xn_Callback(hObject, eventdata, handles)
 
 
 
function xn_CreateFcn(hObject, eventdata, handles)
 
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end
 
 
 
function shag_Callback(hObject, eventdata, handles)
 
 
 
 
function shag_CreateFcn(hObject, eventdata, handles)
 
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end
 
 
% --- Executes on selection change in y.
function y_Callback(hObject, eventdata, handles)
% hObject    handle to y (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
 
% Hints: contents = cellstr(get(hObject,'String')) returns y contents as cell array
%        contents{get(hObject,'Value')} returns selected item from y
 
 
% --- Executes during object creation, after setting all properties.
function y_CreateFcn(hObject, eventdata, handles)
% hObject    handle to y (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called
 
% Hint: listbox controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end
 
 
% --- Executes on selection change in x.
function x_Callback(hObject, eventdata, handles)
% hObject    handle to x (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
 
% Hints: contents = cellstr(get(hObject,'String')) returns x contents as cell array
%        contents{get(hObject,'Value')} returns selected item from x
 
 
% --- Executes during object creation, after setting all properties.
function x_CreateFcn(hObject, eventdata, handles)
% hObject    handle to x (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called
 
% Hint: listbox controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.06.2013, 16:05
Ответы с готовыми решениями:

Метод Адамса
Привет,помогите исправить ошибку в коде,я знаю точно что они в строках с out,но не могу разобраться...

Метод Эйлера и Адамса
Решить на отрезке методами Эйлера и Адамса четвертого порядка уравнение...

Метод Адамса 3-го порядка
Матлаб выдает ошибку на 34 строке, а я не могу понять в чем причина :( Помогите пожалуйста. Код...

Метод Адамса - графики не совпадают
Помогите кто-нибудь с методом Адамса 3-го порядка. По какой-то причине не совпадают графики :((...

2
38 / 38 / 3
Регистрация: 18.01.2013
Сообщений: 64
10.06.2013, 16:38 2
чувствую свою программу))) есть маленький косяк в строчках
Matlab M
1
2
3
4
5
6
7
8
handles.metricdata.x0 = 0;
handles.metricdata.xn = 0;
handles.metricdata.h = 0;
handles.metricdata.Fx = 0;
set(handles.x0, 'String', handles.metricdata.x0);
set(handles.xn, 'String', handles.metricdata.xn);
set(handles.h, 'String', handles.metricdata.h);
set(handles.Fx, 'String', handles.metricdata.Fx);
не хватает строчки
Matlab M
1
2
handles.metricdata.Yo = 0;
set(handles.x0, 'String', handles.metricdata.Yo);
а по поводу новых версий без понятия))
2
0 / 0 / 1
Регистрация: 14.12.2012
Сообщений: 31
10.06.2013, 16:55  [ТС] 3
Вроде так работает, сейчас и на новом идёт, спасибо)
lab3.rar
0
10.06.2013, 16:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.06.2013, 16:55
Помогаю со студенческими работами здесь

Метод Адамса трехшаговый явный
Привет. Программу нужно написать для решения задачи Коши на отрезке явным трехшаговым методом...

Метод Адамса для решения дифференциальных уравнений
Написал программу для решения дифф. уравнения, не могу исправить ошибки. Помогите пожалуйста ...

Метод Адамса и Рунге-Кутта для решения ДУ
Здравствуйте, нужно решить ДУ используя метод Адамса 4го порядка, состоящий из предиктора...

Решение системы ДУ методом Эйлера, Ронге-Кутта, Адамса
Решил двумя методами в экселе, не могу написать в matlab'e уравнение x''+4x=sin(t)+sin(2t),...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru