Fortran Coder

标题: 数据文件里的参数处理,符号运算 [打印本页]

作者: gengyan123456    时间: 2014-7-14 21:22
标题: 数据文件里的参数处理,符号运算
请教一个问题,就是:如何把FORTRAN数据文件中的数字变为参数读入程序中,然后在输出的文件中含有这个参数?

作者: 楚香饭    时间: 2014-7-14 21:38
数字就是数字,可以直接读取。参数这个词语很虚,什么数据都可以是参数。

open后read即可。如果不熟悉,可以看彭国伦叔叔的书
作者: gengyan123456    时间: 2014-7-14 22:21
chuxf 发表于 2014-7-14 21:38
数字就是数字,可以直接读取。参数这个词语很虚,什么数据都可以是参数。

open后read即可。如果不熟悉,可 ...

不是这个意思啊,我的意思是把原来数据文件里的某个数变为字母,如1变为a,读入原文件后让a像一个数一样参与运算,使输出的结果里含有a这个参数,这样我就可以根据结果优化a这个参数了
作者: 楚香饭    时间: 2014-7-14 22:36
表示听不懂。

1 怎么变成 a ?为什么不是变为 b ?变换的依据是什么?

a 如何参与计算?字母怎么计算?
作者: fcode    时间: 2014-7-14 22:50
楼主的意思是,做符号计算,而不是数值计算?那么 fortran 可能不适合你,你可以了解一下符号运算相关的语言,比如Mathematica
作者: gengyan123456    时间: 2014-7-15 09:48
chuxf 发表于 2014-7-14 22:36
表示听不懂。

1 怎么变成 a ?为什么不是变为 b ?变换的依据是什么?

就是1那个位置原来是个参数,现在这个参数我不想取1了,想得到他的最优值,所以我把他变为字母参与计算,计算得到结果之后,再对这个含有a的结果进行优化,从而求出a的最优值
作者: gengyan123456    时间: 2014-7-15 10:02
fcode 发表于 2014-7-14 22:50
楼主的意思是,做符号计算,而不是数值计算?那么 fortran 可能不适合你,你可以了解一下符号运算相关的语 ...

你确定Fortran就不能实现了吗?那岂不是很悲剧,如果用其他的编写的话不是很麻烦?因为我现在已经有Fortran程序了啊
作者: fcode    时间: 2014-7-15 10:21
gengyan123456 发表于 2014-7-15 10:02
你确定Fortran就不能实现了吗?那岂不是很悲剧,如果用其他的编写的话不是很麻烦?因为我现在已经有Fortr ...

Fortran 自古就是数值运算。

做符号运算不是不可能,而是你需要花费很多很多时间,自己实现符号运算。

给你两个建议:
1.使用其他本身为符号运算而开发的语言。
2.使用多个 a 值,分别进行数值计算,最终得到若干组数据,在此基础上优化。
作者: gengyan123456    时间: 2014-7-15 10:51
fcode 发表于 2014-7-15 10:21
Fortran 自古就是数值运算。

做符号运算不是不可能,而是你需要花费很多很多时间,自己实现符号运算。

哦,谢谢啊,对于你给的第二个建议既然都自己给出a值了,最后比较结果就能看出哪个a值好了,就不用优化了啊,所以我认为不可行,对于第一个建义,你知道MATLAB吗?它能做吧?
作者: fcode    时间: 2014-7-15 10:57
我对 matlab 不是很熟悉,也只是做数值计算。

不过我百度了一下,貌似不少关于matlab做符号运算的文章。想来应该可以。
作者: gengyan123456    时间: 2014-7-15 11:36
fcode 发表于 2014-7-15 10:57
我对 matlab 不是很熟悉,也只是做数值计算。

不过我百度了一下,貌似不少关于matlab做符号运算的文章。想 ...

哦,好,谢谢啦
作者: 安靖    时间: 2014-7-15 11:40
楼主的意思似乎不是指符号运算,而是把原来已知数值大小的确定参数,修改为一个未知大小的参数,通过程序,来获得参数的最优值。

作者: vvt    时间: 2014-7-15 11:46
比如以前:

数据文件是 1 读入 a
经过函数 f(a) 计算后结果是 2

楼主希望这样:
数据文件是 a 读入
经过函数计算后结果是 a + 1

这难道不是符号运算?
作者: 岸边的鱼    时间: 2014-7-15 21:42
表示matlab必须可以,虽然我不会,但是我见过的,书上有专门一章讲符号运算,maple也可以进行符号运算,以前matlab的一个模块就是maple的,现在貌似不再合作了。matlab有了自己的模块,但是matlab和maple一定都是可以符号运算的。
作者: gengyan123456    时间: 2014-7-16 11:37
vvt 发表于 2014-7-15 11:46
比如以前:

数据文件是 1 读入 a

恩,是符号运算
作者: gengyan123456    时间: 2014-7-16 11:38
岸边的鱼 发表于 2014-7-15 21:42
表示matlab必须可以,虽然我不会,但是我见过的,书上有专门一章讲符号运算,maple也可以进行符号运算,以 ...

哦,好的,知道了,谢谢啊
作者: gengyan123456    时间: 2014-7-16 11:41
安靖 发表于 2014-7-15 11:40
楼主的意思似乎不是指符号运算,而是把原来已知数值大小的确定参数,修改为一个未知大小的参数,通过程序, ...

数据文件是 a 读入
经过函数计算后结果是 a + 1,应该是符号运算吧,我现在正准备用MATLAB改一下,不过貌似工作量很大,正在努力尝试





欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2