Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral

(define (int fun points coefs h)

(* h (apply + (map * coefs (map fun points)))))

; Подынтегральная функция

(define (fx x) (* (sqrt x) (cos x)))

; Формирование списка узлов

(define (make-point-list a h n)

(cond

((= 0 n) '())

(else (cons a (make-point-list (+ a h) h (- n 1))))))

; Списки весов для левых/правых/средних прямоугольников

(define (mid n) (if (= 0 n) '(0) (cons 1 (mid(- n 1)))))

(define (left n) (if (= 0 n) '(0) (cons 1 (left (- n 1)))))

(define (right n) (cons 0 (mid (- n 1))))

; Списки весов для формул парабол и трапеций

(define (parabol n) (cons (/ 1 3) (parabol1 (- n 1))))

(define (parabol1 n)

(cons (/ 4 3) (parabol2 (- n 1))))

(define (parabol2 n)

(if (<= n 1)

(list (/ 1 3))

(cons (/ 2 3) (parabol1 (- n 1)))))

(define (trap n) (cons (/ 1 2) (trap1 (- n 1))))

(define (trap1 n) (if (= 0 n) '(1/2) (cons 1 (trap1 (- n 1)))))

; Подсчёт списка значений интеграла всеми методами с заданным числом узлов

(define (iN n)

(let ((h (/ 1 n)) (points (make-point-list 0 (/ 1 n) (+ n 1))))

(list (int fx points (left n) h)

(int fx points (right n) h)

(int fx (map (lambda (x) (+ x (/ h 2))) points) (mid n) h)

(int fx points (trap n) h)

(int fx points (parabol n) h))))

; Вывод результатов

(print (iN 12))

(print (iN 24))

(print (map / (map abs (map - (iN 12) (iN 24))) '(3 3 3 3 15)))

(print (map + (iN 24)

(map / (map abs (map - (iN 12) (iN 24))) '(3 3 3 3 15))))

5.5 Вывод

Искомый определённый интеграл получился равным

– по формуле трапеций

– по формуле прямоугольников

НЕ нашли? Не то? Что вы ищете?

– по формуле Симпсона

Как видно, наименее точной из этих формул оказалась формула прямоугольников, наиболее точной – формула Симпсона.

6 Задание №7

6.1 Задание

Вычислить интеграл по формуле Гаусса и оценить погрешность для :

6.2 Описание метода решения задачи

Воспользуемся следующей формулой: .

Где – нули полинома Лежандра четвёртой степени .

Коэффициенты и точки – табличные величины.

6.3 Оценка погрешности

Остаточный член формулы Гаусса для выражается следующим образом:

[Далее следует привести нахождение десятой производной и её максимума.]

6.4 Код программы на языке Visual Basic

Module Module1

Private Function f(t As Double) As Double

f = 1 / (10 + t)

End Function

Sub Main()

Dim integral As Double = 0.0

Dim t()={System. Math. Sqrt((3-2*System. Math. Sqrt(1.2))/7), _

- System. Math. Sqrt((3-2*System. Math. Sqrt(1.2))/7), _

System. Math. Sqrt((3+2*System. Math. Sqrt(1.2))/7), _

-System. Math. Sqrt((3+2*System. Math. Sqrt(1.2))/7)}

Dim A()={(18+System. Math. Sqrt(30))/36, _

(18+System. Math. Sqrt(30))/36, _

(18-System. Math. Sqrt(30))/36, _

(18-System. Math. Sqrt(30))/36}

For i = 0 To 3 Step 1

integral = integral + A(i) * f(t(i))

Next

Console. WriteLine(integral)

End Sub

End Module

6.5 Вывод

Искомый интеграл получился равным

Данный метод оказался более точным, чем другие рассмотренные методы численного интегрирования.

7 Задание №12

7.1 Задание

Сравнить эффективность метода Ньютона и метода обратной квадратичной интерполяции для достижения заданной точности. .

на промежутке .

7.2 Описание метода решения задачи

Метод Ньютона поиска корней уравнения был описан выше.

Метод обратной квадратичной интерполяции заключается в следующем:

Выбираем любые три точки на промежутке , и находим по ним уравнение параболы . На каждом шаге находим следующее приближение: .

Продолжаем этот процесс, пока .

Таблица 8 – Сравнение эффективности метода Ньютона и метода обратной квадратичной интерполяции

Метод Ньютона

Метод обратной квадратичной интерполяции

0

0,2000

0

0,4400

1

0,5423

1

0,4384

2

0,4407

2

0,4384

3

0,4384

7.3 Код программы на языке C++

#include <iostream>

#include <fstream>

#define _USE_MATH_DEFINES

#include <cmath>

float f(float q) {

return q * q - cos(M_PI * q);

}

float f1(float q) {

return 2 * q + M_PI * sin(M_PI * q);

}

int main () {

std::ofstream out("z12.out");

std::out. precision(4);

std::out. setf (ios::fixed);

std::out << "Square:" << std::endl;

float x0 = 0.2f, x1 = 0.4f, x2 = 0.5f;

float y0 = f(x0), y1 = f(x1), y2 = f(x2);

float e = 0.0001f;

float x = (y0 * y0 * y1 * x2 + y2 * y2 * y0 * x1 + y1 * y1 * y2 * x0

- y2 * y2 * y1 * x0 - y0 * y0 * y2 * x1 - y1 * y1 * y0 * x2)

/ (y0 * y0 * y1 + y2 * y2 * y0 + y1 * y1 * y2 - y1 * y2 * y2

- y2 * y0 * y0 - y0 * y1 * y1);

int i = 0;

while (fabs(x - x2) >= e)

{

std::out << i << ' ' << x0 << ' ' << x1 << ' ' << x2

<< ' ' << x << std::endl;

x0 = x1; x1 = x2; x2 = x;

y0 = f(x0); y1 = f(x1); y2 = f(x2);

x = (y0 * y0 * y1 * x2 + y2 * y2 * y0 * x1 + y1 * y1 * y2 * x0

- y2 * y2 * y1 * x0 - y0 * y0 * y2 * x1 - y1 * y1 * y0 * x2)

/ (y0 * y0 * y1 + y2 * y2 * y0 + y1 * y1 * y2 - y1 * y2 * y2

- y2 * y0 * y0 - y0 * y1 * y1);

i++;

}

std::out << i << ' ' << x0 << ' ' << x1 << ' ' << x2

<< ' ' << x << std::endl;

std::out << x << std::endl;

std::out << "Newton:" << std::endl;

x0 = x1 = 0.2f;

x1 = x0 - f(x0) / f1(x0);

i = 0;

while (fabs(x0 - x1) >= e)

{

out << i << ' ' << x0 << ' ' << x1 << endl;

x0 = x1; x1 = x0 - f(x0) / f1(x0);

i++;

}

std::out << i << ' ' << x0 << ' ' << x1 << std::endl << x1;

return 0;

}

7.4 Вывод

Метод обратной квадратичной интерполяции оказался более эффективным, чем метод Ньютона. Скорость сходимости этих методов примерно одинакова, однако метод Ньютона обладает локальной сходимостью, а метод обратной квадратичной интерполяции более стабилен.

8 Задание №13

8.1 Задание

Вычислить коэффициенты обусловленности корней полинома пятой степени в зависимости от коэффициентов полинома a priori и a posteori, то есть теоретически и вычислив корни полинома с помощью приближенных методов по формуле Ньютона.

Показать, что для кратных и простых корней метод имеет различную скорость сходимости

Коэффициенты уравнения вещественны и заданы с точностью , которая должна быть предварительно подсчитана (с учётом характеристики машинный экпилон используемого типа данных).

8.2 Алгоритм определения машинной точности

printf( "\tЭпсилон\tРазмер мантиссы\n");

float epf = 1;

int i = 1;

while ((1+epf/2) != 1)

{

epf/=2;

++i;

}

printf( "float:\t%G\t%i\n", epf/2, i);

Величина машинного эпсилон для типа float составляет , длина мантиссы – 24.

8.3 Априорная оценка погрешности

Вычислим корни уравнения.

– корень первой кратности.

– корень второй кратности.

– корень второй кратности.

Сначала найдём коэффициенты обусловленности для корня первой кратности.

Найдём коэффициенты обусловленности для корня [необходимо привести явную формулу для вычисления коэффициентов]:

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7