Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 10.11.2011, 13:44   #1 (permalink)
Su-34
Member
 
Регистрация: 10.11.2011
Сообщений: 65
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 9
По умолчанию Табулирование функции, полярные координаты

Помогите пжлста. Мне надо затабулировать функцию р=sin(f/2), заданную полярными координатами с помощью Visual Fortran.
Что я не так сделал, что нужно исправить чтобы в екселе получился график 2). Пока он мне рисует только правую часть 1)

program lab1
real a,b,h,x,y
integer i,N
open(10,file='lab1.txt')
a=-7
b=1
N=31
h=(b-a)/(N-1)
do i=1,N
f=a+h*i
r=sin(f/2)
x=r*cos(f)
y=r*sin(f)
print*,x,y
write(10,*)x,y
end do
end
Миниатюры
aen.jpg   aieue.jpg  
Su-34 вне форума   Ответить с цитированием

Старый 10.11.2011, 13:44
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Наверняка в этих темах есть интересующий вас ответ

Найти площадь выпуклого многоугольника, если даны координаты вершин многоугольника
DElphi массивы и табулирование
Функции на Pascal.
C# массивы и функции
Процедуры и функции

Старый 10.11.2011, 14:22   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Su-34 Посмотреть сообщение
a=-7 b=1
А почему Вы берёте такие странные пределы? Ведь справа указано: от 0 до 4π, т.е от 0 до где-то 12.57. Такие и надо брать.
Переписал Вашу программу с VF на Паскаль, практически ничего в ней не меняя:
Код:
var
 a,b,h,x,y,r,f:real;
 i,N:integer;
 ff:TEXT;
begin
 Assign(ff,'D:\lab1.dat');
 ReWrite(ff);
 a:=0;
 b:=Pi*4;
 N:=100;
 h:=(b-a)/N;
 for i:=0 to N do
  begin
   f:=a+h*i;
   r:=sin(f/2);
   x:=r*cos(f);
   y:=r*sin(f);
   writeln(ff,x:8:5,'  ',y:8:5);
  end;
 Close(ff);
end.
запустил и - пожалуйста (построено в пакете ORIGIN):
lab_1.jpg
Так что всё дело только в правильной установке пределов.
Vladimir_S вне форума   Ответить с цитированием
Старый 10.11.2011, 15:14   #3 (permalink)
Su-34
Member
 
Регистрация: 10.11.2011
Сообщений: 65
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 9
По умолчанию

Можно еще вопрос? То же самое надо сделать с р=(phi)^2. Ведь должна получиться парабола? Тогда надо писать:
program lab1
real a,b,h,x,y
integer i,N
open(10,file='lab1.txt')
a=-1
b=1
N=31
h=(b-a)/(N-1)
do i=1,N
f=a+h*i
r=f**2
x=r*cos(f)
y=r*sin(f)
print*,x,y
write(10,*)x,y
end do
end

Что не так?
Su-34 вне форума   Ответить с цитированием
Старый 10.11.2011, 15:57   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Su-34 Посмотреть сообщение
Ведь должна получиться парабола?
Это еще в честь чего? В малой окрестности нуля должна быть функция вида у=х**(3/2). А у Вас что получается?
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




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

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.