2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу Пред.  1, 2, 3, 4  След.
 
 Re: Фортран
Сообщение21.09.2015, 16:37 
Заслуженный участник
Аватара пользователя


06/10/08
6422

(Оффтоп)

Pphantom в сообщении #1055522 писал(а):
код: [ скачать ] [ спрятать ]
Используется синтаксис Fortran
program p1
  implicit none

  real :: x,y

  x=2
  y=f(x)
  write(*,*) y

 contains

  function f(x)
    implicit none
    real :: x,f

    f=x**2
  end function f

end program p1
 
А тут разве нужен второй implicit none?

 Профиль  
                  
 
 Re: Фортран
Сообщение21.09.2015, 16:38 
Заслуженный участник


20/08/14
11782
Россия, Москва
Sicker
Попробуйте переложить проект в папку без русских символов и без пробелов в пути. Уж сколько лет прошло, а до сих пор эта ошибка иногда всплывает в самых неожиданных местах.

-- 21.09.2015, 16:43 --

(Оффтоп)

Pphantom в сообщении #1055529 писал(а):
Я, наверное, несколько старомоден, но мне кажется, что первое, что нужно сделать при изучении программирования - забыть о существовании сред разработки. Это приспособления для тех, кто уже умеет программировать и понимает, что именно происходит без его участия. :D
Просто разный подход к программированию, у Вас академический, научиться именно программировать на языке, а у других (я не про присутствующих) лишь бы сляпать что-то работающее (без цели изучить сам язык). Во втором случае среды (да ещё если с примерами) - панацея, быстренько накидал куски кода из примеров и по аналогии и всё. Я не агитирую, я тоже против такого.

 Профиль  
                  
 
 Re: Фортран
Сообщение21.09.2015, 16:57 
Заслуженный участник


09/05/12
25179

(Оффтоп)

Xaositect в сообщении #1055530 писал(а):
А тут разве нужен второй implicit none?
Нет, внешний сработает, но для начала лучше вставлять везде - хуже не будет. :D

 Профиль  
                  
 
 Re: Фортран
Сообщение21.09.2015, 16:57 
Заслуженный участник
Аватара пользователя


30/01/06
72407
Sicker в сообщении #1055514 писал(а):
Просто фортран используется для научных целей, а там одни вычисления.

Это не отменяет необходимости на нём программировать.

Если вам нужны вычисления именно символьные, то не используйте фортран.

Sicker в сообщении #1055517 писал(а):
Нам надо в фортране реализовать метод касательных Ньютона.

Делается это двумя способами:

1. Программе предоставляется одна функция, а производную программа находит численно.
2. Программе предоставляются две функции: сама $f(x)$ и её производная.

А ваши извращения забудьте.

 Профиль  
                  
 
 Re: Фортран
Сообщение21.09.2015, 17:10 
Аватара пользователя


13/08/13

4323
Munin
Я выберу второй вариант.
Просто для численного нахождения производной надо задавать дискретный набор точек, где определена функция.

 Профиль  
                  
 
 Re: Фортран
Сообщение21.09.2015, 17:15 
Заслуженный участник


09/05/12
25179
Sicker в сообщении #1055543 писал(а):
Я выберу второй вариант.
Он менее "жизненный". Как правило, получение аналитического представления для производной - более сложная задача, чем поиск корней функции.

 Профиль  
                  
 
 Re: Фортран
Сообщение21.09.2015, 17:18 
Заслуженный участник
Аватара пользователя


30/01/06
72407
Sicker в сообщении #1055543 писал(а):
Просто для численного нахождения производной надо задавать дискретный набор точек, где определена функция.

Для этого программа, находящая производную, должна вызвать функцию в двух разных точках, отстоящих на $\varepsilon.$ Эта величина выбирается как константа или как настроечный параметр.

 Профиль  
                  
 
 Re: Фортран
Сообщение21.09.2015, 17:25 
Аватара пользователя


13/08/13

4323
И находит численное значение производной скажем в точке $x_0$ по точкам(и значениям функции в этих точках) $x_0$ и $x_0+\varepsilon$?

-- 21.09.2015, 17:30 --

Pphantom в сообщении #1055544 писал(а):
Как правило, получение аналитического представления для производной - более сложная задача, чем поиск корней функции.

Я хотел задать ее ручками :mrgreen:
А в фортране можно аналитически вычислить производную?

 Профиль  
                  
 
 Re: Фортран
Сообщение21.09.2015, 17:43 
Заслуженный участник


27/04/09
28128
Вот подумайте: а что если ваша функция вдруг не элементарная и, более того, не такая, чтобы Matlab или другая СКА знали, как её дифференцировать? Тогда символьные вычисления не помогут. (Точнее, тогда они помогут, только если вы разбираетесь в том, какая там производная, и умеете это сказать СКА — но тогда особой мороки сказать это чему-нибудь другому тоже не будет.)

