Słodowicz Konrad 30792 AR12L Pon_12-14 elkondo

Transkrypt

Słodowicz Konrad 30792 AR12L Pon_12-14 elkondo
Słodowicz Konrad 30792 AR12L Pon_12-14
[email protected]
PROJ_5: Graficzny interfejs użytkownika
a) Aproksymacja wielomianowa
Dodany kod:
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject
handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
axes(handles.axes1);
global s x y;
s=str2double(get(handles.edit1, 'String'));
x(s)=str2double(get(handles.edit2, 'String'));
y(s)=str2double(get(handles.edit3, 'String'));
global w n xi yi;
n=str2double(get(handles.edit4, 'String'));
w=polyfit(x, y, n);
xi=linspace(min(x), max(x), 1000);
yi=polyval(w,xi);
plot(x, y, 'o', xi, yi, 'r');
set(handles.text1, 'String', char(poly2sym(w)));
set(handles.edit1, 'String', num2str(s+1));
% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject
handle to pushbutton2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
set(handles.edit1, 'String', num2str(1));
set(handles.edit2, 'String', num2str(0));
set(handles.edit3, 'String', num2str(0));
set(handles.edit4, 'String', num2str(2));
set(handles.text1, 'String', 'Wielomian');
cla;
clear all;
a) Aproksymacja funkcją a*(x^c)+20*exp(b*x)
Dodany kod:
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject
handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
cla;
global x y
x=[str2double(get(handles.edit4, 'String')), str2double(get(handles.edit5,
'String')), str2double(get(handles.edit6, 'String')), str2double(get(handles.edit7,
'String'))];
y=[str2double(get(handles.edit8, 'String')), str2double(get(handles.edit9,
'String')), str2double(get(handles.edit10, 'String')), str2double(get(handles.edit11,
'String'))];
abc=fminsearch(@kwpi_proj5_funkcja, [0 0 0]);
axes(handles.axes1);
plot(x, y, 'o');
hold on;
x2=linspace(min(x), max(x), 1000);
plot(x2, abc(1).*x2.^abc(3)+20*exp(abc(2).*x2));
set(handles.texta, 'String', abc(1));
set(handles.textb, 'String', abc(2));
set(handles.textc, 'String', abc(3));
axes(handles.axes2);
a2=linspace(abc(1)-2, abc(1)+2, 170);
b2=linspace(abc(2)-2, abc(2)+2, 170);
[A, B]=meshgrid(a2, b2);
for i=1:length(a2)
for j=1:length(b2)
f(i, j)=kwpi_proj5_funkcja([A(i, j), B(i, j), abc(3)]);
end
end
contour(A, B, 1./f, 20);
hold on;
plot(abc(1), abc(2), '+');
axis([abc(1)-0.25, abc(1)+0.25, abc(2)-0.25, abc(2)+0.25]);
Funkcja kwpi_proj5_funkcja.m:
function [J]=kwpi_proj5_funkcja(abc)
a=abc(1);
b=abc(2);
c=abc(3);
global x y
for i=1:4
f(i)=a*x(i)^c+20*exp(b*x(i));
end
J=sum((y-f).^2);