[PR] SSL
teacup. ] [ 無料掲示板 ] [ プレミアム掲示板 ] [ みんなの掲示板 ] [ 無料ブログ ] [ チャット ]

 投稿者
  題名
  内容 入力補助画像・ファイル<IMG>タグが利用可能です。(詳細)
    
  ファイル1
  ファイル2
  ファイル3
アップロード可能な形式(各1MB以内):
画像(gif,png,jpg,bmp) 音楽(mmf,mld) 動画(amc,3gp,3g2)

 URL
[ ケータイで使う ] [ BBSティッカー ] [ 書込み通知 ] [ teacup.コミュニティ | 画像 ] [ 検索 ]

投稿募集! スレッド一覧

  1. 人の色覚の数理(13)
  2. Amusement_Program(3)
  3. 「十進BASIC第2掲示板」投稿記事リスト(16)
  4. 複数ページ長編プログラム(新規投稿)(16)
  5. 「十進BASIC掲示板過去ログ」インデックス(トピック)(15)
  6. 「十進BASIC掲示板過去ログ」インデックス(ツリー)(91)
  7. スレッドが使えます(2)
スレッド一覧(全7)  他のスレッドを探す  スレッド作成

*掲示板をお持ちでない方へ、まずは掲示板を作成しましょう。無料掲示板作成

全1515件の内、新着の記事から20件ずつ表示します。 1  2  3  4  5  6  7  8  9  10  |  《前のページ |  次のページ》 

Re: 質問です

 投稿者:南澤  投稿日:2012年 5月17日(木)18時33分46秒
返信・引用
  > No.1868[元記事へ]

山中和義さんへのお返事です。

ありがとうございます。
試してみて、もし分からなかったらまた質問させていただくかもしれません。
本当にありがとうございます!
 

Re: 質問です

 投稿者:山中和義  投稿日:2012年 5月17日(木)16時41分52秒
返信・引用
  > No.1867[元記事へ]

南澤さんへのお返事です。

> Sn:=n Σ i=1 1/i,

 100
S=Σ 1/i
 i=1
とすると、

110 LET S=0
120 FOR i=1 TO 100
130    LET S=S+(1/i)
140 NEXT i
150 PRINT S
160 END

となります。後は、同様です。
 

質問です

 投稿者:南澤  投稿日:2012年 5月17日(木)16時24分23秒
返信・引用
  十進BASICを勉強し始めたばかりの者なのですが、解説を見てもさっぱり分からないのでどなたか教えてください。
Sn:=n Σ i=1 1/i,
Tn:=n Σ i=1 1/i^2,
rn:=n Σ i=1 1/i^2+i
を計算するプログラムを作らねばならないのですが、私だけすっかり遅れを取ってしまい全く分かりません…。
自分でも試行錯誤しているのですが、どうしても分かりません。
よろしかったらどなたか解説等していただけないでしょうか…?
 

n次多項式f(x)の法pでの因数分解

 投稿者:山中和義  投稿日:2012年 5月16日(水)09時29分16秒
返信・引用 編集済
 
!n次多項式f(x)の法pでの因数分解

!例
!f(x)=x^4+x^3+x^2+x+1なら、
!f(x)=(x-1)^4 (mod 5)
!f(x)=(x-3)(x-4)(x-5)(x-9) (mod 11)

!考察
!通常、実数の範囲での因数分解を考えると、
!fは2次式とする。
! f(x)≡f(x) (mod p) fは既約
! f(x)≡g(x)h(x) (mod p)、g,hは1次式
!と因数分解される。
!
!fは3次式とする。
! f(x)≡f(x) (mod p) fは既約
! f(x)≡g(x)h(x) (mod p)、gは2次式、hは1次式
! f(x)≡g(x)h(x)s(x) (mod p)、g,h,sは1次式
!と因数分解される。
!
!fは4次式とする。
! f(x)≡f(x) (mod p) fは既約
! f(x)≡g(x)h(x) (mod p)、gは3次式、hは1次式
! f(x)≡g(x)h(x) (mod p)、g,hは2次式
! f(x)≡g(x)h(x)s(x) (mod p)、gは2次式、h,sは1次式
! f(x)≡g(x)h(x)s(x)t(x) (mod p)、g,h,s,tは1次式
!と因数分解される。
!
!fは5次式とする。5=1+4=2+3=(1+1)+3=1+2+2=1+(1+1)+2=1+(1+1)+(1+1)
!次数5を1,2,3,4の和で表せばよい。
!  :
!  :
!
!
!考察
!aが解なら、-(P-a)も解である。すなわち、x-a≡0 (mod p)またはx+(P-a)≡0 (mod p)


