Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- clc
- clear
- rel = 1;
- while(rel)
- EPS = input('EPS = ');
- rel = 1;
- while(rel)
- while(rel)
- fprintf('Pentru [xi, xf], xi < xf:\n');
- xi = input('xi = ');
- xf = input('xf = ');
- while(xi >= xf)
- fprintf('Eroare. Reintroduceti valorile:');
- xi = input('xi = ');
- xf = input('xf = ');
- end
- he = input('he > 0, xi + he <= xf:\nhe = ');
- while(he <= 0 && xi + he <= xf)
- fprintf('Eroare, reintroduceti variabila he:\n');
- he = input('he = ');
- end
- xe = input('xe = ');
- ye = input('ye = ');
- xe = xi : he : xf;
- np = length(xe);
- if(xe(np) < xf)
- xe = [xe xf];
- np = np + 1;
- end
- ye = FCE(xe);
- plot(xe, ye);
- grid;
- rel = input('Pentru reluare introduceti 1, sau 0 pentru a continua: ');
- end
- rel = 1;
- while(rel)
- x0 = input('x0 = ');
- x1 = input('x1 = ');
- x2 = input('x2 = ');
- f0 = FCE(x0);
- f1 = FCE(x1);
- f2 = FCE(x2);
- iter = 0;
- xr = x2;
- fr = f2;
- while(abs(fr) > EPS)
- iter = iter + 1;
- if(x2 > x0)
- t = x2;
- x2 = x0;
- x0 = t;
- t = f2;
- f2 = f0;
- f0 = t;
- end
- if(x0 > x1)
- t = x0;
- x0 = x1;
- x1 = t;
- t = f0;
- f0 = f1;
- f1 = t;
- end
- if(x2 > x1)
- t = x2;
- x2 = x1;
- x1 = t;
- t = f2;
- f2 = f1;
- f1 = t;
- end
- h1 = x1 - x0;
- if(abs(h1) < EPS)
- fprintf('h1 - nul: algoritmul nu converge');
- return;
- end
- h2 = x0 - x2;
- r = h2 / h1;
- d = r * (r + 1) * (h1^2);
- if(abs(d) < EPS)
- fprintf('numitor nul pentru a');
- return;
- end
- a = (r * f1 - f0 * (1 + r) + f2)/d;
- b = (f1 - f0 - a * (h1^2))/h1;
- c = f0;
- delta = b^2 - 4 * a * c;
- if(delta <= 0)
- fprintf('radacini complexe sau confundate');
- return;
- end
- if(b >= 0)
- d = b + sqrt(delta);
- else
- d = b - sqrt(delta);
- end
- if(abs(d) < EPS)
- fprintf('numitor nul pentru xr');
- return;
- end
- xr = x0 - (2 * c) / d;
- fr = FCE(xr);
- if(xr > x0)
- x1 = xr;
- f1 = fr;
- else
- x2 = xr;
- f2 = fr;
- end
- iter
- xr
- fr
- end
- fprintf('numar total iteratii = %g', iter);
- fprintf('solutie xr = %g', xr);
- fprintf('valoare functie fr = %g', fr);
- rel = input('Pentru reluare de la introducerea valorilor x0, x1, x2, introduceti 1 sau 0 pentru continuare: ');
- end
- rel = input('Pentru reluare de la introducerea valorilor xi si xf introduceti 1 sau 0 pentru continuare: ');
- end
- rel = input('Introduceti 1 pentru reluare generala program sau 0 pentru inchidere');
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement