Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<stdio.h>
- #include<math.h>
- #include<conio.h>
- using namespace std;
- float u, v, w, t;
- float a, b, x, s, r, epsx, epsf, fx, fr, fs, z;
- int k, itermax, ok;
- char st;
- //selectie
- float f(float x){
- return sqrt(w/(x+u+v*t));
- }
- int main()
- {
- cout << "Solutionarea ecuatiei de stare a LEA prin metoda selcetei\n-----------------\n";
- cout << "\nCoeficientii u,v si w ai ecuatiei de stare\n";
- cout << "u="; cin >> u;
- cout << "v="; cin >> v;
- cout << "w="; cin >> w;
- cout << "\nLimitele intervalului [a,b] in care a fost separata solutia\n";
- cout << "a="; cin >> a;
- cout << "b="; cin >> b;
- cout << "\nErorile maxim admise\n";
- cout << "epsx="; cin >> epsx;
- cout << "epsf="; cin >> epsf;
- cout << "\nNumarul maxim de iteratii\n";
- cout << "itermax="; cin >> itermax;
- if (f(a) * f(b) >= 0) {
- cout << "\nNu s-a separat o solutie in prearabil";
- }
- ok = 1;
- do
- {
- cout << "\nDoriti solutionarea pentru alte temperaturi (d/n)?\n";
- st = getch();
- if (st == 'd' || st == 'D')
- {
- cout << "\nValoarea temperaturii:\n";
- cout << "t="; cin >> t;
- fr = f(a);
- fs = f(b);
- z = fr * fs;
- if (z > 0)
- {
- cout << "EROARE:solutia nu a fost separata corect: f(a)*f(b)>0 !";
- ok = 0;
- break;
- }
- r = a;
- s = b;
- k = 0;
- if (fabs(fr) <= epsf)
- {
- cout << "Solutia exacta este a=" << a << " deoarece f(a)=0";
- ok = 0;
- break;
- }
- if (fabs(fs) <= epsf)
- {
- cout << "Solutia exacta este b=" << b << " deoarece f(b)=0";
- ok = 0;
- break;
- }
- cout << "***Dupa afisarea rezultatelor unei iteratii apasa ENTER\n\n";
- cout << "k x f(x) r s |r-s|\n---------------------------\n";
- printf("%d ----- ----- %1.4f %1.4f %.4f ", k, r, s, fabs(r - s));
- cout << endl;
- do
- {
- k++;
- x = (r + s) / 2; //punctul curent, xk
- fx = f(x);
- fr = f(r);
- z = fr * fx;
- if (z == 0) //alculul este incheiat, x este solutia exacta
- {
- r = x;
- s = x;
- }
- else if (z > 0) r = x; //s:=s nu este necesara
- else s = x; //r:=r nu este necesara
- cout << endl;
- printf("%d %1.4f %.4f %.4f %.4f %.4f \n", k, x, fx, r, s, fabs(r - s));
- if (k > itermax)
- {
- cout << "\nDepasire numar maxim de iteratii !";
- ok = 0;
- break;
- }
- while (getchar() != '\n');
- } while ((fabs(s - r) >= epsx) && (fabs(fx) >= epsf));
- if (ok)
- {
- cout << "\nRezultat final pentru temperatura t=" << t << " grade";
- cout << endl;
- cout << "\nSolutia ecuatiei este x=" << x;
- cout << endl;
- }
- }
- } while (st == 'd' || st == 'D');
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement