Fortran Coder

查看: 4582|回复: 4

[通用算法] 还是找不出错误,这是用秦九韶算法求多项式解简单程序

[复制链接]

15

帖子

6

主题

0

精华

入门

F 币
73 元
贡献
45 点
发表于 2016-4-6 22:46:15 | 显示全部楼层 |阅读模式
[Fortran] 纯文本查看 复制代码
program mytp16
implicit none
integer n
double precision x,poly
double precision,allocatable::cf(:),npoly(:)
write(6,*)'input the nombre n'
read(5,*)n
write(6,*)'input the x'
read(5,*)x
allocate(cf(0:n),npoly(n))
cf=poly(n,npoly,cf,x)
npoly=poly(n,npoly,cf,x)
write(6,'("npoly(",i3,")=",d15.8)')n,npoly(n)
end program

double precision function poly(n,npoly,cf,x)
implicit none
integer i,n
double precision cf(0:n),npoly(0:n),x
open(15,file='the coefficient of npoly.txt')
do i=0,n
cf(i)=2.d0*i+1
write(15,*) cf(i)
end do
close(15)
open(15,file='the coefficient of npoly.txt')
do i=0,n
read(15,*) cf(i)
write(6,'("cf(",i3,")=",d15.8)')i,cf(i)
end do
close(15)
npoly(0)=cf(n)
npoly(1)=cf(n)*x+cf(n-1)
do i=2,n
npoly(i)=npoly(i-1)*x+cf(n-i)
end do
poly=npoly(n)
end function poly
!  --------------------------------------------------
!  Silverfrost FTN95 for Microsoft Visual Studio
!  Free Format FTN95 Source File
!  --------------------------------------------------



1948

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1298 元
贡献
547 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

发表于 2016-4-7 08:32:13 | 显示全部楼层
1.请描述你遇到的问题
2.屏幕输入输出,请直接用 * ,而不要用 5 和 6!!!语法并没有规定 5 和 6 的具体含义。
3.你为什么要写入文件再读进来?

15

帖子

6

主题

0

精华

入门

F 币
73 元
贡献
45 点
 楼主| 发表于 2016-4-8 01:55:50 | 显示全部楼层
我要用秦九韶算法计算多项式,然后在没有用函数时,运行的是正常的,但是把代码专程函数后总是不出结果,我的作业老师要求这样的,先读入再用

1948

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1298 元
贡献
547 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

发表于 2016-4-8 09:12:59 | 显示全部楼层
我让你描述你的问题,而不是描述你的需求。我已经知道你要应用秦九昭算法。
我需要知道的是,你遇到的什么问题?是编译错误?运行错误?还是结果不对?如果遇到错误,请给出错误的现象描述或错误提示。这些都是求助的基本信息。

关于你的代码,文件读写为什么要放在函数里呢?多次调用就会多次写入文件,再读文件。你不觉得浪费吗?还有为什么 poly 要调用两次?
poly 已经是单变量的结果了,就不需要再用一个数组来接收了。

以下是我的修改版,简化了很多东西。

[Fortran] 纯文本查看 复制代码
Program mytp16
  implicit none
  integer n , i
  Real(Kind=8) :: x , y
  Real(Kind=8) , allocatable::cf(:)
  write(*,*)'input the nombre n'
  read(*,*)n
  write(*,*)'input the x'
  read(*,*)x
  allocate( cf(0:n) )
  open(15,file='the coefficient of npoly.txt')
  Do i=0,n
    cf(i) = 2.d0 * i + 1.d0
    write(15,*) cf(i)
  End Do
  close(15)    
  y = poly ( cf , x )
  write(*,'("y=",es13.6)') y

contains

  Real(Kind=8) Function poly( cf , x ) result( y )
    integer i , n
    Real(Kind=8) :: cf(0:) , x
    n = size( cf ) - 1
    y = cf(n) * x + cf( n - 1 )
    Do i = 2 , n
      y = y * x + cf(n-i)
    End Do
  End Function poly

End Program mytp16

15

帖子

6

主题

0

精华

入门

F 币
73 元
贡献
45 点
 楼主| 发表于 2016-4-8 18:20:14 | 显示全部楼层
版主太好了,太感谢了!
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-3-29 00:03

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表