二分法\追赶法

program erfenfa !
implicit none
real(8)::a,b,c,ex,x
print,"Please input:a,b,ex(精度)"
read
,a,b,ex
call erfen(a,b,ex,x)
print*,x
end program erfenfa

subroutine erfen(a,b,ex,x)
implicit none
real(8)::a,b,c,ex,x,fa,fb,fc,f
do while(dabs(b-a)>=ex)
fa=f(a)
fb=f(b)
c=(a+b)/2
fc=f(c)
if(fafc>0)then
a=c
end if
if(fb
fc>0)then
b=c
end if
if(fc==0)exit
end do
x=(a+b)/2
end subroutine erfen

function f(x) result(x_result)
implicit none
real(8)::x,x_result
x_result=xxx-x-1 !所需要进行二分法的函数
end function f

!Please input:a,b,ex(精度)

===========================================追赶法============
program zhuigan !
implicit none
real(8),dimension(:),allocatable::a,b,c,x,f
integer::n
print,"输入维度n"
read(
,)n
allocate(a(n-1),b(n),c(n-1),f(n),x(n))
print
,"输入nn的数组,存储A的三条对角元素:"
print
,"一维矩阵a"
read(,)a
print,"一维矩阵b"
read(
,)b
print
,"一维矩阵c"
read(,)c
print,"等式右侧结果f(一维矩阵)"
read(
,),f
call zhuiganfa(n,a,b,c,f,x)
print
,x
end program zhuigan
!****************************************************
subroutine zhuiganfa(n,a,b,c,f,x)
implicit none
integer::i,j,k,m,n
real(8),dimension(n)::a,b,c,x,beta,f,y
beta(1)=c(1)/b(1)
do i=2,n-1
beta(i)=c(i)/(b(i)-a(i-1)beta(i-1))
end do
y(1)=f(1)/b(1)
do i=2,n
y(i)=(f(i)-a(i-1)
y(i-1))/(b(i)-a(i-1)beta(i-1))
end do
x(n)=y(n)
do i=n-1,1,-1
x(i)=y(i)-beta(i)
x(i+1)
end do
end subroutine zhuiganfa

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 上一篇我们总结了链表题目的常见题型和套路,本章我们再来看看二分。实话实说,二分的题目通常来说都比链表题目复杂一些,...
    suoga阅读 1,299评论 0 0
  • 前言 二分查找算法作为一种常见的查找方法,将原本是线性时间提升到了对数时间范围,大大缩短了搜索时间,具有很大的应用...
    桑榆非晚95阅读 931评论 0 0
  • 难度:★★★☆☆类型:图方法:深度优先搜索 力扣链接请移步本题传送门[https://leetcode-cn.co...
    玖月晴阅读 251评论 0 0
  • 二分法常见场景 在一个有序数组中,找某个数是否存在 在一个有序数组中,找>=某个数最左侧的位置 在一个有序数组中,...
    鹰艺阅读 284评论 0 1
  • 1、开花 算法分析 由于开花的同学的编号按文学优秀奖的同学a[]优先,把体育优先奖的同学b[]全部扔去set集合中...
    9de394c10b73阅读 159评论 0 0