Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Параметрическая функция (http://www.tehnari.ru/f41/t59607/)

Su-34 10.11.2011 15:25

Параметрическая функция
 
Вложений: 1
Помогите новичку! Мне надо задать параметрическую функцию
x=(t+1/t)/2
y=(t-1/t)/2
в Visual Fortran. Как задать промежуток a,b или их должно быть несколько ввиду разрывности? Что неправильного в кодах?


program lab1
real a,b,h,x,y
integer i,N
open(10,file='lab1.txt')
a=??
b=??
N=31
h=(b-a)/(N-1)
do i=1,N
t=a+h*i
r=f**2
x=(t+1/t)/2
y=(t-1/t)/2
print*,x,y
write(10,*)x,y
end do
end

Vladimir_S 10.11.2011 16:26

Цитата:

Сообщение от Su-34 (Сообщение 615354)
Что неправильного в кодах?

Во-первых, ни к селу, ни к городу затесавшаяся (явно из предыдущей задачи) строка
Цитата:

Сообщение от Su-34 (Сообщение 615354)
r=f**2

Во-вторых, тут так. Действительно, нужно просчитать порознь 4 ветви функции. Вот перечень диапазонов изменения параметра t и координат x, y:
Код:

1<t<+∞    1<x<+∞  0<y<+∞
 0<t<1    +∞>x>1  -∞<y<0
-∞<t<-1  -∞<x<-1  -∞<y<0
-1<t<0    -1>x>-∞  0<y<+∞

причем (ВАЖНО!) параметр t не должен принимать нулевого значения, иначе возникнет ошибка.

Su-34 10.11.2011 16:52

Т.е. надо несколько циклов задавать?? Можете показать:tehnari_ru_203:

Vladimir_S 10.11.2011 17:10

Цитата:

Сообщение от Su-34 (Сообщение 615402)
Т.е. надо несколько циклов задавать?? Можете показать:tehnari_ru_203:

Ох, да не знаю я Вашего Фортрана! Просто скопируйте еще три раза фрагмент вычисления значений и записи в файл, меняя параметры a и b.

Su-34 10.11.2011 17:25

Ну я пытаюсь. Но вот это тоже вроде не то.....:(

program lab1
real a,b,h,x,y
integer i,N
open(10,file='lab1.txt')
a=-8
b=-1
N=31
h=(b-a)/(N-1)
do i=1,N
t=a+h*i
x=(t+1/t)/2
y=(t-1/t)/2
print*,x,y
write(10,*)x,y
END DO
a=-5
b=-1
N=31
h=(b-a)/(N-1)
do i=1,N
t=a+h*i
x=(t+1/t)/2
y=(t-1/t)/2
print*,x,y
write(10,*)x,y
END DO
a=1
b=5
N=31
h=(b-a)/(N-1)
do i=1,N
t=a+h*i
x=(t+1/t)/2
y=(t-1/t)/2
print*,x,y
write(10,*)x,y
END DO
a=1
b=8
N=31
h=(b-a)/(N-1)
do i=1,N
t=a+h*i
x=(t+1/t)/2
y=(t-1/t)/2
print*,x,y
write(10,*)x,y
end do
end

Vladimir_S 11.11.2011 14:48

Вложений: 1
В общем - так. Опять же переписал программу на привычный мне Паскаль и результат построил в ORIGIN'е. Всё получилось, только возникла паразитная соединительная линия, проходящая через начало координат. Чтобы этого избежать, нужно разбить файл пополам и строить две серии порознь. Не знаю, можно ли сделать такое в Excell'е - никогда графиков в нем не строил.
Код:

var
 a,b,h,x,y,t:real;
 i,N:integer;
 ff:Text;

BEGIN
 Assign(ff,'D:\lab2.dat');
 Rewrite(ff);
 a:=0.05;
 b:=0.95;
 N:=18;
 h:=(b-a)/N;
 for i:=0 to N do
  begin
  t:=a+h*i;
  x:=(t+1/t)/2;
  y:=(t-1/t)/2;
  writeln(ff,t:6:2,x:12:3,y:12:3);
  end;
 a:=1;
 b:=11;
 N:=20;
 h:=(b-a)/N;
 for i:=0 to N do
  begin
  t:=a+h*i;
  x:=(t+1/t)/2;
  y:=(t-1/t)/2;
  writeln(ff,t:6:2,x:12:3,y:12:3);
  end;
 a:=-11;
 b:=-1;
 N:=20;
 h:=(b-a)/N;
 for i:=0 to N do
  begin
  t:=a+h*i;
  x:=(t+1/t)/2;
  y:=(t-1/t)/2;
  writeln(ff,t:6:2,x:12:3,y:12:3);
  end;
 a:=-0.95;
 b:=-0.05;
 N:=18;
 h:=(b-a)/N;
 for i:=0 to N do
  begin
  t:=a+h*i;
  x:=(t+1/t)/2;
  y:=(t-1/t)/2;
  writeln(ff,t:6:2,x:12:3,y:12:3);
  end;
 Close(ff);
END.



Часовой пояс GMT +4, время: 16:39.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.