24小时热门版块排行榜    

查看: 3673  |  回复: 2
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

weivichen

铁虫 (初入文坛)

[求助] sin函数的傅里叶变换

我想做sin函数的傅里叶变换 可是程序没有error,但是运行就说那个exe文件停止工作,程序如下,好像很多问题的样子,新手求指教!
program main
use textgraphlib
implicit none
real,parameter::endx=3.1,startx=0.0,xinc=0.1
integer,parameter::maxx=32,maxy=20
real ::x,px=0.0,py=0.0
integer i,num,fx,fy,xx
real,allocatable::datax(,datay(
x=startx

do i=1,maxx
x=px
py=sin(x)
datax(i)=px
datay(i)=py
px=px+xinc
end do

call four1(datay,16,1)
call setscreen(maxx,maxy)


  do xx=1,maxx
    fy=datay(xx)
    call putchar(xx,fy)
  end do
  
  call updatescreen()
   stop
   end program

subroutine four1(data1,nn,isign)
integer isign,nn
real data1(2*nn)
integer i,istep,j,m,mmax,n
real tempi,tempr
double precision theta,wi,wpi,wpr,wr,wtemp
n=2*nn
j=1
do  i=1,n,2
    if(j.gt.i)then
        tempr=data1(j)
        tempi=data1(j+1)
        data1(j)=data1(i)
        data1(j+1)=data1(i+1)
        data1(i)=tempr
        data1(i+1)=tempi
        end if
        m=n/2
1        if((m.ge.2).and.(j.gt.m)) then
           j=j-m
           m=m/2
           goto 1
           end if
           j=j+m
           end do
           mmax=2
2    if(n.gt.mmax) then
      istep=2*mmax
          theta=6.28318530717959d0/(isign*mmax)
          wpr=-2.d0*sin(0.5d0*theta)**2
          wpi=sin(theta)
          wr=1.d0
          wi=0.d0
          do  m=1,mmax,2
          do  i=m,n,istep
              j=i+mmax
                  tempr=sngl(wr)*data1(j)-sngl(wi)*data1(j+1)
                  tempi=sngl(wr)*data1(j+1)+sngl(wi)*data1(j)
                  data1(j)=data1(i)-tempr
                  data1(j+1)=data1(i+1)-tempi
                  data1(i)=data1(i)+tempr
                  data1(i+1)=data1(i+1)+tempi
                  end do
                  wtemp=wr
                  wr=wr*wpr-wi*wpi+wr
                  wi=wi*wpr+wtemp*wpi+wi
                  end do
                  mmax=istep
  goto 2
  end if
  return
  end
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

weivichen

铁虫 (初入文坛)

引用回帖:
2楼: Originally posted by virtualzx at 2012-11-03 05:03:53
没看你的程序,不过sin的傅立叶变换直接是两个delta函数之差,为啥要写代码算呢

如果你计算的话在delta函数的原点上都是无穷大,恐怕反而会出问题。

sin函数是来做实验用的,然后取一小段出来看看对不对,那应该是怎么写呢
3楼2012-11-03 18:45:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 3 个回答

virtualzx

木虫 (著名写手)

【答案】应助回帖

感谢参与,应助指数 +1
没看你的程序,不过sin的傅立叶变换直接是两个delta函数之差,为啥要写代码算呢

如果你计算的话在delta函数的原点上都是无穷大,恐怕反而会出问题。
2楼2012-11-03 05:03:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 求调剂院校信息 +4 CX 330 2026-03-21 4/200 2026-03-21 23:48 by ms629
[考研] 328求调剂,英语六级551,有科研经历 +5 生物工程调剂 2026-03-17 9/450 2026-03-21 23:32 by zhujy1982
[考研] 材料求调剂 +5 @taotao 2026-03-21 5/250 2026-03-21 20:55 by lbsjt
[考研] 302求调剂 +12 呼呼呼。。。。 2026-03-17 12/600 2026-03-21 17:29 by ColorlessPI
[考研] 0805材料320求调剂 +3 深海物语 2026-03-20 3/150 2026-03-21 15:46 by 无际的草原
[考研] 279求调剂 +5 红衣隐官 2026-03-21 5/250 2026-03-21 14:59 by lature00
[考研] 0856材料专硕353求调剂 +3 NIFFFfff 2026-03-20 3/150 2026-03-21 10:23 by luoyongfeng
[考研] 306求调剂 +4 chuanzhu川烛 2026-03-18 4/200 2026-03-21 08:25 by laoshidan
[考研] 316求调剂 +6 梁茜雯 2026-03-19 6/300 2026-03-21 06:32 by Ecowxq666!
[考研] 299求调剂 +6 △小透明* 2026-03-17 6/300 2026-03-21 02:42 by JourneyLucky
[考研] 324分 085600材料化工求调剂 +4 llllkkkhh 2026-03-18 4/200 2026-03-21 01:24 by JourneyLucky
[考研] 321求调剂 +9 何润采123 2026-03-18 11/550 2026-03-20 23:19 by JourneyLucky
[考研] 330求调剂 +4 小材化本科 2026-03-18 4/200 2026-03-20 23:13 by JourneyLucky
[考研] 329求调剂 +9 想上学吖吖 2026-03-19 9/450 2026-03-20 22:01 by luoyongfeng
[考研] 353求调剂 +3 拉钩不许变 2026-03-20 3/150 2026-03-20 19:56 by JourneyLucky
[考研] 材料与化工求调剂 +7 为学666 2026-03-16 7/350 2026-03-19 14:48 by 尽舜尧1
[考研] 286求调剂 +6 lemonzzn 2026-03-16 10/500 2026-03-19 14:31 by lemonzzn
[考研] [导师推荐]西南科技大学国防/材料导师推荐 +3 尖角小荷 2026-03-16 6/300 2026-03-16 23:21 by 尖角小荷
[考研] 东南大学364求调剂 +5 JasonYuiui 2026-03-15 5/250 2026-03-16 21:28 by 木瓜膏
[考研] 0856专硕279求调剂 +5 加油加油!? 2026-03-15 5/250 2026-03-15 11:58 by 2020015
信息提示
请填处理意见