q=91590に絡んだ質問です。

『f(x,y)が(x,y)→(x0,y0)の時aに収束するとは
任意のε>0に対し、あるδがあって
|(x,y) - (x0, y0)|<δについて|f(x,y) - a|<ε
となる事である。』

が2変数関数の極限の定義である事は分かるのですが、
これって(x,y)→(x0,y0)の近付き方によらず一定値aに収束するって事ですよね?
でも例えば

lim (xy + x)/(x+y)
(x,y)→(0,0)

って先にx→0ってすると0、先にy→0ってすると1で、値が異なりますよね。
こう言うのは上の定義に当てはまらないから収束しないと考えていいんですか?これが一つ目の質問。

上の例が収束しないとすると、収束するかどうかはどう見極めればいいのでしょう?
q=91590でsiegmundさんがおっしゃっていた
(a)  |y/x| → 0 としながら,x,y → 0
(b)  |x/y| → 0 としながら,x,y → 0
(c)  |y/x| → a (ゼロでない正定数) としながら x,y → 0
で同じ値になったら収束すると判断していいのはどう言う関数なのでしょうか?
そしてそれは何故なのでしょうか?

他にどういう例があるのでしょうか?

前回のURL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=91590

このQ&Aに関連する最新のQ&A

A 回答 (17件中11~17件)

いやあ,皆さん,大変な力作ですね.



まずはお詫びです.
私がいい加減な条件を発明(?)したので,論争を巻き起こしたようです.

どうも物理屋の数学は精密な議論を欠きますね.
積分と極限を無神経に入れ換えるなどしょっちゅう.
それどころか,この順だと発散するから順番入れ換えて収束させよう,
物理的にこれが正しいはず,なんてことまでやる.
まあ,数学的には適当なカットオフがあるとか,収束因子がついているとか
そういうことを暗黙の内に仮定していることになっているのでしょう.

そもそも,私の発想は単純で,元の問題が
x^2 + y^2 の固まりの形になっているので,
x,y のどちらが早くゼロに近づくかで主要項が決まる.
その分類が(a)(b)(c)というわけです.
でも,
> x,y のゼロへの近づき方は明らかにこの3パターンで
> 全部尽くされます.
は大ウソで,この分類は全部を尽くしていませんでしたね.
振動しながらゼロへ,というタイプが抜けていました.
物理には振動しながらゼロへ,というのはあまりお目にかからないので,
素直にゼロに近づくことしか頭にありませんでした.

場合によって他の分類と言ったのは,例えば oodaiko さんの例
  f(x,y) = (y^2/x)× sin ( 1/(x^2 + y^2) ) (x≠0 かつ x ≠0 の時)
      = 0                (x=0またはy=0の時)
なら,x^2 と y^2 の分類の他に,y^2 と x の分類が要る,
というようなことです.

さて,stomachman さんの No.6 の反例
> f(r,θ)= r /sin θ (ただしsinθ=0の時はf(r,θ)=0)
ですが,この f(r,θ)は x,y で表すと
 f(x,y) = (x^2 + y^2)/x
で,y の方が早くゼロに近づけば f(x,y)→ x → 0 です(乱暴な書き方だな).
でも,x の方が早くゼロに近づくと
f(x,y) → y^2/x で,y^2 と x の(0,0) への近づき方で極限値が変わってしまう.
つまり,x=y^2 としながら(0,0)に行くと f(x,y)→1 ですし,
x=y^4 としながらだと f(x,y)→∞です.
すなわち,(b)の場合の内部で極限値が決まらないことになります.
なにか勘違いしていますかね?
    • good
    • 0

stomachmanです。

No.3をUpしてから反例になってないことに気が付きまして、おー。やっちまったぜぃ。oodaiko先生の厳しくも優しいお言葉に奮起いたしまして、毒食らわば皿まで(恥の上塗り)。もういっちょ考えました。
やはりr≧0, θ∈[0,2π)の極座標において
f(r,θ)= r /sin θ (ただしsinθ=0の時はf(r,θ)=0)
これならどうでしょう。
θが一定という状態で原点に近づけば、f(r,θ)→0に収束する。ところがθ≡r (mod 2π)という螺旋に沿って行くと
f(r,θ) = r /sin r →1

「(a)(b)(c)のどの場合にも同じ値に収束するにも関わらず、(0,0)への他の近づき方が存在して、その場合にはf(x,y)が収束しないか別の値に収束する。」
という例になっていないかなあ。
    • good
    • 0

