24小时热门版块排行榜    

查看: 696  |  回复: 14
当前主题已经存档。
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

hym5701

木虫 (小有名气)

[交流] [求助]再求解下面的线性方程组fortran程序

已知u,v,w,s,d,e怎么求a,b
sigma(an*un+bn*vn)=dn
sigma(an*wn+bn*sn)=en
不知道怎么粘贴公式,就只能像上面那样写了,sigma是求和符号,n是下标,从0到无穷大。测试通过15个金币送上,谢谢。
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

728728

木虫 (正式写手)

★ ★ ★ ★ ★ ★ ★ ★
hym5701(金币+5,VIP+0):谢谢你的解释,现在我假设右边dn和en是常数的话,能提供解这样的程序吗,我对fortran不是很熟悉,以前学过一点点,这个问题是我同事给我的,他说一定要用fortran解,没办法。你说可以改下,可以帮我改下吗。谢谢
lei0736(金币+3,VIP+0):谢谢
我没有现成的程序。
如果n是一个较大的数的话,假设它的上限是N,那么方程租右侧应该是N而不是n,这样就是一个二元线性方程组。如果我这么理解对的话,那直接先算出a,b的系数(un,vn之类的直接求和),直接用消去法就可以了。
如果右侧确实是n的话,那么就是2N维线性方程组,但自变量只有2个,成了超定方程,这个不能用解方程的方法求解了,只能用最小二乘法或者曲线拟合的方法了。这些算法在Fortran算法集里面都有,稍加改动就可以用,你在论坛上就能找到算法集。

这是我的理解,不知道理解对了没有
4楼2008-12-25 15:50:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 15 个回答

728728

木虫 (正式写手)


coldwind042(金币+1,VIP+0):谢谢关注!
“n是下标,从0到无穷大...”,你说的不是代数方程,是积分方程吧?无穷大的话,成了无穷维线性方程组了,怎么解啊
2楼2008-12-24 17:23:32
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hym5701

木虫 (小有名气)

我说的无穷大是指n是很大的一个整数,不是无穷大也没关系,现在就假设n=100好了,你知道解这个方程组吗,知道的话,能共享下你的程序吗谢谢
3楼2008-12-24 19:51:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

728728

木虫 (正式写手)

★ ★ ★ ★ ★ ★ ★
coldwind042(金币+2,VIP+0):非常感谢!
lei0736(金币+5,VIP+0):谢谢
这么说的话就是第一种理解?那就简单了,程序如下d*MAXN就是dn,常数,以此类推。MaxN是N的上限。               
Integer        N,MaxN
Real U,V,W,S,D,E,a,b
Real un,vn,wn,sn
Real uu,vv,ww,ss,NN,deno

Read (*,*) MAXN,U,V,W,S,D,E
      un = 0
      vn = 0
        wn = 0
        sn = 0
        Do N = 1,MAXN
            NN = N*N
            un = un + U*NN
                vn = vn + V*NN
                wn = wn + W*NN
                sn = sn + S*NN
        End do
        deno = un*sn - wn*vn
        If (abs(deno) >= 0.000001 ) then
                a = (sn*D*MAXN - vn*E*MAXN) / deno
                b = (D*MAXN - un*a) / vn
                write(*,*) "a = ",a," b = ",b
        Else
            write(*,*) "please check the input data!"
        End if

        End
5楼2008-12-25 18:36:02
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见