Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void MainWin::piyavsky(){
- double L = ThinkL();
- std::vector<pv> v;
- v.push_back(pv(a, f(a)));
- v.push_back(pv(b, f(b)));
- double up = b;
- double un = u(a, b, L);
- v.push_back(pv(un, f(un)));
- int k = 3;
- while (fabs(f(un) - f(up)) >= e)
- {
- ++k;
- std::sort(v.begin(), v.end(), std::less<pv>());
- int p;
- for (int i = 0; i < static_cast<int> (v.size()); i++){
- if (un == v[i].point){
- p = i;
- break;
- }
- }
- if (un != a){
- double ul = u(v[p - 1].point, v[p].point, L);
- v.push_back(pv(ul, g(un, ul, L)));
- }
- if (un != b){
- double ur = u(v[p].point, v[p + 1].point, L);
- v.push_back(pv(ur, g(un, ur, L)));
- }
- up = un;
- double min = v[0].value;
- int min_p = 0;
- for (int i = 1; i < static_cast<int> (v.size()); i++){
- if (v[i].value < min){
- min = v[i].value;
- min_p = i;
- }
- }
- un = v[min_p].point;
- v[min_p].value = f(un);
- }
- ui->LEdit->setText(QString::number(L));
- ui->uEdit->setText(QString::number(un));
- ui->JuEdit->setText(QString::number(f(un)));
- ui->IterEdit->setText(QString::number(k));
- }
- void MainWin::on_runButton_clicked()
- {
- fString = ui->functionEdit->text();
- a = ui->xminEdit->text().toDouble();
- b = ui->xmaxEdit->text().toDouble();
- e = ui->epsEdit->text().toDouble();
- piyavsky();
- }
Advertisement
Add Comment
Please, Sign In to add comment