!参考サイト http://www.e.ics.nara-wu.ac.jp/~kako/teaching/ca2005/chap6.pdf


DEF f(x)=x^4+x^3+x^2+x+1 !x^4+9*x^2+2*x+42

DEF e(x)=x^3+a*x^2+b*x+c !3次式
DEF g(x)=x^2+a*x+b !2次式
DEF h(x)=x^2+c*x+d
DEF s(x)=x-a !1次式
DEF t(x)=x-b
DEF u(x)=x-c
DEF v(x)=x-d

LET p=11 !素数


!3次式×1次式
LET K=0 !個数
FOR a=0 TO p-1 !係数 ※剰余の範囲
   FOR b=0 TO p-1
      FOR c=0 TO p-1
         FOR d=0 TO p-1

            FOR x=0 TO p-1 !同じ値となるなら
               IF MOD(f(x) - e(x)*v(x) ,p)<>0 THEN EXIT FOR
            NEXT x
            IF x>p-1 THEN !因数分解される
               LET K=K+1

               PRINT "(x^3+";STR$(a);"x^2+";STR$(b);"x+";STR$(c);")"; !因数
               PRINT "(x-";STR$(d);")"

               PRINT "(x^3+";STR$(a);"x^2+";STR$(b);"x+";STR$(c);")"; !因数
               PRINT "(x+";STR$(p-d);")"
            END IF

         NEXT d
      NEXT c
   NEXT b
NEXT a
IF K=0 THEN PRINT "解なし"

PRINT


!2次式×2次式
LET K=0 !個数
FOR a=0 TO p-1 !係数 ※剰余の範囲、a≦c
   FOR b=0 TO p-1
      FOR c=a TO p-1
         FOR d=0 TO p-1

            FOR x=0 TO p-1 !同じ値となるなら
               IF MOD(f(x) - g(x)*h(x) ,p)<>0 THEN EXIT FOR
            NEXT x
            IF x>p-1 THEN !因数分解される
               LET K=K+1
               PRINT "(x^2+";STR$(a);"x+";STR$(b);")"; !因数
               PRINT "(x^2+";STR$(c);"x+";STR$(d);")"
            END IF

         NEXT d
      NEXT c
   NEXT b
NEXT a
IF K=0 THEN PRINT "解なし"

PRINT


!2次式×1次式×1次式
LET K=0 !個数
FOR a=0 TO p-1 !係数 ※剰余の範囲、c≦d
   FOR b=0 TO p-1
      FOR c=0 TO p-1
         FOR d=c TO p-1

            FOR x=0 TO p-1 !同じ値となるなら
               IF MOD(f(x) - g(x)*u(x)*v(x) ,p)<>0 THEN EXIT FOR
            NEXT x
            IF x>p-1 THEN !因数分解される
               LET K=K+1

               PRINT "(x^2+";STR$(a);"x+";STR$(b);")"; !因数
               PRINT "(x-";STR$(c);")(x-";STR$(d);")"

               PRINT "(x^2+";STR$(a);"x+";STR$(b);")"; !因数
               PRINT "(x+";STR$(p-d);")(x+";STR$(p-c);")"
            END IF

         NEXT d
      NEXT c
   NEXT b
NEXT a
IF K=0 THEN PRINT "解なし"

PRINT


!1次式×1次式×1次式×1次式
LET K=0 !個数
FOR a=0 TO p-1 !係数 ※剰余の範囲、a≦b≦c≦d
   FOR b=a TO p-1
      FOR c=b TO p-1
         FOR d=c TO p-1

            FOR x=0 TO p-1 !同じ値となるなら
               IF MOD(f(x) - s(x)*t(x)*u(x)*v(x) ,p)<>0 THEN EXIT FOR
            NEXT x
            IF x>p-1 THEN !因数分解される
               LET K=K+1

               PRINT "(x-";STR$(a);")(x-";STR$(b);")"; !因数
               PRINT "(x-";STR$(c);")(x-";STR$(d);")"

               PRINT "(x+";STR$(p-d);")(x+";STR$(p-c);")"; !因数
               PRINT "(x+";STR$(p-b);")(x+";STR$(p-a);")"
            END IF

         NEXT d
      NEXT c
   NEXT b
