Первый семестр / Лабалаторная работа №1 / Лаболаторная работа №1 ИМС
.odt
МИНОБРНАУКИ РОССИИ
Санкт-Петербургский государственный
электротехнический университет
«ЛЭТИ» им. В.И. Ульянова (Ленина)
Кафедра Математического обеспечения и применения ЭВМ
отчет
по лабораторной работе №1
по дисциплине «Информационные модели и системы»
Тема: Вычисление значения функции с вводом двух переменных
Студент гр. 8802 |
|
Попов А.П. |
Преподаватель |
|
Сидоров Ю.Н. |
Санкт-Петербург
2018
СОДЕРЖАНИЕ
Содержательная постановка задачи..................................................................................................2
Формальная постановка задачи.........................................................................................................3
Алгоритмизация..................................................................................................................................4
Типы структур данных.......................................................................................................................5
Текст программы................................................................................................................................5
Примеры выполнения программы в содержательной постановке................................................6
1
Содержательная постановка задачи
Требуется написать программу, вычисляющую значение выражения A=lg(³√(x)+√(y)). Все переменные и результат должны быть в области вещественных чисел Примеры решения задачи (все иррациональные числа представлены с точностью до трех знаков после запятой):
1. x=125; y=25. 2. x=-125; y=25.
A=lg(³√(125)+√(25))=lg(10)=1. A=lg(³√(-125)+√(25))=lg(0).
Десятичный логарифм от 0 не определен.
3. x=22; y=-25.
A=lg(³√(22)+√(-25)).
Квадратный корень из отрицательного числа не входит во множество вещественных чисел.
4. x=-49; y=-42.
A=lg(³√(-49)+√(-42)).
Квадратный корень из отрицательного числа не входит во множество вещественных чисел.
5. x=10; y=31.
A=lg(³√(10)+√(31))=lg(2,154+5,568)=0,888.
6. x=-36; y=8.
A=lg(³√(-36)+√(8))=lg(-3,302+2,828).
Десятичный логарифм из отрицательного числа не определен.
7. x=88; y=0. 8. x=14; y=14.
A=lg(³√(88)+√(0))=lg(4,448)=0,648. A=lg(³√(14)+√(14))=lg(2,41+3,741)=0,789.
9. x=7; y=24.
A=lg(³√(88)+√(0))=lg(1,192+4,899)=0,833.
10. x=30; y=42.
A=lg(³√(30)+√(42))=lg(3,107+6,48)=0,981.
2
Формальная постановка задачи
Дано: x,y ∈ ℝ
Найти: a ∈ ℝ, где a=lg(³√(x)+√(y))
Область значений отображения: a ∈ ℝ
Область определения отображения: a(x,y)={x,y|(x,y ∈ ℝ) ^ (y≥0) ^ (³√(x)+√(y)>0)}
3
Алгоритмизация
Сообщения, выводимые на экран, сокращены.
4
Типы и структуры данных
x- переменная вещественного типа, первая вводимая пользователем переменная
y- переменная вещественного типа, вторая вводимая пользователем переменная
AR — переменная вещественного типа. Вычисляемая в программе переменная.
если x≥0, то AR=(³√(x)+√(y)),
если x<0, то AR=(-³√(x)+√(y)).
A - переменная вещественного типа. Является результатом, который необходимо вычислить. A = lg(AR).
Текст программы.
program lab1;
var A,x,y,AR:real; {A - результат. x и y вводятся пользователем. AR - Accectable Range,переменная для проверки соответствия ОДЗ}
begin
{Приглашение на ввод начальных данных}
writeln ('Введите переменные x и y для вычисления значения A=lg((x)^1/3+√(y)). Переменные x и y вещественного типа:');
{Ввод данных}
write ('Переменная x->'); readln (x);
write ('Переменная y->'); readln (y);
{Проверка ОДЗ}
if (y<0) then writeln ('Решение лежит в области комплексных чисел') else
{при y<0 будет попытка вычислить квадратный корень из отрицательного числа, что невозможно во множестве вещественных чисел}
begin
if (x<0) then AR:=-(power(-x,1/3))+sqrt(y) else AR:=(power(x,1/3))+sqrt(y);
{Всегда можно вычислить корень третьей степени из отрицательного числа, но в связи с реализацией функции power, в Pascal это невозможно. Для обхода ограничения можно вычислить корень третьей степени из положительного числа, а позже сменить знак}
if (AR<=0) then writeln ('Выражение (x)^1/3+√(y)<=0. Невозможно вычислить lg(a), где a=0 или a<0')
{Вычисление и вывод результата}
else begin
A:=log10(AR); {Вычисление A. log10(выражение) - то же самое что и l g(выражение)}
writeln ('Значение A=',A);
end
end
end.
5
Примеры выполнения программы в содержательной постановке
1. Ввод: x=125; y=25.
Вывод: «Значение A=1»
2. Ввод: x=-125; y=25.
Вывод: «Выражение (x)^1/3+√(y)<=0. Невозможно вычислить lg(a), где a=0 или a<0»
3. Ввод: x=22, y=-25
Вывод: «Решение лежит в области комплексных чисел»
4. Ввод: x=-49; y=-42.
Вывод: «Решение лежит в области комплексных чисел»
5. Ввод: x=10; y=31.
Вывод: «Значение A=0.887740992113899»
6. Ввод: x=-36; y=8.
Вывод: «Выражение (x)^1/3+√(y)<=0. Невозможно вычислить lg(a), где a=0 или a<0»
7. Ввод: x=88; y=0.
Вывод: «Значение A=0.648160890716723»
8. Ввод: x=14; y=14.
Вывод: «Значение A=0.789002183115859»
9. Ввод: x=7; y=24.
Вывод: «Значение A=0.833268943973193»
10. Ввод: x=30; y=42.
Вывод: «Значение A=0.981726811634655»
6