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);