NEXT a
IF K=0 THEN PRINT "解なし"

END

 

y= SIN(x) の線積分

 投稿者:SECOND  投稿日:2012年 5月11日(金)00時30分29秒
返信・引用
  ! y=SIN(x) の線積分 L=∫√{1+(dy/dx)^2}dx =∫√(1+cos(x)^2)dx
!
! 解かないまま、その積分曲線を、ルンゲクッタ4で、描く。
!
!     L =∫√(1+cos(x)^2) dx
!  dL/dx=  √(1+cos(x)^2)
!-------------------------------
SET TEXT background "opaque"
SET COLOR MIX(15) .4,.4,.4

SUB Diff( dL,x)
   LET dL=SQR(1+COS(x)^2)         !dL: (dL/dx) ※この部分を、COS(x), 2*x などに換えると、
END SUB                           !               その積分 SIN(x), x^2 の曲線が、描ける。

SUB RungeKutta
   CALL Diff( dL1,x)
   CALL Diff( dL2,x+dx/2)
   CALL Diff( dL3,x+dx/2)
   CALL Diff( dL4,x+dx)
   LET  L=L+(dL1 +2*dL2 +2*dL3 +dL4)*dx/6
END SUB

SET WINDOW -2.3, 7, -2, 9
DRAW grid( PI/2, 1)
PLOT TEXT,AT 1.7, 8.5:"    L=∫√(1+cos(x)^2) dx"
PLOT TEXT,AT 1.7, 8.0:"dL/dx=  √(1+cos(x)^2)"
!----
LET L=0                           !出力初期値 (上下に平行移動。積分定数の調整)
LET dx=PI/(pixelx(PI)-pixelx(0))  !計算 間隔
FOR x=0 TO 2*PI STEP dx           !計算 範囲
   PLOT LINES: x,L;
   CALL RungeKutta
NEXT x

END
 

行列の積

 投稿者:永野護  投稿日:2012年 5月 9日(水)10時38分16秒
返信・引用
  島村様、丁寧な解説をありがとうございました。
大変助かりました。
 

Re: 行列の積

 投稿者:島村1243  投稿日:2012年 5月 9日(水)08時20分35秒
返信・引用
  > No.1862[元記事へ]

永野護さんへのお返事です。

> プログラムの話ではありませんがよろしくお願いします。
> 行列の積(高校で学習するような2行2列の行列Aと2行2列の行列B
> との積)というのはテンソル積なのでしょうか。それとも内積か外積
> なのでしょうか。

2行2列の正方行列はベクトルを表していない(ベクトルは、列ベクトルか行ベクトルのいずれかで表現する)ので、それら2個の正方行列AとBの積Cは(ベクトルの)内積・外積のいずれでもないと思います。

一方、共変1階反変1階のテンソルAと共変1階反変1階のテンソルBから、共変1階反変1階のテンソルCを得るテンソル積の計算法は、そのテンソルAとテンソルBを正方行列AとBで表して行列Aと行列Bの掛け算で得られる正方行列Cの成分計算法と同じになります。

したがって「正方行列の積はテンソル積」と言うよりは、「特定のテンソル積は行列の積で求めることも出来る」と言うのが適切の様です。この辺りについては下記サイト

 テンソルの概念 [物理のかぎしっぽ]
 http://hooktail.sub.jp/vectoranalysis/TensorConcept/

の中ほどに「テンソルの成分」という節が有り、その中の注[キ]にテンソルと行列の関係についての注意書きがあり参考になると思います。
 

行列の積

 投稿者:永野護  投稿日:2012年 5月 8日(火)11時12分11秒
返信・引用
  プログラムの話ではありませんがよろしくお願いします。
行列の積(高校で学習するような2行2列の行列Aと2行2列の行列B
との積)というのはテンソル積なのでしょうか。それとも内積か外積
なのでしょうか。




 

プログラマー入門

 投稿者:匿名  投稿日:2012年 4月24日(火)12時24分30秒
返信・引用
  http://1c-job.net
このサイトにはプログラマーとして必要だと思うことが載っています。
これをとっかかりにしてプログラムに興味が出てくること間違いないです。

http://1c-job.net

 

Re: 食塩水の混合

 投稿者:島村1243  投稿日:2012年 4月23日(月)10時49分11秒
