Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "mainwindow.h"
- #include "ui_mainwindow.h"
- MainWindow::MainWindow(QWidget *parent) :
- QMainWindow(parent),
- ui(new Ui::MainWindow)
- {
- ui->setupUi(this);
- }
- MainWindow::~MainWindow()
- {
- delete ui;
- }
- int Factorial(int n)
- {
- int result = n;
- for (int i = 1; i < n; i++)
- {
- result *= i;
- }
- return result;
- }
- double Lagrange(const double *x, const double *y, const double x0)
- {
- double result = 0;
- for(int i=0;i<10;i++)
- {
- double denum = 1, num = 1, temp=0;
- for(int j=0;j<10;j++)
- {
- if(i!=j)
- {
- num *= x0 - x[j];
- denum *= x[i] - x[j];
- }
- }
- result += num / denum * y[i];
- }
- return result;
- }
- //--------------------------------------------------------------------------------
- double Newton(const double *x, const double *y, const double x0)
- {
- double h = x[1] - x[0];
- double result = y[0];
- double dDeltaYArray[10][10] = { 0 };
- for (int i = 0; i < 10; i++)
- {
- dDeltaYArray[i][0] = y[i];
- }
- for (int i = 1; i < 10; i++)
- {
- for (int j = 0; j < 10 - i; j++)
- {
- dDeltaYArray[j][i] = dDeltaYArray[j + 1][i - 1] - dDeltaYArray[j][i - 1];
- }
- }
- for (int i = 1; i < 10; i++)
- {
- double num = dDeltaYArray[0][i], denum = Factorial(i), term = 0;
- for (int j = 0; j < i; j++)
- {
- num *= x0 - x[j];
- denum *= h;
- }
- term = num / denum;
- result += term;
- }
- return result;
- }
- //--------------------------------------------------------------------------------
- void MainWindow::on_pushButton_clicked() // lagrange
- {
- const double *arrayX = new double[10]{0.15, 0.20, 0.25, 0.30, 0.35, 0.40, 0.45, 0.50, 0.55,0.60};
- const double *arrayY = new double[10] {0.86, 0.819, 0.779, 0.741, 0.705, 0.670, 0.638, 0.606, 0.577, 0.549};
- const double x1 = 0.3119, x2=0.5031;
- double result = Lagrange(arrayX,arrayY,x1);
- ui->textBrowser->append("Lagrange Polynom \n Interpolation = " + QString::number(result));
- }
- void MainWindow::on_pushButton_2_clicked() //newtons
- {
- const double *arrayX = new double[10]{0.15, 0.20, 0.25, 0.30, 0.35, 0.40, 0.45, 0.50, 0.55,0.60};
- const double *arrayY = new double[10] {0.86, 0.819, 0.779, 0.741, 0.705, 0.670, 0.638, 0.606, 0.577, 0.549};
- const double x1 = 0.3119, x2=0.5031;
- double result = Newton(arrayX,arrayY,x2);
- ui->textBrowser->append("Newton Polynom \n Interpolation = " + QString::number(result));
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement