Fortran Coder

查看: 8170|回复: 3
打印 上一主题 下一主题

[求助] 如图所示,就卡在下面

[复制链接]

7

帖子

3

主题

0

精华

入门

F 币
52 元
贡献
27 点
跳转到指定楼层
楼主
发表于 2015-9-23 11:58:57 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
两个问题:1如何实现上面的函数,用数组??还是??
2取到最大值后,如何让其x4的数值等于最大的那个数值?
谢谢

Z]1}Z`B1N[QNVWJPBEEY[Y4.png (6.87 KB, 下载次数: 216)

如图

如图
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

716

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
624 元
贡献
319 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

沙发
发表于 2015-9-23 12:53:28 | 只看该作者
你是想做符号运算,而不是数值运算吧

490

帖子

4

主题

0

精华

大宗师

F 币
3298 元
贡献
1948 点

水王勋章元老勋章热心勋章

板凳
发表于 2015-9-23 14:08:28 | 只看该作者
楚香饭 发表于 2015-9-23 12:53
你是想做符号运算,而不是数值运算吧

感觉像是二元函数求极值的问题?搞不好有理论解或者套用现成的库或软件

7

帖子

3

主题

0

精华

入门

F 币
52 元
贡献
27 点
地板
 楼主| 发表于 2015-9-24 20:42:59 | 只看该作者
楚香饭 发表于 2015-9-23 12:53
你是想做符号运算,而不是数值运算吧

[Fortran] 纯文本查看 复制代码
program main
    implicit none
    real x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15,x16,f1,f2,f3,f4,f5,f6,f7,f8,a,m,b,c,i
    integer x(1:6)
    print*,'请输入x1,x2,x3,x4,x5,x6,b:'
    read*,b
    do i=1,6
        read*,x(i)
    f1=x1-x2+2.0*x1*x1+2.0*x1*x2+x2*x2
    f2=x3-x4+2.0*x3*x3+2.0*x3*x4+x4*x4
    f3=x5-x6+2.0*x5*x5+2.0*x5*x6+x6*x6
    f4=max(f1,f2,f3)
    if (f4==f1) then
        x7=x1
        x8=x2
        x11=(x3+x5)/2.0
    x12=(x4+x6)/2.0
    else if (f4==f2)then
        x7=x3
        x8=x4
        x11=(x1+x5)/2.0
    x12=(x2+x6)/2.0
    else
        x7=x5
        x8=x6
        x11=(x3+x1)/2.0
    x12=(x4+x2)/2.0
    end if
    f5=min(f1,f2,f3)
    if (f5==f1) then
        x9=x1
        x10=x2
    else if (f5==f2) then
        x9=x3
        x10=x4
    else
        x9=x5
        x10=x6
    end if
    f6=x11-x12+2.0*x11*x12+2.0*x11*x11+x12*x12
    x13=2.0*x11-x7
    x14=2.0*x12-x8
    f7=x13-x14+2.0*x13*x13+2.0*x13*x14+x14*x14
    if (f7<f6) then
        x15=2.0*x13-x11
        x16=2.0*x14-x12
    else
        x15=0.5*x7+0.5*x11
        x16=0.5*x8+0.5*x12
    end if
        f8=x15-x16+2.0*x15*x15+2.0*x15*x16+x16*x16
        if (f8<f5) then
        x1=x1
        x2=x2
        x3=x15
        x4=x16 
        x5=x5
        x6=x6
        else 
            x1=x1
            x2=x2
            x3=x13
            x4=x14
            x5=x5
            x6=x6
        end if
        if (f8>f5.and.f8<f4) then
            x1=x1
            x2=x2
            x3=x3
            x4=x4
            x5=x15
            x6=x16
            end if
        m=(f1-f6)**2/3.0+(f8-f6)**2/3.0+(f3-f6)**2/3.0
        a=sqrt(m)
        if (a<b) exit
        end do
        print*,a
        end

这个是今天调整的一下,但是这个想循环请问,如何调整
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-6-29 16:10

Powered by Tencent X3.4

© 2013-2024 Tencent

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