返信・引用 編集済
  > No.1858[元記事へ]

エス・テーさんへのお返事です。

> 島村1243 さん、いろいろご指摘ありがとうございました。また、勉強してプログラムにも挑戦したいと思います。

山中さんの解法はm(X)=1と扱い、微係数(導関数)dX/dtを求めてからオイラー法で数値計算を行う、という数学的に正統な方法で、微分や微分方程式の数値解法をご存知の場合はこの方法を使用すべきでしょう。

一方、私の示したX(t+Δt)の計算式は微分やオイラー法という知識を使わない近似計算式ですが、m(X)=1として
 {X(t+Δt)-X(t)}/Δt
を展開してからΔtを無限小(ゼロ)にすれば山中さんの示された導関数と同じ式が得られます。

この問題においてm(X)=1と扱った場合の数学的厳密解は、山中さんがプログラム中のPRINT行に示されているように
 X(t)=7-4exp(-Qt/1000)
となるので、7%濃度食塩水を1000cc注入完了した時点での容器内濃度X[%]の厳密解は、上式に
 Qt=1000[cc]
を代入して得られる
X=7-4exp(-1)=5.528482235....
となるので、エステーさんが作られるプログラムが適切か否かを判断する数値として用いると良いと思います。

なお、私の示したプログラムでも、m(X)=1、Q=1、Δt=0.01とセットし計算実行すると、上記厳密解の小数点以下第5位迄一致する数値が得られます(Δt=0.05にすると少数点以下第3位まで一致に精度低下する)。
 

食塩水の混合

 投稿者:エス・テー  投稿日:2012年 4月23日(月)09時14分40秒
返信・引用
  山中先生、微分方程式作成の手順まで記述していただき、ありがとうございました。
これからもプログラム作成に挑戦してみたいと思います。よろしくお願い致します。
 

食塩水の混合

 投稿者:エス・テー  投稿日:2012年 4月23日(月)09時00分7秒
返信・引用
  島村1243 さん、いろいろご指摘ありがとうございました。また、勉強してプログラムにも挑戦したいと思います。  

Re: 食塩水の混合

 投稿者:山中和義  投稿日:2012年 4月22日(日)13時44分59秒
返信・引用 編集済
  > No.1855[元記事へ]

エステーさんへのお返事です。

> 食塩水の混合
>
> 1000ccの攪拌機付き容器に濃度3%の食塩水が満杯(1000cc)
> 入っています。いま、ここへ濃度7%の食塩水を徐々に注入
> していき、ちょうど1000cc注入したところで注入を止める。
> このとき、食塩水の濃度は何%になっているか。
>
> 注入した食塩水は瞬時に混合されて均質になり、注入された量に
> 等しい量は容器からあふれ出て、容器内は常に1000ccに保たれて
> いるものとする。

物理的、化学的な複雑な現象を避けるために、
 数理モデル
 ・比重は1[g/mL]とする
 ・1[cc]=1[mL](=1[g])とする
 ・飽和を考えない
 とする。
このような条件(大まかな考え方)があると思います。



> LET s=(d/100)*1000          ! 容器内の食塩の量
> LET t=(7/100)*h             ! 注入する食塩水中の食塩の量
> LET d=(s+t)/(1000+h)*100    ! 容器内の食塩水の濃度
>
> 結果
>   h=0.05 cc のとき     5.5270468 %

・『ΔXよりは、dX/dtの式を使う』

上記の現象を、
 (a) 濃度b[g/L]の食塩水PΔt[L]を加えて、よくかき混ぜる。
 (b) 次に食塩水をPΔt[L]捨てる。
 このことをΔtごとに繰り返す。
と考える。

時刻tにおける食塩水の濃度をX(t)[g/L]として、

(a)を行った段階では、
食塩量はX(t)V+(b/100)PΔt、水量はPΔtだけ増えるので、
食塩濃度は、X(t)から(X(t)V+(b/100)PΔt)/(V+PΔt)に変化する。

(b)を行った段階では、
食塩量は減るが濃度は変わらない。

よって、X(t+Δt)≒(X(t)V+(b/100)PΔt)/(V+PΔt)

これより、X(t)が満たす微分方程式をつくる。

X(0),X(Δt),X(2Δt),X(3Δt),…から、Δt→0として連続関数X(t)を得る。

