Главная страница
Навигация по странице:

  • Относительной погрешностью приближенного значения числа называется

  • Задание № 2.

  • Задание №2

  • Отчет по лабораторным работам по дисциплине Конструирование программ


    Скачать 356.47 Kb.
    НазваниеОтчет по лабораторным работам по дисциплине Конструирование программ
    Дата06.03.2021
    Размер356.47 Kb.
    Формат файлаdocx
    Имя файлаOtchyot.docx
    ТипОтчет
    #182374
    страница1 из 9
      1   2   3   4   5   6   7   8   9

    МИНОБРНАУКИ РОССИИ

    Санкт-Петербургский государственный

    электротехнический университет

    «ЛЭТИ» им. В.И. Ульянова (Ленина)

    Кафедра Информационных Систем


    отчет

    по лабораторным работам

    по дисциплине «Конструирование программ»

    Студент гр. 5375




    Михайлов Ф.Р.

    Преподаватель




    Копыльцов А.А.



    Санкт-Петербург

    2017

    Лабораторная работа № 1. Определение абсолютной и относительной погрешностей приближенных чисел. Оценка погрешностей результата


    При проведении расчетов необходимо уметь практически оценивать погрешности ре-

    зультата. Разумная оценка погрешности позволяет удерживать оптимальное число знаков при вычислениях, оптимизируя трудоемкость расчетов. Абсолютная и относительная погрешности вычисляются непосредственно по формулам (1.2.1) и (1.2.2). Число верных знаков определяется в соответствии с теоремами 1-3 параграфа 1.2.

    Относительной погрешностью приближенного значения числа называется

    (1.2.2)

    Эта погрешность не зависит от масштаба величины единицы измерения. Непосредственное вычисление по формулам (1.2.1) и (1.2.2) невозможно, так как неизвестно. Часто задают величины верхние границы погрешностей и полагают

    (1.2.3)

    При записи приближенных чисел руководствуются следующими правилами. Пусть задано в виде конечной десятичной дроби .

    Значащими цифрами числа называются все цифры в его записи, начиная с первой ненулевой слева. Например,

    все значащие цифры подчеркнуты.

    Значащую цифру числа называют верной, если абсолютная погрешность числа не превосходит единицы разряда, соответствующего этой цифре.
    Задание № 1. Величина подъемной силы крыла самолета оценивается по формуле где - площадь проекции крыла на горизонтальную плоскость, - скорость натекания воздуха на крыло, - плотность атмосферы на заданной высоте, - угол атаки, отсчитываемый от направления нулевой подъемной силы, - коэффициент, зависящий от формы крыла. Требуется вычислить при заданных значениях и заданных абсолютных или относительных значениях этих величин. (В таблице 1 для нечетных вариантов задано , для четных .



    Задание_№_2.'>Задание № 2. Найти абсолютную погрешность вычисления функции при заданных значениях аргументов.

    25.





    1

    2

    3



    0.2350.0003

    0.3180.0002

    1.80.01



    48.390.001

    0.460.002

    3.1080.0003


    Задание №1

    #include

    #include

    using namespace std;

    double rnd(double num)

    {

    double rnd = 1;

    if (num >= 10)

    do

    {

    num /= 10;

    rnd /= 10;

    } while (num >= 10);

    else if (num < 1)

    {

    do

    {

    num *= 10;

    rnd *= 10;

    } while (num < 1);

    }

    return rnd;

    }

    int main()

    {

    double c, dc, da, p, dp, v, _v, s, ds, f, df, _f, rndf;

    int a;

    do

    {

    cout << "c = ";

    cin >> c;

    cout << "dc = ";

    cin >> dc;

    cout << "a = ";

    cin >> a;

    cout << "da = ";

    cin >> da;

    cout << "p = ";

    cin >> p;

    cout << "dp = ";

    cin >> dp;

    cout << "v = ";

    cin >> v;

    cout << "_v = ";

    cin >> _v;

    cout << "s = ";

    cin >> s;

    cout << "ds = ";

    cin >> ds;

    df = dc + da + dp + 2 * _v / v + ds;

    df = round(df * 10000) / 10000;

    f = c*a*p*v*v*s;

    _f = abs(f)*df;

    rndf = rnd(_f);

    _f = round(_f*rndf) / rndf;

    f = round(f*rndf) / rndf;

    cout << endl << "F = " << f << endl << "_F = " << _f << endl << "dF = " << df << endl;

    a = _getch();

    } while (a != 27);

    return 0;

    }

    Задание №2

    #include

    #include

    using namespace std;

    double sin(double a)

    {

    return a - (a*a*a) / 6 + (a*a*a*a*a) / 120 - (a*a*a*a*a*a*a) / 5040;

    }

    double func(double a, double b)

    {

    return sin(a*a*a) * sin((b + 1) / b);

    }

    double rnd(double num)

    {

    double rnd = 1;

    if (num >= 10)

    do

    {

    num /= 10;

    rnd /= 10;

    } while (num >= 10);

    else if (num < 1)

    {

    do

    {

    num *= 10;

    rnd *= 10;

    } while (num < 1);

    }

    return rnd;

    }

    int main()

    {

    double a, b, _a, _b, da, db, v, dv, _v, h = 0.01, rndv;

    do

    {

    cout << "a = ";

    cin >> a;

    cout << "_a = ";

    cin >> _a;

    cout << "b = ";

    cin >> b;

    cout << "_b = ";

    cin >> _b;

    da = _a / abs(a);

    db = _b / abs(b);

    v = func(a, b);

    dv = abs(a) * abs((func(a + h, b) - func(a - h, b)) / (2 * h))/ abs(v) *da + abs(b) * abs((func(a, b + h) - func(a, b - h)) / (2 * h))/ abs(v) *db;

    dv = round(dv * 10000) / 10000;

    _v = abs(v) * dv;

    rndv = rnd(_v);

    _v = round(_v * rndv) / rndv;

    v = round(v * rndv) / rndv;

    cout << "v = " << v << endl;

    cout << "dv = " << dv << endl;

    cout << "_v = " << _v << endl;

    a = _getch();

    } while (a != 27);

    return 0;

    }
      1   2   3   4   5   6   7   8   9


    написать администратору сайта