rabbie です。


背理法で証明できそうです。

証明するのは、
(x, y) が (a), (b), (c) のどれかを満たしながら -> (0, 0) となる時、その全ての場合で
f(x, y) -> 0 ならば、(x, y) -> (0, 0) で f(x, y) -> (0, 0) である。
(fの収束値はゼロでなくてもいいのですが簡単のため。)

の対偶で,

(x, y) -> (0, 0) の時、f(x, y) -> 0
でないならば、(a),(b),(c)のどれかを満たしながら(x,y)->(0,0)としてもf(x,y)->0
とならないことがある。
です。(これであってますよね)

<証明はじめ>
関数 f(x, y) は、(x, y) -> (0, 0) の時、f(x, y) -> 0 ではないとします。

まず、局座標表示で、x = r sinθ, y = r cosθとする。
(r > 0, 0 <= θ < 2π) 以下、面倒なので f(r, θ) のように書きますが、
これは f(r cosθ, r sinθ) のことです。

このとき、(x, y) -> (0, 0) の時、r -> 0 であり、さらに f -> 0 でない
というのは、

(σに依存しない)ε > 0 が存在して、任意のσ>0 に対して、
r < σ かつ |f(r,θ)| > εを満たす点(r,θ) が選べる。

となります。

さらに次のような点列 A_n を考えます。

まず、上のようなε>0 を固定します。σ=1 として上のことを当てはめると
r_0 < 1 かつ |f(r_0,θ_0)| > ε となる (r_0, θ_0) が存在し、
この点を A_0 とします。

次に σ=r_0/2 としてまた同じことをすると r_1 < r_0/2 (< 1/2)かつ
|f(r_1,θ_1)| > ε となる (r_1, θ_1) が存在し、この点を A_1 とします。

順次A_n(r_n,θ_n)を r_n < r_(n-1)/2 (<1/2^n)かつ
|f(r_n,θ_n)| > ε となるようにとる。

この点列 A_n は (0,0) に収束し、かつ |f(A_n)| > ε なので f(A_n) -> 0 でない。

次に、数列 {θ_n}を考えると、これは有限区間 [0, 2π) 内の無限数列なので、
無限回同じ値をとるか、区間 [0, 2π]に集積点をもつ(*1)。
どちらの場合も、{θ_n} の部分列で[0, 2π]内の一点に収束するものが選べ(*2)、
この収束値をαとします。点列{A_n}からこの部分列を作る点だけを取り出して改めて
点列を作り直し{A_m}とおきます。
点の順番を入れ替えなければいいので相変わらず{A_m}->0 で、かつ f(A_m) -> 0 でない。

ここでx,y座標表示に戻って、点列{A_m(x_m, y_m)}を見てみますと、
もちろん A_m -> 0 (m->∞)で、α = π/2 または 3π/2 ならば、
|x_n/y_n| = |cosθ_n/sinθ_n| = 1/tanθ_n -> 0 (b)(*3)
それ以外で、
|y_n/x_n| = |sinθ_n/cosθ_n| = tanθ -> tanα (a)または(c)

つまり、{A_m}は、m->∞の時 (a)(b)(c)のどれかを満たしながら ->O(0,0) だが、この時
f(A_m) -> 0 ではない。

(*3){θ_n}の部分列を選ぶ時、無限回π/2 または 3π/2 だけをとる数列を選んだ場合は,{A_m}は
y軸上を(0, 0)に向かって動くのでやはり(b)の場合になります。

(*1)(*2)の証明はほかの人に譲ります
<証明終わり>

大きな過ちがあったら恥ずかしいのですがどうでしょうか。
チェックお願いします。
    • good
    • 0

<stomachmanさん


残念ながら反例ではありません。私が「反例」と言っているのは
siegmund先生の条件(a)(b)(c)(に絶対値を付けたもの すなわち
taropooさんの質問文にある(a)(b)(c))の条件で同じ値に収束するが
関数自体は2次元ユークリッド空間の位相で値が収束しない。
と言う性質を持つものです。つまりsiegmund先生の条件(a)(b)(c)
は満たしていなければなりません。