X'(t)
=lim[Δt→0]{(X(t+Δt)-X(t))/Δt}
=lim[Δt→0]{X(t)( V/(V+PΔt) - 1 )/Δt + (b/100)P/(V+PΔt)}
=lim[Δt→0]{-X(t)P/(V+PΔt) + (b/100)P/(V+PΔt)}
=(-P/V)X(t) + (b/100)P/V
=(-X(t) + b/100)P/V

初期条件は、X(0)=a/100となる。



> ところで。私もプログラムをつくってみました。

t秒後の食塩の量をx[g]とする。
時間がtからt+Δtまで変化する間の食塩の増加は、Δx≒((B/100)*PΔt-(x/V)PΔtである。
両辺をΔtで割りΔt→0の極限を取って、微分方程式dx/dt=((B/100)V-x)P/Vを得る。
また、初期条件x(0)=(A/100)*V[g]である。

        ┌──
        │┌─
        ││
         ∬ P[g],B[%]を注入する
   │~~~~~~│
   │      │
 ┌─┘ V[g],X[%] │容器(最初にV[g],A[%] )
 │┌┐      │
 ││└──────┘
  ∬ P[g],X[%]を流出させる


LET A=3 !3%
LET B=7 !7%
LET V=1000 !1000g
LET P=1 !g/秒

LET M=10000 !0~10000gまで注入する

LET h=1 !Δt
LET ITER=M/P/h !繰り返し回数

SET WINDOW -2,INT(ITER/100), -1,(INT(B/10)+1)*10
DRAW grid(INT(ITER/100)/10,1) !目盛 [ITER/100]/10 秒ごと、1%ごと

!オイラー法(Euler)
DEF f(t,x)=(B/100*V-x)*P/V !常微分方程式x'(t)=f(x(t))

LET t=0 !t=0
LET x=A/100*V !x[0]

FOR i=0 TO ITER
   PRINT t; P*t; x/V*100; (A-B)*EXP((-P/V)*t)+B !時刻[秒]、注入量[g]、濃度[%]
   PLOT LINES: t/100,x/V*100; !折れ線で近似する

   LET x=x+h*f(t,x) !x[i]=x[i-1]+h*f'(t[i-1],x[i-1])
   LET t=t+h
NEXT i
PLOT LINES

END

 

Re: 食塩水の混合

 投稿者:島村1243  投稿日:2012年 4月21日(土)20時38分46秒
返信・引用 編集済
  エステーさんへのお返事です。

> ところで。私もプログラムをつくってみました。十進ベーシックを学び始めたばかりで、こういうプログラムでよいのかどうかもわからないのですが、とにかく見て頂きたいと思います。ご意見お聞かせ下さい。

エステーさん、こんにちわ。島村1243です。
エステーさんのプログラム読ませて頂きました。
私はプログラムテクニックは無いので、物理的な観点での意見を書きます。

(疑問点1)
1000という数字は容器の体積[cc]を、記号hは注入溶液の体積[cc]を表しているようですが、溶液の質量パーセント濃度X[%]は
  X=溶液中の塩の重量/溶液全体の重量*100
で定義されている。したがって1000ccに濃度%/100を乗じても塩の重量を求めることは出来ない。
求める為にはその濃度を持つ溶液の比重[g/cc]値が必要。

エステーさんは溶液1[cc]は重量1[g]と捉えているようですが、そうだとすると、溶液の濃度に関わらず溶液の比重は常に1[g/cc]になってしまい、一般に食塩水は濃度が増加するに従い比重が1[g/cc]より大きくなる事実に反する。

(疑問点2)
式「d=(s+t)/(1000+h)*100」の分母は、容器の体積が(1000+h)に増大して攪拌していることを意味するから、エステーさんの命題主旨(容器は常に1000ccの体積を保ち攪拌する)に反する。

以上参考になれば幸いです。
なお蛇足ですが、私は「先生」の職ではないので「さん」付けで良いです。
 

食塩水の混合

 投稿者:エステー  投稿日:2012年 4月21日(土)18時08分17秒
返信・引用
  山中先生、島村1243先生 丁寧な説明とプログラム 本当に有難うございました。濃度X[%]食塩水の比重[g/cc]をm(X)というXの関数で与えて、濃度Xの時間変化と最終値を見るという方法は全く思いつきませんでした。今後共よろしくご指導お願い致します。
ところで。私もプログラムをつくってみました。十進ベーシックを学び始めたばかりで、こういうプログラムでよいのかどうかもわからないのですが、とにかく見て頂きたいと思います。ご意見お聞かせ下さい。

! 食塩水の混合

! 1000ccの攪拌機付き容器に濃度3%の食塩水が満杯(1000cc)
! 入っています。いま、ここへ濃度7%の食塩水を徐々に注入
! していき、ちょうど1000cc注入したところで注入を止める。
! このとき、食塩水の濃度は何%になっているか。

! 注入した食塩水は瞬時に混合されて均質になり、注入された量に
! 等しい量は容器からあふれ出て、容器内は常に1000ccに保たれて
! いるものとする。

LET d=3
LET h=1                        ! 注入する食塩水の量(hを小さくすれば精度がよくなる?)

FOR i=1 TO 1000 STEP h
   LET s=(d/100)*1000          ! 容器内の食塩の量
   LET t=(7/100)*h             ! 注入する食塩水中の食塩の量
   LET d=(s+t)/(1000+h)*100    ! 容器内の食塩水の濃度

   PRINT i;TAB(10);s;TAB(35);t;TAB(45);d
NEXT i

PRINT ""
PRINT "  食塩の量 s=";s
PRINT "  濃度     d=";d

END


! 結果
!   h=0.05 cc のとき     5.5270468 %
!   h=0.1  cc            5.5270837 %
!   h=1    cc            5.5277467 %
!   h=10   cc            5.5211551 %
!   h=50   cc            5.4924420 %
!   h=100  cc            5.4578268 %


 

Re: 食塩水の混合

 投稿者:島村1243  投稿日:2012年 4月21日(土)13時57分15秒
返信・引用 編集済
  > No.1853[元記事へ]

島村1243さんへのお返事です。

> エス・テーさんへのお返事です。
>
> > 1000ccの攪拌機付き容器に濃度3%の食塩水が満杯(1000cc)入っています。いま、ここへ濃度7%の食塩水を徐々に注入していき、ちょうど1000cc注入したところで注入を止めます。このとき、食塩水の濃度は何%になっていますか。という問題です。十進ベーシックでプログラムを組んで解を得たいのですが、どのようなプログラムをつくればよいのか、どなたかお教え下さい。

濃度X[%]の溶液の比重関数m(X)を m(X)=1+X/100 と近似して下記プログラムを動かすと、濃度Xの時間変化と最終値が見えます。

DEF m(X)=1+X/100  !m(X)の近似式(これで良いのか?ですが。。)
Q=1.0 !Q値をセット
dt=0.05 !Δt値をセット
N=1000/Q/dt
SET WINDOW  -100,N*dt,-1,7
DRAW GRID(100,1)

t0=0
X0=3
PRINT "t=";t0;", X(0)=";X0
For k=1 To N
  t1=k*dt
  X1=((7*m(7)-X0*m(X0))*Q*dt+1000*X0*m(X0))/((m(7)-m(X0))*Q*dt+1000*m(X0))
  cc=k*Q*dt !注入量の合計
  !PRINT t1;X1;cc
  PLOT LINES:t0,X0;t1,X1
  t0=t1
  X0=X1
Next k
PRINT "t=";t1;", X(t)=";X1;", cc=";cc
END
 

Re: 食塩水の混合

 投稿者:島村1243  投稿日:2012年 4月21日(土)07時28分49秒
返信・引用 編集済
  > No.1851[元記事へ]

エス・テーさんへのお返事です。

> 1000ccの攪拌機付き容器に濃度3%の食塩水が満杯(1000cc)入っています。いま、ここへ濃度7%の食塩水を徐々に注入していき、ちょうど1000cc注入したところで注入を止めます。このとき、食塩水の濃度は何%になっていますか。という問題です。十進ベーシックでプログラムを組んで解を得たいのですが、どのようなプログラムをつくればよいのか、どなたかお教え下さい。

この問題は、濃度X[%]食塩水の比重[g/cc]がm(X)というXの関数で与えられるなら、次の様にしてXの時間経過値を得ることができると思います。

(1)7%食塩水注入流量Q[cc/s](一定)と微小時間Δt[s](一定)を設定する。
(2)注入する食塩水は、微小時間Δt[s]で容器1000[cc]内に一様拡散する。

時刻t=0[s] で注入を開始し、開始t[s]後の溶液濃度をX(t)[%]とすると、この時の容器内塩と水それぞれの重量[g]は、X(t)をXと略記して
  塩[g]= X/100*m(X)*1000=10*X*m(X)           (1)
  水[g]=(100-X)/100*m(X)*1000=(1000-10*X)*m(X)     (2)

時刻がtから微小時間Δt[s]経過する間に、
 容器に流入する7%食塩水の塩と水それぞれの重量は
   塩[g]= 7/100*m(7)*QΔt        (3)
   水[g]=(100-7)/100*m(7)*QΔt      (4)
 容器から流出するX%食塩水の塩と水それぞれの重量は
   塩[g]= X/100*m(X)*QΔt        (5)
   水[g]=(100-X)/100*m(X)*QΔt      (6)

したがってt+Δt[s]後の容器内濃度X(t+Δt)[%]は
 X(t+Δt)={(1)式+(3)式-(5)式}/{(1)式+(2)式+(3)式+(4)式-(5)式-(6)式}*100
         ={(7*m(7)-X*m(X))*QΔt+1000*X*m(X)}
      /{(m(7)-m(X))*QΔt+1000*m(X)}
で表される。

上式を「t=0でX(0)=3」の初期条件を付けて順次各時刻のXを求めて行き、t=1000/Qで計算を停止すれば1000cc注入完了後のXが得られる。

プログラム例は次のようになります。

!SET WINDOW    ,  ,  ,
DEF m(X)=  !ここにmの関数式を記載
Q=1.0 !Q値をセット
dt=0.01 !Δt値をセット
N=1000/Q/dt
t0=0
X0=3
PRINT t0,X0
For k=1 To N
  t1=k*dt
  X1=((7*m(7)-X0*m(X0))*Q*dt+1000*X0*m(X0))/((m(7)-m(X0))*Q*dt+1000*m(X0))
  cc=k*Q*dt !注入量の合計
  PRINT t1,X1,cc
  !PLOT LINES:t0,X0;t1,X1
  t0=t1
  X0=X1
Next k
END
 

Re: 食塩水の混合

 投稿者:山中和義  投稿日:2012年 4月20日(金)18時55分59秒
返信・引用
  > No.1851[元記事へ]

エス・テーさんへのお返事です。

> 1000ccの攪拌機付き容器に濃度3%の食塩水が満杯(1000cc)入っています。いま、ここへ濃度7%の食塩水を徐々に注入していき、ちょうど1000cc注入したところで注入を止めます。このとき、食塩水の濃度は何%になっていますか。という問題です。十進ベーシックでプログラムを組んで解を得たいのですが、どのようなプログラムをつくればよいのか、どなたかお教え下さい。


!食塩水の問題

!a[%]の食塩水x[g]とb[%]の食塩水y[g]を混ぜると、(a*x+b*y)/(x+y)[%]の食塩水x+y[g]となる。

!濃度[%] 食塩水の重さ[g] 食塩の重さ[g]
! a        x                a*x/100
! b        y                b*y/100
! c        x+y              c*(x+y)/100=(a*x+b*y)/100

LET a=1 !1%の食塩水200g
LET x=200
LET b=100 !塩20g
LET y=20
LET c=(a*x+b*y)/(x+y)

PRINT c; "%の食塩水"; x+y; "g"

END
 

食塩水の混合

 投稿者:エス・テー  投稿日:2012年 4月20日(金)11時31分31秒
返信・引用
  1000ccの攪拌機付き容器に濃度3%の食塩水が満杯(1000cc)入っています。いま、ここへ濃度7%の食塩水を徐々に注入していき、ちょうど1000cc注入したところで注入を止めます。このとき、食塩水の濃度は何%になっていますか。という問題です。十進ベーシックでプログラムを組んで解を得たいのですが、どのようなプログラムをつくればよいのか、どなたかお教え下さい。  

BASICAcc 0.9.4.8 Windows

 投稿者:白石和夫  投稿日:2012年 4月 9日(月)05時28分57秒
返信・引用 編集済
  Windows版BASICAcc 0.9.4.8のダウンロードファイルBASICAcc0948.zipに古いままのBASICAcc.exeが登録されていました。
BASICAccを起動してHelp-Aboutに表示されるバージョン番号が正しくない場合は,再度,ダウンロードしてください.
 

以上は、新着順1番目から20番目までの記事です。 1  2  3  4  5  6  7  8  9  10  |  《前のページ |  次のページ》 
/76 


[PR] 収益物件