Tuesday, January 7, 2020

ЛР9 Программирование (2.1 В21) - IV

LabWork9
📑 IT Online Mini Campus. Task 2.1
IV. Программа SageMath (Python)
def create_table(f,x0,hx,n,z0,hz,m,exc):
    pretty_print(html(latex(f)))
    t=[['n','m','x','z','f(x,z)=','f(x,z)≈']]
    for i in [1..n]:
        for j in [1..m]:
            x,z=x0+(i-1)*hx,z0+(j-1)*hz
            if z==exc:
                t.append([i,j,round(x,3),round(z,3),
                          r'$\nexists$',r'$\nexists$'])                
            else:
                t.append([i,j,round(x,3),round(z,3),
                          f(x,z),f(x,z).n(digits=2)])
    return(table(t))
f21(x,z)=(log(sqrt(pi))+abs(2-x))/(3.3-1/z)+z^(2/3)*cos(x^2)
#f22(x,z)=exp((x+2)^(1/3))/(3.5+z)*(1/7+log(sqrt(z)))*sin(x+z)
plot3d(f21,(x,.1,1.1),(z,.1,1.1),mesh=True).show()
create_table(f21,6.7,.1,4,3.3,.2,3,1/3.3)





ЛР9 Программирование (2.1 В21) - III

LabWork9
📑 Compile Pascal Online
III. Программа Pascal
Program Lab9;
var X1,HX,Z1,HZ,X,Z,Y: real;
    N,M,i,j: integer;
begin
    writeln('Лаб.9':38);
    write('Количество значений N аргумента X: '); 
    readln(N); writeln(N:3);
    write('Количество значений M аргумента Z: '); 
    readln(M); writeln(M:3);
    write('Начальное значение аргумента X1: '); 
    readln(X1); writeln(X1:5:2);
    write('Изменение значения аргумента HX: '); 
    readln(HX); writeln(HX:5:2);
    write('Начальное значение аргумента Z1: '); 
    readln(Z1); writeln(Z1:5:2);
    write('Изменение значения аргумента HZ: '); 
    readln(HZ); writeln(HZ:5:2);
    writeln('Таблица значений функции');
    i:=1; X:=X1;
    while i<N+1 do
    begin
        j:=1; Z:=Z1;
        while j<M+1 do
        begin
            write(X:5:2,'',Z:5:2,' ');
            if Z*3.3=1 then
                writeln('Y не существует')
            else
            begin
                Y:=(ln(sqrt(pi))+abs(2-X))/(3.3-1/Z)+exp(1/3*ln(Z*Z))*cos(X*X);
                writeln(Y:5:4);
            end;
            Z:=Z+HZ; j:=j+1;
        end;
        X:=X+HX; i:=i+1;
    end;
end.


STDIN
4
3
6.7
0.1
3.3
0.2



ЛР9 Программирование (2.1 В21) - II

LabWork9
II. Алгоритм

ЛР9 Программирование (2.1 В21) - I

I. Внешняя спецификация
1. Условие задачи
Составить алгоритм и программу для вычисления таблицы значений заданной функции для N значений X, меняющихся от Xнач с заданным шагом HX, и M значений Z, меняющихся от Zнач с шагом HZ.

2. Состав данных
Тип
Имя
Смысл
Структура
Исходные данные
вещественный
X1
начальное значение аргумента X
простая переменная
вещественный
HX
шаг изменения значения аргумента X
простая переменная
вещественный
Z1
начальное значение аргумента Z
простая переменная
вещественный
HZ
шаг изменения значения аргумента Z
простая переменная
целый
N
количество значений аргумента X
простая переменная
целый
M
количество значений аргумента Z
простая переменная
Выходные данные
вещественный
X
значение аргумента X
простая переменная
вещественный
Z
значение аргумента Z
простая переменная
вещественный
Y
значение функции
простая переменная
Промежуточные данные
целый
i
номер шага итерации при изменении аргумента X
простая переменная
целый
j
номер шага итерации при изменении аргумента X
простая переменная

3. Форма ввода
1 3
<N>
1 3
<M>
1 5
<X1>
1 5
<HX>
1 5
<Z1>
1 5
<ZX>

4. Выходная форма
1 3
<N>
1 3
<M>
1 5
<X1>
1 5
<HX>
1 5
<Z1>
1 5
<ZX>
1 5
<X>
1 5
<Z>
1 5
<Y>
...
1 5
<X>
1 5
<Z>
1 5
<Y>

5. / 6. Проработка фрагментов программы
Значение функции существует при любых значениях аргументов, кроме случая 3.3-1/Z=0.
Проверка дополнительных условий требуется для продолжения работы программы и подсчета значений функции для других значений аргументов.

7. Аномалии
При Z=1/3.3 значение функции невозможно вычислить для вещественных аргументов, программа выдает соответствующее сообщение. 
Ошибки программы возможны и при некорректном вводе данных пользователем. Сообщение в таких случаях выдает компилятор.

8. Тесты
1) с положительным результатом

4
3
6.7
0.1
3.3
0.2


2) с отрицательным результатом

2
3
5.7
0.2
S
0.1