で、stomachmanさんの例ですがこれは、
原点を通る任意の直線に沿って0に近付けると収束しないが
螺旋状のコースで収束するような近付き方があると言う例ですネ。
(これはこれで面白い例だと思います。私も似たような
例を考えて最初はこれが反例だ!と思ったくらいですから。)
すなわちこの関数は最初からsiegmund先生の条件(a)(b)(c)
を満たしていないので反例になりません。
    • good
    • 0

以下が、oodaiko先生の仰る「反例」になっているのかどうか....



極座標(r,θ) (r≧0)θ∈[0,2π)において、
f(r,θ)=cos(θ-log(r))
f(0,θ)では定義しない。
という関数を考えます。log()は自然対数。これをx,y座標系
x=r cos θ
y = r sin θ
で見ると、任意の定数a,bについて
ay+bx=0
に沿ってr→0とした場合には-1~1の間を振動してしまって収束しない。ところが
θ≡(ln(r)-α) (≡は 2πを法とする合同、αは定数)という螺旋を考える。この式は「(ln(r)-α)を2πで割った余りをθとする。」(0≦θ<2π)という意味です。この曲線に沿ってr→0とするときには
f(r,θ)→cos(α)
に収束する。
    • good
    • 0

さて2つ目の質問ですが、



どんな関数でも siegmund先生の条件(a)(b)(c)で同じ値に収束すれば必ず収束する、
と言い切れるのか、
それとも(a)(b)(c)で同じ値に収束してもなお関数自体は収束しないような反例があるのか
これについては恥ずかしながら私もまだ完全にわかっていません。
(なんとなく反例があるような気がするのですが……)
とりあえず今まで考えたことだけをまとめておきます。

***************************************************************

まず
「すべての方向から同じ極限値Kに「一様に」近付くならば
関数の極限値は存在し、それはKである。」
ということがいえます。

ここで「一様に」というのは重要な条件です。この条件が満たされないと、関数の極限値
が存在することは保証されません。「一様に」の意味は下の命題のところで解説します。
また「一様」でない場合に関数の極限が存在しない例も後述します。(*1)

例によって一般のn次元に関する命題として証明しましょう。

[命題]
f(x_1,x_2,…,x_n)はn次元ユークリッド空間 R^n 上の実数値関数とし、
Aは R^nの点p = (p_1,p_2,…,p_n) を中心とする単位ベクトルの集合とする。
すなわち A={(x_1,x_2,…,x_n)∈R^n | |(p_1,p_2,…,p_n) - (x_1,x_2,…,x_n)| =1}

このとき、ある定数Kがあって、任意のa ∈A に対して
一様に lim_{s→0} f(p + sa) = K (sは正の実数) ……(N)
が成り立つならば
lim_{r→p} f(r)=K ………………(C)
である。

ただし
「一様に lim_{s→0} f(p + sa) =K となる」とは
任意のa∈Aと任意のε>0に対しある(aによらない)δ>0 が存在し、0< s<δなら
|f(p + sa )-K|<ε
となる。と言う意味です。
(各aに対する極限値の存在を言うだけなら、δの値は一般にaに依存しても構わないので
これは極限値の存在だけを言うよりは強い条件です。)

この条件(N)がsiegmund先生の条件(c)の特例であることはおわかりですね。
しかしsiegmundの条件(c)では「一様性」が仮定されていません。そこでこの条件は
siegmundの条件より限定されたものになります。
(更にいうならば条件(c)にはx軸およびy軸方向から近付く場合が含まれていませんが、
これは条件(a)(b)の中に含まれています。)

[証明](N)の条件から(C)を示します。
(N)より任意のε>0と任意の a∈A に対し、あるδ>0が存在して
0<s<δならば、| f(p + sa)- K |<ε である。

そこで任意のε>0に対し、上の条件を満たすようなδをとる。
また |r - p|<δならあるa∈Aと0< s <δによってr = p + sa と書ける。
ところがδの取り方より、すべてのa∈Aに対し、0< s <δならば、| f(p + sa)- K |<ε
であるから、これは
「|r - p |<δ ならば | f(r)- K |<ε」
を意味する。すなわち
lim_{r→p} f(r)=K                        ■


***************************************************************

siegmundの条件(a)(b)(c)にそれぞれ「一様に収束する」という条件をつければ
上の命題に帰着しますが、そうでない場合にどうなのかということはまだわかりません。

(*1)さて収束が方向によって一様でない場合は、すべての方向から同じ極限値に収束
したとしても、関数自体の極限値が存在するとは限らない。という例を見ましょう。
2変数で考えます。

