

以下のプログラムで出力された結果を1行の行列として出力したいと考えています。  
`niter`であれば、`[1,2,3,4,5,6,7....19,20]`のような行列で  
`rnorm`であれば、`[1.2340014751660304,0.9402715810329509...,1.0]`のような行列です。  
宜しくお願い致します。

[code]

    import math as ma
    
    d     = 2500
    x     = 2500  
    area  = 100   
    e     = 5e5   
    f     = 0     
    resid = 0     
    nincr = 1      
    fincr = 1.5e7  
    cnorm = 1e-20  
    miter = 20     
    
    lzero = ma.sqrt(x**2 + d**2)                 
    vol   = area*lzero                          
    stiff = (area/lzero)*e*(x/lzero)*(x/lzero)   
    for incrm in range(1,nincr+1):
        f     = f + fincr                     
        resid = resid - fincr                 
    
    rnorm = cnorm*2                             
    niter = 0
    while ((rnorm > cnorm) and (niter < miter)):
        niter = niter+1
        u    = resid/stiff
        x    = x+u
        l    = ma.sqrt(x*x + d*d)
        area = vol/l
        stress = e*ma.log(l/lzero)
        t      = stress*area*x/l
        resid  = t-f
        rnorm  = abs(resid/f)
        stiff = (area/l)*(e-2*stress)*(x/l)*(x/l) + (stress*area/l)
    
        print(niter)
        print(rnorm)
    
[/code]


CC BY-SA 3.0
2017-11-25T17:23:31.740
39841
2017-11-25T17:59:54.707
2017-11-25T17:28:39.437
3060
26328
question
python python3
一つの変数に入った複数の値を、1行の行列としてまとめたい


とりあえず動くコードだとこんな感じです。`rnorm[-1]`は`rnorm`の一番最後の要素を取り出します。変更した後半だけ書いておきます。

[code]

    rnorm = [cnorm*2]                             
    niter = [0]
    while ((rnorm[-1] > cnorm) and (niter[-1] < miter)):
        niter.append(niter[-1]+1)
        u    = resid/stiff
        x    = x+u
        l    = ma.sqrt(x*x + d*d)
        area = vol/l
        stress = e*ma.log(l/lzero)
        t      = stress*area*x/l
        resid  = t-f
        rnorm.append(abs(resid/f))
        stiff = (area/l)*(e-2*stress)*(x/l)*(x/l) + (stress*area/l)
    
    print(niter)
    print(rnorm)
    
[/code]


CC BY-SA 3.0
2017-11-25T17:59:54.707
39842
2017-11-25T17:59:54.707
26311
39841
answer