Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cmath>
- #include <fstream>
- #include <iostream>
- #include <string>
- #include <cstdlib>
- double fx(double x){
- return std::log(std::pow(x,5) + 3.0 * std::pow(x, 2) + x + 9.0);
- }
- double gx(double x){
- return pow(x,6);
- }
- int main(void) {
- double x_dok = -0.1673198;
- double xa = -0.5;
- double xb = 1.0;
- double eps = pow(10, -6);
- double r = (sqrt(5)-1.0) / 2.0;
- double lambda1 = r*r;
- double lambda2 = r;
- double lambda1_b = 1.0 / 3.0;
- double lambda2_b = 2.0 / 3.0;
- double xmin;
- unsigned iteration = 0;
- std::fstream file;
- file.open("wynik1.txt", std::ios::out);
- file.close();
- // zadanie 1 i 2
- do{
- double x1 = xa + lambda1 * (xb-xa);
- double x2 = xa + lambda2 * (xb-xa);
- if(fx(x2) > fx(x1)){
- xb = x2;
- }
- else if(fx(x2) < fx(x1)){
- xa = x1;
- }
- xmin = (xb+xa)/2.0;
- double diff = std::abs(xmin-x_dok);
- file << iteration << " " << xmin << " " << diff << std::endl;
- iteration++;
- }
- while(std::abs(xa-xb) > std::pow(10, -6));
- xmin = (xb+xa)/2.0;
- std::cout << iteration << ", " << xmin << ", dokladne -> " << x_dok << std::endl;
- // zadanie 3
- xa = -0.5;
- xb = 1.0;
- do{
- double x1 = xa + lambda1_b * (xb-xa);
- double x2 = xa + lambda2_b * (xb-xa);
- if(fx(x2) > fx(x1)){
- xb = x2;
- }
- else if(fx(x2) < fx(x1)){
- xa = x1;
- }
- xmin = (xb+xa)/2.0;
- double diff = std::abs(xmin-x_dok);
- file << iteration << " " << xmin << " " << diff << std::endl;
- iteration++;
- }
- while(std::abs(xa-xb) > std::pow(10, -6));
- xmin = (xb+xa)/2.0;
- std::cout << iteration << ", " << xmin << ", dokladne -> " << x_dok << std::endl;
- file.open("wynik2.txt", std::ios::out);
- file.close();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement