Автор Тема: Вопрос по Compaq Visual Fortran  (Прочитано 3360 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Fencer

  • Пользователь
  • **
  • Сообщений: 30
    • Просмотр профиля
Вопрос по Compaq Visual Fortran
« : 06 Ноября 2011, 18:51:24 »
Как задать такую разрывную функцию? Я дал параметр c,d. Но график не рисует...

program lab1
real a,b,c,d,h,x,y
integer i,N
open(10,file='lab1.txt')
a=-5
b=-13./10.
c=23./10.
d=5
N=31
h=(b-a)/(N-1)
do i=1,N
x=a+(i-1)*h
y=2-(3./4.)*(sqrt(x**2-x-3.))
print*,x,y
write(10,*)x,y
end do
end


Оффлайн Selyd

  • Старожил
  • ****
  • Сообщений: 408
    • Просмотр профиля
Re: Вопрос по Compaq Visual Fortran
« Ответ #1 : 06 Ноября 2011, 23:39:39 »
У тебя под корнем функция, которая на интервале [-1;+2] (приблизительно,
посчитай точно) не существует. Поэтому надо дать два цикла -
один цикл для левой ветки, а второй - для правой ветки кривой.
Дырка, кажется, получится в автомате. Удачи.

Оффлайн Fencer

  • Пользователь
  • **
  • Сообщений: 30
    • Просмотр профиля
Re: Вопрос по Compaq Visual Fortran
« Ответ #2 : 07 Ноября 2011, 07:26:22 »
как прописать правильно два цикла?

Оффлайн Selyd

  • Старожил
  • ****
  • Сообщений: 408
    • Просмотр профиля
Re: Вопрос по Compaq Visual Fortran
« Ответ #3 : 07 Ноября 2011, 16:48:19 »
как прописать правильно два цикла?
Найди корни подкоренного выражения.
Левая ветвь
Меньший корень - правый конец для левого интервала. Левый конец левого интервала выбирай сам.
Левая ветвь на отрезке [Левый конец; Меньший корень]
Назначь N для левой ветви и - цикл.
Правая ветвь
Больший корень - левый конец интервала для правого интервала.
Правый конец правого интервала выбирай сам.
Назначь N для правой ветви и - цикл.

Назначь N для правой ветви и - свой цикл.

Оффлайн Fencer

  • Пользователь
  • **
  • Сообщений: 30
    • Просмотр профиля
Re: Вопрос по Compaq Visual Fortran
« Ответ #4 : 07 Ноября 2011, 19:19:02 »
Как назначить N ???

Оффлайн Selyd

  • Старожил
  • ****
  • Сообщений: 408
    • Просмотр профиля
Re: Вопрос по Compaq Visual Fortran
« Ответ #5 : 08 Ноября 2011, 00:00:36 »
Если у тебя отрезок [a;b] и шаг h, тогда N=(b-a)/h.
Как ты делал сам, только теперь два раза. Это ты выбираешь, назначаешь.
Выбирая левую и правую границы, и шаг будеш менять детализацию рисунка.
В разумных пределах конечно, чтобы влезло в поле екрана и было наглядно.
Дыра от меньшего до большего корня подкоренного выражения
стабильна. Тут ты ничего сделать не можешь.
Посмотрел твой рисунок ещё раз. Ну там же всё правильно!
Есть левая ветвь, обрыв в -1. Есть правая, обрыв в +2.
И дыра на месте.
« Последнее редактирование: 08 Ноября 2011, 00:04:59 от Selyd »

Оффлайн Fencer

  • Пользователь
  • **
  • Сообщений: 30
    • Просмотр профиля
Re: Вопрос по Compaq Visual Fortran
« Ответ #6 : 08 Ноября 2011, 06:06:19 »
Какая-то ошибка в sqrt...что там не так?

Оффлайн Selyd

  • Старожил
  • ****
  • Сообщений: 408
    • Просмотр профиля
Re: Вопрос по Compaq Visual Fortran
« Ответ #7 : 08 Ноября 2011, 22:10:45 »
Ты двигаешься слева направо. Аргумент
становится больше меньшего корня и ты
под корнем получаешь отрицательное число.
Речь и идёт о том, чтобы пропустить отрезок
[Xmin; Xmax] за счёт двух отдельных циклов
для левой и правой ветвей графика.

Оффлайн Fencer

  • Пользователь
  • **
  • Сообщений: 30
    • Просмотр профиля
Re: Вопрос по Compaq Visual Fortran
« Ответ #8 : 09 Ноября 2011, 06:06:30 »
При таком раскладе в екселе рисует только правую часть графика..!

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

Что делать?? :-\

Оффлайн wital1984

  • Постоялец
  • ***
  • Сообщений: 189
    • Просмотр профиля
Re: Вопрос по Compaq Visual Fortran
« Ответ #9 : 09 Ноября 2011, 14:41:08 »
При таком раскладе в екселе рисует только правую часть графика..!
....
Честно говоря, в Visual Fortran я не в зуб ногой, но почему у вас нет в первом цикле write(10,*)x,y ?, может, в этом дело.
и почему в первом цикле нет точки после 3 при нахождении y: y=2-(3./4.)*(sqrt(x**2-x-3))
А так вроде все логично верно, если рисует правую часть, то и левую должен рисовать

Оффлайн ScoRpiON

  • Пользователь
  • **
  • Сообщений: 42
    • Просмотр профиля
Re: Вопрос по Compaq Visual Fortran
« Ответ #10 : 09 Ноября 2011, 17:57:20 »
всё сделал. :-[

Оффлайн ScoRpiON

  • Пользователь
  • **
  • Сообщений: 42
    • Просмотр профиля
Re: Вопрос по Compaq Visual Fortran
« Ответ #11 : 09 Ноября 2011, 19:19:40 »
Вообщем вопрос в следующем. Есть функция y=tan(x/2-1). Период беру от -1.13 до 5.13. Но в екселе рисует так:
Как сделать чтобы была плавная линия, взять ограничения по y? Помогите пожалуйста

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

Оффлайн Selyd

  • Старожил
  • ****
  • Сообщений: 408
    • Просмотр профиля
Re: Вопрос по Compaq Visual Fortran
« Ответ #12 : 10 Ноября 2011, 18:48:58 »
Возьми большое количество точек, малый шаг.
Тогда все пиксели будут засвечены и не будет пропусков.

 

Простенький вопрос по Matlab

Автор Lerk

Ответов: 0
Просмотров: 3807
Последний ответ 15 Марта 2010, 10:01:45
от Lerk
Вопрос про таймер Delphi

Автор berkut_174

Ответов: 8
Просмотров: 4170
Последний ответ 11 Ноября 2012, 22:51:31
от berkut_174
Маленький вопрос по SQL

Автор Astro

Ответов: 4
Просмотров: 3924
Последний ответ 11 Февраля 2010, 18:41:29
от InfStudent
visual basic, программа для вычисления силы тока, сопротивления, напряжения

Автор Иришка!!!

Ответов: 0
Просмотров: 6148
Последний ответ 10 Февраля 2011, 14:36:16
от Иришка!!!
Доброго времени суток, помогите пожалуйсто написать программу на Visual C++

Автор Кирилл89

Ответов: 3
Просмотров: 5756
Последний ответ 03 Ноября 2011, 17:01:18
от DrXakep