f(x,y) = (y^2/x)× sin ( 1/(x^2 + y^2) ) (x≠0 かつ x ≠0 の時)
    = 0           (x=0またはy=0の時)

と定義します。
この関数は任意の実数aについてy = axに沿ってx→0とすれば同じ極限値0に収束します。
y軸の場合は最初から0ですからやはり0に収束します。
しかし収束の仕方は「一様」ではありません。
そして関数の(0,0)における極限も存在しません。
なぜならば、直線にそって近付く場合はいつでも0に収束しますが
例えばy=√x に沿って近付くとすると
f(x,y) = sin (1/(x^2 + x) )でこれはx→0での極限値を持たないので
結局
lim_{(x,y)→(0,0)} f(x,y)
は存在しません。
もちろんこの関数はsiegmund先生の条件(b)を満たしていないので
siegmund先生の条件に対する反例とはなりません


今はここまで。

この回答への補足

> siegmundの条件(a)(b)(c)にそれぞれ「一様に収束する」という条件をつければ
一様に収束するとはどの方向から近付いても同じと言う事で、(a)(b)(c)はそれぞれの方向から近付く事を意味していて、そもそも相反する事を言っている様に思えるのですが。

補足日時:2001/06/29 22:28
    • good
    • 0

oodaikoです。

taropooさんの先の質問91590の
>(a)(b)(c)の極限値が一致すればいかなる方法で近付いても極限が存在するとかでしたら、
>その証明を載せていただける…
に回答しようと考えていたのですがちょっと難しい部分があって、考えている内に締め切ら
れてしまいました。
再質問が出たので質問91590に関することで、今まで考えたことを今回の質問内容に絡めて
書いておきます。


まず今回御質問の1つ目ですが、おっしゃる通り
2変数関数 (xy + x)/(x+y)
で (x,y)→(0,0) とした場合の極限値は存在しません。
それは質問に書かれている通り、極限の定義に当てはまらないからです。

************************************************************

・まず多変数関数の極限の定義についてまとめておきます。

少し一般化してn変数関数について考えてみましょう。
(x_1,x_2,…,x_n)= rと書き、
f(x_1,x_2,…,x_n) = f(r)と書くことにします。
また極限値を求めたい点はp = (p_1,p_2,…,p_n) としておきます。
また、数としての0とゼロベクトルを区別するために、ゼロベクトルはOと書くことにします。

さて
(A)「任意のε> 0に対し、あるδがあって
|r - p | < δ ならば |f(r) - K| < ε となる」
ときf(r)はpで極限値Kに収束する、と定義し、
lim_{r→p} f(r)=K ………………(C)
と書きます。これは2変数の場合においてtaropooさんが
書いた定義と全く同じです。

さて一方
rがpへ近付く近付き方によらず収束するというのは
(B)「任意のε> 0に対し、あるδ_1,δ_2,…,δ_n があって
|x_1 - p_1 | <δ_1 かつ |x_2 - p_2 | <δ_2 かつ … |x_n - p_n | <δ_n
ならば |f(r) - K| < ε となる」
ということですね。
注:この定義は δ=max(δ_1,δ_2,…,δ_n ) として
(B')「任意のε> 0に対し、あるδ があって
|x_1 - p_1 | <δ かつ |x_2 - p_2 | <δ かつ … |x_n - p_n | <δ
ならば |f(r) - K| < ε となる」
と書き直せます。どちらでも同値ですから(B')の定義の方を使います。

この(A)と(B)の条件が同値であることは簡単に示せます

(A)⇒(B):fが(A)を満たす。すなわち;
任意のε> 0に対し、|r - p | < δ ならば |f(r) - K| < ε となる
とする
|r - p | < δ というのは
sqrt((x_1 - p_1)^2 + (x_2 - p_2)^2 + … + ( x_n- p_n)^2 ) < δ
のことであり、各項は正ですから、各(x_i - p_1)^2の取り得る最大値はδ^2
すなわち
|x_1 - p_1 | <δ かつ |x_2 - p_2 | <δ かつ … |x_n - p_n | <δ
となります。
すなわちまとめると
任意のε> 0に対し、
|x_1 - p_1 | <δ かつ |x_2 - p_2 | <δ かつ … |x_n - p_n | <δ
ならば |f(r) - K| < ε となる
と言えるので、(B')が言えます。

(B)⇒(A):fが(B')を満たすとします。
このとき
|r - p |
= sqrt((x_1 - p_1)^2 + (x_2 - p_2)^2 + … + ( x_n- p_n)^2 ) < δ√n
ですからδ'=δ√n とすれば
任意のε> 0に対し、|r - p | < δ' ならば |f(r) - K| < ε となる
と言えます。すなわち(A)を満たします。            ■

***********************************************************

少々余計な話ですが

・点列の収束についての一般的な話をしておきます。

そもそも
>rがpへ近付く近付き方によらず
といっても「近付く」とはどういうことかと言う定義をしておく必要があります。
そうしないと関数の「極限値」も定義できません。
こうなると位相空間論の問題ですが、普通のユークリッド空間では「距離」を定義し
点列a_nと定点bの「距離」が0に収束する時、a_n →b と書き、a_n はbに収束する。
と言います。
一般の集合Xの距離と言うのは、a,b∈Xを引数とする実数値2変数関数で
(1) d(a,b)≧0 、a=b ⇔ d(a,b)=0
(2) d(a,b)= d(b,a)
(3) d(a,b)+ d(b,c)≧d(a,c) (三角不等式と言います)
の3つの条件を満たすものです。

ユークリッド空間の2点x=(x_1,x_2,…,x_n)と y=( y_1,y_2,…,y_n) の距離は通常
|x-y|= sqrt((x_1 - y_1)^2 + (x_2 - y_2)^2 + … + ( x_n- y_n)^2 )
で定義されます(これをユークリッド距離と言います)が、これだけがユークリッド空間
の距離の唯一の定義というわけではありません。
max{|x_1 - y_1|,|x_2 - y_2|,…,| x_n- y_n|}
も距離になります。(これは通称マンハッタン距離と呼ばます。)
これでおわかりのように(A)の定義は点の収束をユークリッド距離で定義した場合のもの
であり、(B)の定義は点の収束をマンハッタン距離で定義した場合のものになっています。

実はもっと一般の位相空間論では、「同値な距離による位相は同値である」ということが
いえます。つまり距離dとd'が同値なら、距離dで収束する点列はd'でも収束し、逆も言える
ということです。
なお、距離dとd'が同値であると言うのは、ある定数Mがあって、常に
d≦Md' となると言う意味です。
ユークリッド距離とマンハッタン距離が同値な距離であることは明らかですね。
つまり(A)と(B')の定義が同値であると言うことは、ユークリッド距離と
マンハッタン距離が同値であると言うことから当然の帰結です。

この辺りのもっと詳しい話は位相数学の適当な入門書を参考にして下さい。そこでわから
ないことがありましたらまた質問して下さい。

**********************************************************************

さて元に戻ります。
上で述べたようなことで1つ目の質問に関してはOKだと思います。
とにかく普通の距離(ユークリッド距離)に関して収束することが言えれば
「近付き方によらず」収束すると言い切って大丈夫。ということです。
つまりtaropooさんが質問91590で例にだしておられたように螺旋を描きながら
収束点に近付いてもちゃんと収束することが保証されます。
逆に言えば「近付き方によって」極限値が変わるような場合は(少なくとも(A)の定義では)
収束するとは言いません。

さて2つ目の質問に対する回答の前に、収束先を調べるための一般的な判定方法を
1つ書いておきましょう。

もしpからの距離|r-p|だけで決まる関数2つの関数gとhがあって、pの近傍で
(つまりあるt>0があって|r-p|<tとなるようなrで)
g(|r-p|)≦ f(r)≦h(|r-p|)
となっており、
|r-p|→0としたときgもhも共にKに収束するならば
lim_{r→p} f(r)=K
と言えます。(証明は簡単なのでやってみて下さい。)

質問91590の(1)に関して回答No.5でrabbieさんが書かれている回答は
まさにこの方法を使っています。

この回答への補足

とりあえず「位相空間論ってなに?」って言う程度のtaropooの知識の範囲をはるかに超えた議論が執り行われているので
ちゃんとしたお返事にはかなり時間がかかりそうです。

ただ、oodaiko先生の「これで教科書書けるんじゃないの?」というほどの熱心な論旨展開と、それに呼応される皆さんの真剣さに、
質問者冥利に尽きると感謝しております。

内容的なお返事はまたいづれ。

補足日時:2001/06/24 11:56
    • good
    • 0
この回答へのお礼

何か上の方ではもう結論が出たみたいな感じですがtaropoo全然追いついてないです。まず、回答No.1で感じた事から行かせて下さい。
(No.2以降に答えが書いてあったらゴメンナサイ)

まず、

> rがpへ近付く近付き方によらず収束するというのは
> (B)「任意のε> 0に対し、あるδ_1,δ_2,…,δ_n があって
(以下略)

とありますが何故こう言えるのですか?私の感覚だと、rがpへ近付く近付き方によらず収束するとは

「r = φ(t)として、lim{t→t0} φ(t) = pを満たす任意のφ(t)についてlim{t→t0} f(φ(t)) = K」

という事だと思うのですが。tはパラメータですが時間のイメージと考えると「近付く」という感覚とマッチします。
t0は有限な定数でもいいし+∞でもいいし。

それから

> 注:この定義は δ=max(δ_1,δ_2,…,δ_n ) として

とすると(B)⇒(B')は言えますけど、(B')⇒(B)を言うためには

δ=min(δ_1,δ_2,…,δ_n )

である必要があるのではないでしょうか?でも(B)と(B')が同値である事には疑問はありませんので小さな事ですが。

> 実はもっと一般の位相空間論では、「同値な距離による位相は同値である」ということが
> いえます。

については別質問にした方がいいかなと思ったのでそうしました。
http://oshiete1.goo.ne.jp/kotaeru.php3?q=94815
ですので、こちらで教えてください。

あと、

> pの近傍で
> (つまりあるt>0があって|r-p|<tとなるようなrで)

ってtを大きく取っちゃえば近くないですよね。これは後で|r-p|→0とするよと言う予告なのでしょうか?

最後の証明はいわゆる「はさみうちの定理」ですよね。
済みません、まだやってないですけど出来ると思うのでやってみます。

お礼日時:2001/06/26 00:43

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QExcel VBAで、セルに入ってるデータ型を調べる方法は?

現在、Excel VBAでプログラムを作成しています。

Do Until ~ Loop の終了条件を
アクティブセルに入っているデータの型が文字列型の時
としたいのですが、そのようなことは可能なのでしょうか?

可能だとしたら、どのように記述したらいいのでしょうか?

当方のPCは
Win XP、Excel2003
です。

よろしくお願いいたします。

Aベストアンサー

VarType 関数を使うとか。

Sub SampleProc()

  Dim i As Long
  
  i = 1
  Do While Len(Cells(i, "A").Value) > 0
    If VarType(Cells(i, "A")) = vbString Then
      Exit Do
    Else
      ' // 処理
    End If
    i = i + 1
  Loop
  MsgBox CStr(i) & "行目で停止"

End Sub

QVBAでオブジェクト変数にsetしたシートがactiveかどうかを調べるには?

標準モジュールの冒頭でワークシート用のオブジェクト変数を確保し、
あるタイミングで、あるシートをそのオブジェクト変数にSetしています。

で、そのシートに値をセットするときに、そのシートがActiveだった場合だけやりたい処理があるのですが、Setしてあるオブジェクト変数だけを見てそのシートがActiveか否かを判断する方法って、あるのでしょうか。

コード例)
Private oSheetA as Worksheet

Sub SetSheet(sName as String)
  Set oSheetA = worksheets(sName)
End Sub

Sub SetValue(nValue as integer)
  xxxxxx ←ここでoSheetAがActiveならやりたいことがある。
  oSheetA.Cells(nRow, nCol) = cValue
End Sub

具体的には、複数のBookを開いている状態で、Activeシートが何であるかはオペレータの操作次第なので固定化できない状態で、SetValueが呼び出されたとき、oSheetAがActiveだったら、値をセットするセルが見えるようにセルをActivateかスクロールさせたいんです。

標準モジュールの冒頭でワークシート用のオブジェクト変数を確保し、
あるタイミングで、あるシートをそのオブジェクト変数にSetしています。

で、そのシートに値をセットするときに、そのシートがActiveだった場合だけやりたい処理があるのですが、Setしてあるオブジェクト変数だけを見てそのシートがActiveか否かを判断する方法って、あるのでしょうか。

コード例)
Private oSheetA as Worksheet

Sub SetSheet(sName as String)
  Set oSheetA = worksheets(sName)
End Sub

Sub SetValue(nVa...続きを読む

Aベストアンサー

Option Explicit

Private oSheetA As Worksheet

Sub SetSheet(sName As String)
Set oSheetA = Worksheets(sName)
End Sub

Sub SetValue(nValue As Integer)
If oSheetA Is ActiveSheet Then
MsgBox ("hoge")
End If
oSheetA.Cells(1, 1) = nValue
End Sub

Sub Main()
SetSheet ("Sheet1")
SetValue (5)
End Sub

'実行できるようにソースは変更していますが,
'こんな感じでIs演算子で同じオブジェクトか比較してみるってのはどうでしょう?

Qx1=(1,1,1),x2=(1,1,-1),x3=(1,-1,-1)をC^3の基底,{y1,y2,y3}がその双対基底でx=(0,1,0)の時,y1(x),y

[問] ベクトルx1=(1,1,1),x2=(1,1,-1),x3=(1,-1,-1)をC^3の基底とする。
{y1,y2,y3}がその双対基底でx=(0,1,0)の時、
y1(x),y2(x),y3(x)を求めよ。

という問題の解き方をお教え下さい。

双対基底とは
{f;fはF線形空間VからFへの線形写像}
という集合(これをV*と置く)において、
V(dimV=nとする)の一組基底を{v1,v2,…,vn}とすると
fi(vj)=δij(:クロネッカーのデルタ)で定めるV*の部分集合
{f1,f2,…,fn}はV*の基底となる。これを{v1,v2,…,vn}の双対基底と呼ぶ。

まず、
C^3の次元は6(C^3の基底は(1,0,0),(0,1,0),(0,0,1),(i,0,0),(0,i,0),(0,0,i))
だと思うので上記のx1,x2,x3は基底として不足してると思うのです(もう3ベクトル必要?)。

うーん、どのようにしたらいいのでしょうか?

Aベストアンサー

>C^3の次元は6(

これが間違え.
「x1=(1,1,1),x2=(1,1,-1),x3=(1,-1,-1)をC^3の基底」
といってるんだから,係数体はRではなく,C.

あとは定義にしたがって,
dualな基底を書き下せばいいだけ.
y1(x1)=1,y1(x2)=y1(x3)=0であって
v=ax1+bx2+cx2と表わせるわけだし,
v=(v1,v2,v3)とすれば,a,b,cはv1,v2,v3で表現できる
#単なる基底変換の問題.

QVoidポインタで受け取った変数の型を調べる方法

あるライブラリの関数を利用しようとしたのですが、その関数の引数にVoidポインタがあり、どういう型のデータを格納したのかわかりません。このポインタのアドレスに格納されたデータの型を調べる関数なり方法なりというのはあるのでしょうか。

Voidポインタというのは型を問わずに受け取れるというのは利点ですが、受け取ったものがあらかじめなんだかわからない場合はどうするのでしょうか。よろしくお願いします。

Aベストアンサー

★基本的に調べようがありません。
・『void』ポインタはアドレス情報のみを受け渡しますので、型のサイズまでは分かりません。
 逆に言えば、型のサイズが分からないから『汎用ポインタ』と呼べるのです。
・あるライブラリの関数とは何?→どんな関数か分かりませんので、これ以上はアドバイス無理!
 ただ、C言語の qsort などでは比較用の関数で『void』ポインタを受け取りますが、その関数内で
 渡されたデータの『型』を指定します。→ポインタの形でキャストします。
 この比較用の関数は自前で用意する関数ですので、ソートするデータの型が分かっています。
 でも、ソートするデータ型が複数ある場合は、比較用の関数を複数作って切り替えます。
・あと関数に型を表す引数があれば、それを見て判断できますが、そうでない場合は『void』ポインタで
 渡される前の『型』の調べることは不可能です。→言語仕様より。
・以上。参考に。→一応、あるライブラリの関数とは何?

QX-Y平面の領域D={(x,y)|0≦x≦1,x-1≦y≦x+1}を、

X-Y平面の領域D={(x,y)|0≦x≦1,x-1≦y≦x+1}を、x/y=u,y=vとして、U-V平面での領域で表したいのですが、どうにもできません。誰か教えてください。

Aベストアンサー

定義域をどう変換したら良いかわからないという意味の質問と捉えるならば、(<、>の下の等号は省略)
0<x<1 より両辺を足したり引いたりすれば、
1<x+1<2
-1<x-1<0
よってx-1<y<x+1 は -1<y<2 となり、 -1<v<2
また、x/y=uより0<x<1は0<uy<1
これから両辺に(題意としてy=v=0は定義されないので)1/yを掛ければ
0<u<1/y=1/v となりvの定義域から1/vの定義域の上限は無限大なので
0<uのみとなる。
結果、-1<v<2、0<uが領域の変換後の回答です。


 

QVBAでテキストファイルの件数を調べる方法

Access2000のVBAで関数を使用して
ファイルのパス名、ファイル名を指定すれば、
テキストファイルの件数を検索し変数に返す
関数はありませんか?
   
通常テキストファイルを開き1件1件カウントを
取っていけば件数を知ることは可能ですが、
数千レコードのテキストファイルが複数個存在
する場合処理スピードが遅くなるため何か
最適な関数はありませんか?
よろしくお願い致します。

Aベストアンサー

こんにちは。maruru01です。

No.2の方のFileSystemObjectを利用する方法です。

行数 = CreateObject("Scripting.FileSystemObject").OpenTextFile(ファイルのフルパス, 8).Line

複数のファイルをカウントするなら、ファイルでループを回せばいいでしょう。

あと、FileSystemObjectの参考ページを紹介しておきます。

http://www.bcap.co.jp/hanafusa/VBHLP/FSOme.htm

http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/script56/html/jsobjFileSystem.asp

参考URL:http://www.bcap.co.jp/hanafusa/VBHLP/FSOme.htm,http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/l

こんにちは。maruru01です。

No.2の方のFileSystemObjectを利用する方法です。

行数 = CreateObject("Scripting.FileSystemObject").OpenTextFile(ファイルのフルパス, 8).Line

複数のファイルをカウントするなら、ファイルでループを回せばいいでしょう。

あと、FileSystemObjectの参考ページを紹介しておきます。

http://www.bcap.co.jp/hanafusa/VBHLP/FSOme.htm

http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/script56/html/jsobjFileSystem.asp

...続きを読む

QD={(x,y)|0≦x≦1,0≦y≦x}とする。

D={(x,y)|0≦x≦1,0≦y≦x}とする。
∬{(4x^2)-(y^2)}^1/2dxdyを求めよ。
但し、d/dt[t/2{(4a^2)-t^2}^(1/2)+(2a^2)sin^-1(t/2a)]={(4a^2)-t^2}^1/2
答えに逆関数は残ってしまいますか?
一応答えも載せて頂けるとありがたいです。

Aベストアンサー

int[y:0,x]dy/root{4x^2-y^2}=arcsin(x/2x)-arcsin(0,2x)=π/6.

int[x:0,1]π/6dx=π/6.

間違ってる?

QVBAで他のプログラムが起動しているか調べる方法

VBAで
D:\test\test.exe
が起動中か調べたいのですが
どのようにすれば良いですか?

http://www.vbalab.net/vbaqa/data/access/log/tree_532.htm

このページの方法を使えば、
exe以外のファイルが使用中かは調べることができたのですが
exeファイルの場合にはうまくいきません。

良い方法があれば教えてください。

Aベストアンサー

残念ながら・・・出来ません。
一応、プロパティの中に Handle ってのがあるのですが
取得できるのは ProcessID の値です。
以前、調べていて Handle を見つけた時は、
『やったー \(^o^)/』と思いましたが
ぬか喜びでした。。。orz

なお、当方の環境は、Windows7 Pro & Office2010 です。

Q∫∫【D】2x|y|dxdy, D={x^2+y^2≦1,x^2+y^2≦2x}

∫∫【D】2x|y|dxdy, D={x^2+y^2≦1,x^2+y^2≦2x}
という重積分について質問です。∫∫【D】2x|y|dxdyと∫∫【D】2xydxdyってどう違いますか?

この場合では、領域がx軸に関して対称だから、前者の場合も後者の場合もたまたま答えが同じになるけれど、理屈としては、y座標が負になっている部分をx軸に関して折り曲げた結果として、図形がx軸に関して対称だったために、y座標が正の部分を2倍することになったと考えればよいのでしょうか?
言葉が下手で、伝わりにくい文章ですみません。

Aベストアンサー

>この場合では、領域がx軸に関して対称だから、前者の場合も後者の場合もたまたま答えが同じになるけれど

本当にそうなります?
2xyはyについて奇関数、2x|y|はyについて偶関数です。
前者をx軸について対称な領域で積分すると"0"に、後者を同じ領域で積分するとx軸よりも上側の領域での積分の2倍になります。


人気Q&Aランキング

おすすめ情報