Если же функция берётся из какого-то узкого класса и задаётся, скажем, параметрами $a_1,\ldots,a_n$, нет особых проблем написать символьное дифференцирование таких функций вручную. Оно в данном случае сводится к получению параметров производной $a'_1,\ldots,a'_n$ по параметрам исходной функции. Иногда это сработает даже для неограниченного конечного числа параметров — если можно считать, что их счётное число, но, начиная с какого-то, они все нулевые, и хранить только нужный минимум; см. хотя бы степенные ряды (раз вы упоминали многочлены), а так вообще любые функциональные ряды $\sum_{i=0}^\infty a_i f_i$, где $f_i$ даны и образуют базис интересующего пространства.

Когда разберётесь с массивами и циклами по ним, рекомендую написать функцию для дифференцирования многочлена, заданного коэффициентами при степенях переменной. Ну и функцию для вычисления (правильную) так заданного многочлена от данного значения. И интегрирования тоже можно (выбирать любую одну первообразную по вкусу или же считать, например, $\int_0^x P(x)\,dx$).

 Профиль  
                  
 
 Re: Фортран
Сообщение21.09.2015, 17:44 
Аватара пользователя


13/08/13

4323
А что круче, Си или Фортран?

-- 21.09.2015, 17:45 --

Если конкретизировать слово "круче"-полнофункциональнее?

 Профиль  
                  
 
 Re: Фортран
Сообщение21.09.2015, 17:50 
Заслуженный участник


27/04/09
28128
Я не знаю фортран, но имеется ощущение, что в вашем смысле си не будет круче. И не поведитесь на синтаксис. Вот C# или Haskell уже сравнить не решусь. А языки без статической типизации — просто не буду. В любом случае, у языка есть свои заморочки представления о реальности, и мимо них при изучении и использовании не пройти.

-- Пн сен 21, 2015 19:51:05 --

Интересно, что скажут остальные. :-)

 Профиль  
                  
 
 Re: Фортран
Сообщение21.09.2015, 17:52 
Заслуженный участник


09/05/12
25179
Sicker в сообщении #1055549 писал(а):
Я хотел задать ее ручками
Это понятно. Однако в нормальной жизни хорошего аналитического представления даже для самой функции (не говоря уж о ее производной) зачастую не имеется, так что задавать ручками нечего.
Sicker в сообщении #1055549 писал(а):
А в фортране можно аналитически вычислить производную?
Нет. Ну, конечно, если не написать на нем очередную систему компьютерной алгебры (это принципиально возможно, но явно нерационально).

-- 21.09.2015, 17:54 --

Sicker в сообщении #1055554 писал(а):
А что круче, Си или Фортран?

Если конкретизировать слово "круче"-полнофункциональнее?
Формально и на том, и на другом можно реализовать любой алгоритм, соответственно, они одинаковы.

Фактически: зависит от области применения. Как "высокоуровневый ассемблер", безусловно, лучше Си. Как вычислительный язык - Фортран. Для каких-то других областей, вообще говоря, еще какой-то третий язык.

 Профиль  
                  
 
 Re: Фортран
Сообщение21.09.2015, 18:23 
Заслуженный участник


20/08/14
11782
Россия, Москва
Pphantom в сообщении #1055559 писал(а):
Как "высокоуровневый ассемблер", безусловно, лучше Си. Как вычислительный язык - Фортран.
Я бы уточнил, Фортран лучше из-за наличия огромного количества готовых математических библиотек, хорошо оптимизированных (неслабыми математиками). Но с появлением новых процессоров с расширенными командами и гетерогенных сред (CPU+GPU) ситуация может и поменяться, не уверен что библиотеки на Фортране будут так же вылизывать под новую аппаратуру как на С.

 Профиль  
                  
 
 Re: Фортран
Сообщение21.09.2015, 18:34 
Аватара пользователя


13/08/13

4323
Почему не работает?
Код:
program p1

    implicit none

real x, e
x=4
e=0.001
do while (ABS(f(x))>e)
     x=x-f(x)/df(x)
end do
print*,'x=',x
    end program p1
   
    function f(x)
    f=x*sin(x)
    end
function df(x)
df=sin(x)+x*cos(x)
end


-- 21.09.2015, 18:35 --

(Ему не нравится функция f(x) в условии цикла)

 Профиль  
                  
 
 Re: Фортран
Сообщение21.09.2015, 18:38 
Заслуженный участник


09/05/12
25179
Dmitriy40 в сообщении #1055573 писал(а):
Я бы уточнил, Фортран лучше из-за наличия огромного количества готовых математических библиотек, хорошо оптимизированных (неслабыми математиками).
Это тоже верно, но дело не только в этом. На Фортране попросту удобнее писать соответствующие задачи, обеспечение сравнимых результатов требует существенно меньшей работы (да и меньшей квалификации) от разработчика.
Dmitriy40 в сообщении #1055573 писал(а):
Но с появлением новых процессоров с расширенными командами и гетерогенных сред (CPU+GPU) ситуация может и поменяться, не уверен что библиотеки на Фортране будут так же вылизывать под новую аппаратуру как на С.
Пока что это все держится. Что будет дальше, сказать трудно, но, думаю, принципиально ситуация не изменится - уже сейчас квалифицированных программистов на Си не так уж много, период, когда он был "общеизвестным языком", уже прошел.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 59 ]  На страницу Пред.  1, 2, 3, 4  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group