Fortran Coder

标题: 如何使自变量指数增长 [打印本页]

作者: likm1110    时间: 2015-5-31 15:32
标题: 如何使自变量指数增长
本帖最后由 likm1110 于 2015-5-31 19:57 编辑

如题。如果我想算一个函数比如y=x,一般让设置一个步长bin让x等间距增长。比如这样
[Fortran] 纯文本查看 复制代码
x = 0.

bin = 0.1

Do i=1,30

  y = x

  x = x+bin

Enddo

如果我想让程序中的步长bin以指数形式增长,也就是说x的增长不再是等间距,有什么好办法吗?
作者: li913    时间: 2015-5-31 20:22
[Fortran] 纯文本查看 复制代码
x = 0.

bin = 0.1

Do i=1,30

  y = dishu**x

  x = x+bin

Enddo

作者: fcode    时间: 2015-5-31 20:32
[Fortran] 纯文本查看 复制代码
x = 0.
bin = 0.1
Do i=1,30
  y = dishu**x
  x = x+y
Enddo

作者: likm1110    时间: 2015-6-1 08:40
li913 发表于 2015-5-31 20:22
[mw_shl_code=fortran,true]x = 0.

bin = 0.1

dishu是?
作者: fcode    时间: 2015-6-1 08:43
底数
作者: likm1110    时间: 2015-6-1 09:23
fcode 发表于 2015-6-1 08:43
底数

恩,大概明白了,只是再问问,这个方法的话一开始会增长的很快,如果我想一开始就缓慢增加呢?
作者: fcode    时间: 2015-6-1 09:37
那你需要自己设计一个合适的函数。
作者: likm1110    时间: 2015-6-1 11:32
fcode 发表于 2015-6-1 09:37
那你需要自己设计一个合适的函数。

soga,我多试试吧~谢了!
作者: likm1110    时间: 2015-6-3 19:22
本帖最后由 likm1110 于 2015-6-3 19:25 编辑

最后用了这样的方法。
[Fortran] 纯文本查看 复制代码
   xmin = 1.d-5
  xmax = 4.0d0
  nbin = 40
  xbin = log(xmax/xmin)/nbin
  Do i=1,nbin
    x = xmin*exp(i*xbin)
    y = x
  Enddo

可以比较不错的在x小的时候实现慢增长,x大的时候增长则较快。




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