Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- N = 11;
- var y = x => 3*x*x*x;
- var dy = x => 9*x*x;
- var ddy = x => 18*x;
- var pFunc = x => 1;
- var qFunc = x => -1;
- x_A = 1.0;
- x_B = 2.0;
- y_A = y(x_A);
- y_B = y(x_B);
- h = (x_B - x_A) / (N - 1);
- f = [], q = [], p = []; //size = n
- function solveMatrix(n, a, b, c, d) {
- var alpha = [], beta = [], res = []; //size = n
- alpha[0] = -c[0] / b[0];
- beta[0] = d[0] / b[0];
- for (var i = 1; i < n; i++) {
- alpha[i] = (-c[i]) / (a[i] * alpha[i-1] + b[i]);
- beta[i] = (d[i] - a[i] * beta[i-1]) / (a[i] * alpha[i-1] + b[i]);
- }
- res[n-1] = beta[n-1];
- for (var i = n-2; i >= 0; i--) res[i] = alpha[i] * res[i+1] + beta[i];
- return res;
- }
- function countFunc(n) {
- for (var i = 0; i < n; i++) {
- var x = x_A + i*h;
- f[i] = ddy(x) + pFunc(x)*dy(x) + qFunc(x)*y(x);
- p[i] = pFunc(x);
- q[i] = qFunc(x);
- }
- }
- function solveEquation(n) {
- var a = [], b = [], c = [], d = []; //size = n-2
- var e = [], res = []; //size = n
- for (var i = 1; i < n-3; i++) {
- a[i] = 1 - p[i+1]*h/2;
- b[i] = q[i+1]*h*h - 2;
- c[i] = 1 + p[i+1]*h/2;
- d[i] = f[i+1]*h*h;
- }
- a[0] = 0;
- b[0] = q[1]*h*h - 2;
- c[0] = 1 + p[1]*h/2;
- d[0] = f[1]*h*h - y_A*(1 - p[1]*h/2);
- a[n-3] = 1 - p[n-2]*h/2;
- b[n-3] = q[n-2]*h*h - 2;
- c[n-3] = 0;
- d[n-3] = f[n-2]*h*h - y_B*(1 + p[n-2]*h/2);
- e = solveMatrix(n-2, a, b, c, d);
- for (var i = 0; i < n-2; i++) res[i+1] = e[i];
- res[0] = y_A;
- res[n-1] = y_B;
- var resStr6 = "res:";
- var texStr6 = "\\hline\n";
- for (var i = 0; i < n; i++) {
- resStr6 += "[" + i + "]: x:" + (x_A + i*h) +
- " y:" + y(x_A + i*h) +
- " res:" + res[i] +
- " d:" + Math.abs(y(x_A + i*h) - res[i]) + "\n";
- texStr6 += (x_A + i*h) + " & " +
- y(x_A + i*h).toFixed(6) + " & " +
- res[i].toFixed(6) + " & " +
- Math.abs(y(x_A + i*h) - res[i]).toFixed(6) + " \\\\ " + "\n" + "\\hline" + "\n";
- }
- console.log(resStr6);
- console.log(texStr6);
- }
- function lab6Main() {
- countFunc(N);
- solveEquation(N);
- }
Advertisement
Add Comment
Please, Sign In to add comment