Nieliniowe równania i układy rówań Slajd 1 Równania nieliniowe, nieliniowe układy równań, optymalizacja
Nieliniowe równania i układy rówań Slajd 2 Plan zajęć Rozwiązywanie równań nieliniowych -metoda bisekcji Rozwiązywanie układów równań nieliniowych -funkcja fsolve() Optymalizacja -programowanie liniowe i kwadratowe -programowanie liniowe przykład wyboru asortymentu produkcji
Nieliniowe równania i układy rówań Slajd 3 Ćwiczenie 1 Zdefiniuj funkcję SciLaba: bisekcja(a,b,f,eps), gdzie: a,b: końce przedziału [a,b] w którym poszukujemy pierwiastka f: dowolna funkcja jednej zmiennej. eps: kryterium zbieżności
Nieliniowe równania i układy rówań Slajd 4 Ćwiczenie 1 Zdefiniuj funkcję SciLaba: bisekcja(a,b,f,eps), gdzie: a,b: końce przedziału [a,b] w którym poszukujemy pierwiastka f: dowolna funkcja jednej zmiennej. eps: kryterium zbieżności ( ) f b i 1 f ( ) x i a i 1 = a i b i b i 1 ( ) f a i 1 x i b i ( a + b ) 1 = 2 i 1 i 1 = x i [ a, b ] i i = [ ai 1, xi ] gdy f ( ai 1 ) f ( xi ) [ x, b ] gdy f ( a ) f ( x ) i i 1 i 1 i < > 0 0
Nieliniowe równania i układy rówań Slajd 5 Ćwiczenie 1 - cd Zdefiniuj funkcję SciLaba: bisekcja(a,b,f,eps), gdzie: a,b: końce przedziału [a,b] w którym poszukujemy pierwiastka f: dowolna funkcja jednej zmiennej. eps: kryterium zbieżności function x = bisekcja(a,b,f,eps) x = (a + b)/2 while abs(f(x)) >= eps if f(a)*f(x) < 0 b = x else a = x end x = (a + b)/2 end endfunction
Nieliniowe równania i układy rówań Slajd 6 Ćwiczenie 1 - cd Zdefiniuj funkcję f(x)=x 3-2x 2-2x+1. Znajdź przy pomocy funkcji bisekcja() rozwiązanie równania f(x)=0. Obliczenia poprzedź wykonaniem wykresu funkcji, oraz doborem przedziału [a,b].
Nieliniowe równania i układy rówań Slajd 7 Zdefiniuj funkcję f(x)=x 3-2x 2-2x+1. Znajdź przy pomocy funkcji bisekcja() rozwiązanie równania f(x)=0. Obliczenia poprzedź wykonaniem wykresu funkcji, oraz doborem przedziału [a,b]. function y=f(x) y=x^3-2*x^2-2*x+1 endfunction x=-1.5:0.1:3 plot2d(x,f(x)) eps=0.001 Ćwiczenie 1 - cd
Nieliniowe równania i układy rówań Slajd 8 Zdefiniuj funkcję f(x)=x 3-2x 2-2x+1. Znajdź przy pomocy funkcji bisekcja() rozwiązanie równania f(x)=0. Obliczenia poprzedź wykonaniem wykresu funkcji, oraz doborem przedziału [a,b]. function y=f(x) y=x^3-2*x^2-2*x+1 endfunction x=-1.5:0.1:3 plot2d(x,f(x)) eps=0.001 x1=bisekcja(-1.5,-0.5,f,eps) // x1 = -1 x2= bisekcja(-0.5,1.5,f,eps) // x2 = 0.3818 x3= bisekcja(1.5, 3, f,eps) // x3 = 2.618 Ćwiczenie 1 - cd
Nieliniowe równania i układy rówań Slajd 9 Ćwiczenie 1 - cd Zdefiniuj funkcję g(x)=2x+cos(x). Znajdź przy pomocy funkcji bisekcja() rozwiązanie równania g(x)=0. Obliczenia poprzedź wykonaniem wykresu funkcji, oraz doborem przedziału [a,b].
Nieliniowe równania i układy rówań Slajd 10 Ćwiczenie 2 Znajdź rozwiązanie równań f(x)=0 i g(x)=0 (dla wcześniej zdefiniowanych funkcji) wykorzystując funkcję SciLaba fsolve() i dobierając różne punkty startowe
Nieliniowe równania i układy rówań Slajd 11 Ćwiczenie 2 Znajdź rozwiązanie równań f(x)=0 i g(x)=0 (dla wcześniej zdefiniowanych funkcji) wykorzystując funkcję SciLaba fsolve() i dobierając różne punkty startowe x1=fsolve(-0.5,f); // -1
Nieliniowe równania i układy rówań Slajd 12 Ćwiczenie 2 Znajdź rozwiązanie równań f(x)=0 i g(x)=0 (dla wcześniej zdefiniowanych funkcji) wykorzystując funkcję SciLaba fsolve() i dobierając różne punkty startowe x1=fsolve(-0.5,f); // -1 x2=fsolve(0,f); // 0.38 x3=fsolve(3,f); // 2.618 z=fsolve(3,g); // -0.45
Nieliniowe równania i układy rówań Slajd 13 Ćwiczenie 2 Rozwiąż, wykorzystując funkcję SciLaba fsolve() i dobierając różne punkty startowe układ równań nieliniowych: x 2 +y 2 = 50, xy = 25 Przedstaw interpretację graficzną zadania
Nieliniowe równania i układy rówań Slajd 14 Rozwiąż, wykorzystując funkcję SciLaba fsolve() i dobierając różne punkty startowe układ równań nieliniowych: x 2 +y 2 = 50, xy = 25 Przedstaw interpretację graficzną zadania function [f] = f2(x) f(1) = x(1)^2 + x(2)^2-50; f(2) = x(1)*x(2) -25; endfunction z1=fsolve([0;0],f2); // (5,5) Ćwiczenie 2
Nieliniowe równania i układy rówań Slajd 15 Rozwiąż, wykorzystując funkcję SciLaba fsolve() i dobierając różne punkty startowe układ równań nieliniowych: x 2 +y 2 = 50, xy = 25 Przedstaw interpretację graficzną zadania function [f] = f2(x) f(1) = x(1)^2 + x(2)^2-50; f(2) = x(1)*x(2) -25; endfunction z1=fsolve([0;0],f2); // (5,5) Ćwiczenie 2 z2=fsolve([-10;-10],f2); // (-5,-5)
Nieliniowe równania i układy rówań Slajd 16 Ćwiczenie 3 Znajdź minimum funkcji f(x 1,x 2,x 3 ) = 3x 1 +5x 2-2x 3 +1, przy następujących ograniczeniach: funkcja linpro(p,c,b,xl,xu,me): minimum dla: f(x)= p T *X x 1 + 3*x 2 = 5 x 1 + x 2 - x 3 = 2 2x 1 - x 2 3 x 1 + x 2 + x 3 25 0 x 1 5, 0 x 2 10, 0 x 3 3
Nieliniowe równania i układy rówań Slajd 17 Ćwiczenie 3 Znajdź minimum funkcji f(x 1,x 2,x 3 ) = 3x 1 +5x 2-2x 3 +1, przy następujących ograniczeniach: funkcja linpro(p,c,b,xl,xu,me): minimum dla: f(x)= p T *X x 1 + 3*x 2 = 5 x 1 + x 2 - x 3 = 2 2x 1 - x 2 3 x 1 + x 2 + x 3 25 p = [3;5;-2]; C = [1,3,0; 1,1,-1; 2,-1,0; 1,1,1 ]; b = [5;2;3;25]; 0 x 1 5, 0 x 2 10, 0 x 3 3 xl = [0;0;0]; xu = [5;10;3]; [xopt,lagr,fopt] = linpro(p,c,b,xl,xu,2) fopt = fopt +1 // xopt = [0.5, 1.5, 0], fopt = 10
Nieliniowe równania i układy rówań Slajd 18 Ćwiczenie 4 Znajdź najmniejszą wartość funkcji (punkt startowy: (1,1)): f(x,y)=sin(xy)+cos(x) na obszarze ograniczonym poprzez nierówności: 0 x 1 10, 0 x 2 10
Nieliniowe równania i układy rówań Slajd 19 Ćwiczenie 4 Znajdź najmniejszą wartość funkcji (punkt startowy: (1,1)): f(x,y)=sin(xy)+cos(x) na obszarze ograniczonym poprzez nierówności: 0 x 10, 0 y 10 function [f,g,ind]=fst(x,ind) // f minimalizowana funkcja // g gradient funkcji f endfunction
Nieliniowe równania i układy rówań Slajd 20 Ćwiczenie 4 Znajdź najmniejszą wartość funkcji (punkt startowy: (1,1)): f(x,y)=sin(xy)+cos(x) na obszarze ograniczonym poprzez nierówności: 0 x 10, 0 y 10 function [f,g,ind]=fst(x,ind) f = sin(x(1)*x(2))+cos(x(1)) g = [0;0] g(1)= x(2)*cos(x(1)*x(2))-sin(x(1)) g(2)= x(1)*cos(x(1)*x(2)) endfunction [wart,xp]=optim(fst,'b',[0;0],[10;10],[1;1]) // xp=(π,0), wart= -1
Nieliniowe równania i układy rówań Slajd 21 Ćwiczenie 5 Metody optymalizacji przykład cd. Zadanie optymalnego wyboru asortymentu produkcji Niech m=2, (w fabryce wytwarzane są 2 produkty), n=2 (do wytworzenia jednego produktu potrzebne są 2 surowce). do wytworzenia produktu I 8 jednostek surowca A, 2 jednostki surowca B, do wytworzenia produktu II 5 jednostek surowca A, 5 jednostek surowca B. Zysk ze sprzedaży jednostki produktu I - 9 tys. złotych jednostki produktu II -8 tys. złotych Wielkość dziennej dostawy surowca A 40 jednostek surowca B 25 jednostek Zadanie (X zbiór rozwiązań dopuszczalnych, warstwicami funkcji f(x) są linie proste 9x 1 + 8x 2 = const.) f ( x) = 9x x 1 A: B : 0, 8x 1 2x 1 1 + 5x + 5x + 8x x 2 2 2 2 0 40 25 max
Nieliniowe równania i układy rówań Slajd 22 Ćwiczenie 5 - cd // definicje macierzy c=[-9;-8];xl=[0;0];xu=[1e10;1e10];c=[8,5;2,5];d=[40;25]; [xopt,lagr,fopt] = linpro(c,c,d,xl,xu,0);
Nieliniowe równania i układy rówań Slajd 23 Ćwiczenie 5 - cd // definicje macierzy c=[-9;-8];xl=[0;0];xu=[1e10;1e10];c=[8,5;2,5];d=[40;25]; [xopt,lagr,fopt] = linpro(c,c,d,xl,xu,0); // prezentacja graficzna deff('[w]=f(x,y)','w=c(1)*x+c(2)*y') xx=[0:0.5:6]; yy=[0:0.5:6]; zz=feval(xx,yy,f); contour2d(xx,yy,zz,10); deff('[y1]=f1(x)','y1=-8*x/5+40/5') deff('[y2]=f2(x)','y2=(25-2*x)/5') xxx=[0:0.5:6];yy1=f1(xxx);yy2=f2(xxx); plot2d([xxx',xxx'],[yy1',yy2']) //,[-1,-1],'011',' ',[0 0 6 6]) xstring(xopt(1)+0.5,xopt(2)+0.05,'rozwiazanie') xtitle('fabryka')
Nieliniowe równania i układy rówań Slajd 24 Funkcje dostępne w SciLab fsolve() - funkcja rozwiązująca układ równań nieliniowych linpro() - funkcja do rozwiązywania zadań programowania liniowego optim() - funkcja do rozwiązywania nieliniowych zadań optymalizacji