Помогите разобраться в задаче!
Задание такое: Затабулировать функцию двух переменных z(x,y)=sqrt(1-sqr(x)-sqr(y)) внутри квадрата 0<=x, y<=1 (<= - меньше или равно) и области существования функции z. Шаги табуляции х=у=0.1
Я задачю решил (вроде бы ). Мне не понятно как затабулировать функцию в области существования функции z. Помогите с этим пожайлуста! Вот моя программа:
uses crt;
const shag = 0.1;
var
x,y,z: real ;
count : integer ;
function func(x,y:real ):real;
var
z: real;
begin
z:=0;
begin
z:=sqrt(1-sqr(x)-sqr(y));
end;
func:=z;
end;
begin
clrscr;
count := 1;
x := 0;
y := 1;
While x <= y do
begin
writeln(count,')','x=',x,' y=',y,' z(x,y)=',func(x,y));
x:= x+shag;
y:= y-shag;
inc(count);
end;
end.
function func(x,y:real ):real;
var
z: real;
begin
z:=0;
begin
z:=sqrt(1-sqr(x)-sqr(y));
end;
func:=z;
end;
function func(x,y:real ):real;
begin
func:=sqrt(1-sqr(x)-sqr(y));
end;
function func(x,y:real ):real;
begin
func:=sqrt(1-sqr(x)-sqr(y));
end;
в общих чертах - можно так (а можно и иначе...):
uses crt;
const shag = 0.1;
eps=1E-5;
var
x,y:real;
count : integer ;
function func(x,y:real ):real;
begin
func:=sqrt(1-sqr(x)-sqr(y));
end;
begin
clrscr;
count := 1;
x := 0;
y := 0;
While x < 1+eps do
begin
y:=0;
while y< 1+eps do
begin
if (1-sqr(x)-sqr(y))>=0 then
begin
write(count:2,')','x=',x:0:1,' y=',y:0:1,' z(x,y)=',func(x,y):0:3,'; ');
inc(count);
if odd(count) then
writeln;
end;
y:= y+shag;
end;
x:= x+shag;
end;
readln;
end.
eps=1E-5;
вещественные числа не принято (ну, это не просто традиция, а во избежание лишних глюков) сравнивать через =. то есть лучше написать не с>=0.3, а с>0.2999999999, или (чтобы было нагляднее и проще было задать точность), с>3-eps, где eps - какое-то маленькое число (у меня это 10^-5)
почему??? 0.1, как положено....
просто выводится в 2 столбика, посмотри внимательнее
...
if odd(count) then
writeln;
end;
...
это не цикл
и к глюку никакого отношения не имеет...
вывод в 2 столбика позволяет лучше поместить строчки, иначе они совсем не влезают
Всё понятно! спасибо за помощь!