generate
::fortran
Сгенерируйте отформатированную строку Фортрана
Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразуют Notebook MuPAD в Live скрипты MATLAB.
generate::fortran(e
, <NoWarning>, <Version = "versionName">)
generate::fortran(e)
генерирует код Фортран для выражения MuPAD® e
.
generate::fortran
возвращает отформатированную строку Фортрана, представляющую выражение, уравнение, список уравнений или матрицу.
Уравнение представляет присвоение в коде Фортран. Типом присвоения является double
.
При генерации кода Фортран для матрицы генератор присваивает только ненулевые элементы. Смотрите Пример 2.
Чтобы распечатать выводимую строку к файлу, используйте fprint
функция. Чтобы удалить кавычки и расширить специальные символы как разрывы строки и вкладки, используйте параметр печати Unquoted
.
Используйте generate::optimize
функция, чтобы оптимизировать код MuPAD прежде, чем преобразовать его в код Фортран. Смотрите Пример 4.
NoWarning
опция позволяет вам отключить предупреждения. Смотрите Пример 5.
Version
опция задает целевую версию компилятора Фортрана что generate::fortran
использование, чтобы сгенерировать код. Опциями является Fortran77
(значение по умолчанию), Fortran90
, и Fortran95
. Смотрите пример 6.
Генератор кода преобразует список уравнений к последовательности присвоений.
generate::fortran([x[1] = y[2 + i]^2*(y[1] + sin(z)), x[2] = tan(x[1]^4)]): print(Unquoted,%)
x(1) = (sin(z)+y(1))*y(i+2)**2 x(2) = tan(x(1)**4)
Сгенерированный код Фортран не включает присвоения для нулевых элементов матрицы.
A:= matrix([[1, 0, 0],[0, 0, 1]]): print(Unquoted, generate::fortran(A))
A(1,1) = 1.0D0 A(2,3) = 1.0D0
Если первый индекс массива не 1, то generate::fortran
функция выдает предупреждение.
A:= array(1..2, 2..3, [[1,2],[3,4]]): print(Unquoted, generate::fortran(A))
Warning: Array index 'A[1..2, 2..3]' out of range 1..n.
A(1,2) = 1.0D0 A(1,3) = 2.0D0 A(2,2) = 3.0D0 A(2,3) = 4.0D0
generate::fortran
функция не оптимизирует ваш код.
print(Unquoted, generate::fortran([x = a + b, y = (a + b)^2])):
x = a+b y = (a+b)**2
Можно использовать generate::optimize
функция прежде, чем преобразовать ваше выражение MuPAD в код Фортран. Например, эта функция может сократить количество операций путем нахождения общих подвыражений.
print(Unquoted, generate::fortran( generate::optimize([x = a + b, y = (a + b)^2]) )):
x = a+b y = x**2
По умолчанию, generate::fortran
функция может предупреждения о проблемах.
print(Unquoted, generate::fortran(gamma(x)))
Warning: Function 'gamma' requires a Fortran2008 compiler.
t0 = gamma(x)
Предупреждения помогают идентифицировать потенциальные проблемы в конвертированном коде. Чтобы отключить предупреждения, используйте NoWarning
опция.
print(Unquoted, generate::fortran(gamma(x), NoWarning))
t0 = gamma(x)
Если предупреждение указывает, что требуемый компилятор является или Fortran90 или Fortran95, то можно подавить предупреждение путем определения правильной версии компилятора с помощью Version
. Например, ceiling
функция требует Fortran90 вместо Fortran77 по умолчанию.
generate::fortran(ceil(x))
Warning: Function 'ceiling' requires a Fortran90 compiler.
Задайте Version
как Fortran90
. generate::fortran
функция не выдает предупреждение.
generate::fortran(ceil(x), Version = "Fortran90")
По умолчанию, generate::fortran
функционируйте использует целевую версию Фортрана Fortran77
сгенерировать код. Задавать Fortran90
или Fortran95
как целевая версия, используйте Version
опция.
Сгенерируйте выход для компилятора Fortran90 путем определения Version
опция как Fortran90
.
f := expand((x+1)^20): fcode90 := generate::fortran(f, Version = "Fortran90"): print(Unquoted, fcode90)
t0 = x*2.0D+1+x**2*1.9D+2+x**3*1.14D+3+x**4*4.845D+3+x**5*1.5504D+& &4+x**6*3.876D+4+x**7*7.752D+4+x**8*1.2597D+5+x**9*1.6796D+5+x**10*& &1.84756D+5+x**11*1.6796D+5+x**12*1.2597D+5+x**13*7.752D+4+x**14*3.& &876D+4+x**15*1.5504D+4+x**16*4.845D+3+x**17*1.14D+3+x**18*1.9D+2+x& &**19*2.0D+1+x**20+1.0D0
Форматирование кода для многострочных операторов в Fortran90
отличается от форматирования в цели по умолчанию Fortran77
.
|
Выражение, уравнение, список уравнений или матрица |
|
Отключить предупреждения. |
|
Задайте версию компилятора Фортрана. Версией по умолчанию является |
generate::fortran
возвращает код Фортран строки, содержащей.