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 возвращает код Фортран строки, содержащей.