• ベストアンサー

変数の展開の展開

a-kumaの回答

  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.1

perl は触ったことがないんですが、eval しろ、ってことではないんでしょうか。 $format = $1;  ↓ eval '$format = $1';

kitakitakita
質問者

お礼

ご回答ありがとうございます。 ご回答くださったことも、試行錯誤でやってはみていたのですが、 やはり無理なようでした。 ありがとうございました。 またよろしくお願いいたします。

関連するQ&A

  • 一変数テイラー展開の一般項

    お気に入り f(x)=log(x+√(1+x^2))とするとき、x=0におけるテイラー展開をしました。f(x)を微分していくと f'(x)=1/(x^2+1)^(1/2) f''(x)=-x/(x^2+1)^(3/2) f'''(x)=(2x^2-1)/(x^2+1)^(5/2) f''''(x)=-3(2x^3+3x)/(x^2+1)^(7/2) f'''''(x)=3(8x^4-24x^2+3)/(x^2+1)^(9/2) f''''''(x)=-15x(8x^4-40^2+15)/(x^2+1)^(11/2) f'''''''(x)=45(16x^6-120x^4+90x^2-5)/(x^2+1)^(13/2) となりました。これをマクローリン展開の公式に代入すると f(x)=x-(x^3)/6+(3x^5)/40-(5x^7)/112…剰余項 となりました。 一般項を求めたいのですが、 f'(x)=1/(x^2+1)^(1/2)のときx^2=tと置き、 g(t)=(t+1)^(-1/2)としました。 g(t)についてn回微分し g(n回微分)(t)=(‐1)^n*(((2n-1)!!)/2^n)*(1+t)^-((2n-1)/2) となりました。 g(t)についてt=0の時テイラー展開したところ g(t)=1-t/2+3t^2/8-5t^3/16+…+((‐1)^n*(((2n-1)!!)/2^n))/n!+Rt となりました。 f'(x)=g(x^2)なのでg(t)のテイラー近似にx^2を代入したものがf'(x)のテイラー近似になることはわかりました。 しかしf(x)とf'(x)のテイラー近似は 数式的にはf(x)=∫f'(x)dxになると思いますが、 それには証明が必要になると言われました。また、gとfの関係をはっきりさせ、g(t)のテイラー展開からf'(x)のテイラー展開を求め、 それがf'(x)のテイラー展開と一致することからf'(0)、f''(0)…をもとめ、それを用いてf(x)のテイラー展開を書けばよいらしいのですが、 どのようなステップを踏めば良いか分かりません。 お力をお貸しください。

  • テーラー展開とマクローリン展開

    独学なのでいまいちはっきりわからなく。。。 f(x)のテーラー展開 Σ(n=0~∞) (☆/n!)(x-a)^n (☆はf(x)をn回微分したものにaを代入した値) 1)マクローリン展開はテーラー展開の一種である。(テーラー展開のaに0を代入したものをマクローリン展開という) 2)aに代入する値は別に何の数字であっても展開はできる 3)テーラー展開は基本的に無限回微分可能な関数をf(x)=多項式の形に直すのに使われる という理解でいいのですか? 間違ってたら訂正お願いします。 またこれはいつ使うのでしょうか。。?

  • プログラミングの変数について質問です。

    プログラミングの変数について質問です。 次のプログラミングは自分で書いたプログラムの一部です。 void inputmonster(int x[][3], struct monster monster) { int i, s, t, m, n; for(t = 0; t < 2; t++){ s = 0; while (s < 1){ printf("player%dは好きなモンスターを3つ選んでください\n\n", t+1); for (i = 0; i<3; i++){ printf("%d体目を選んでください。\n\n", i+1); for(m = 0; m < 5; m++) printf("%d, %s\n", m+1, monster[m].name); scanf("%d", &x[t][i]); printf("%d体目 : %s\n\n", i+1, monster[x[t][i]-1].name); } printf("これでよろしいですか?\n"); for(i = 0; i<3; i++) printf("%d体目 : %s ", i+1, monster[x[t][i]-1].name); printf("1、はい 2、いいえ\n"); scanf("%d", &n); if(n == 1) s = 1; else s = 0; } } } これをコンパイルすると次のようなエラーが表示されます。 monsterbattle.c: 関数 ‘inputmonster’ 内: monsterbattle.c:497:63: エラー: 添字が付けられた値が、配列、ポインタまたはベクト ルではありません for(m = 0; m < 5; m++) printf("%d, %s\n", m+1, monster[m].name); ^ monsterbattle.c:499:45: エラー: 添字が付けられた値が、配列、ポインタまたはベクト ルではありません printf("%d体目 : %s\n\n", i+1, monster[x[t][i]-1].name); ^ monsterbattle.c:503:68: エラー: 添字が付けられた値が、配列、ポインタまたはベクト ルではありません for(i = 0; i<3; i++) printf("%d体目 : %s ", i+1, monster[x[t][i]-1].na me); どのように改変すればこのようなエラーを表示しないようにできるのでしょうか? 基本的な質問ではあると思いますが、是非教えていただけるとありがたいです。 よろしくお願いします。

  • √1+√2+√3+…+√nの漸近展開

    http://en.wikipedia.org/wiki/Euler-Mascheroni_constant によると 1+1/2+1/3+…+1/n =γ+log(n)+(1/2n)-Σ[k=2,∞](k-1)!C(k)/n(n+1)…(n+k-1) という漸近展開があるそうです。漸近展開とは、簡単に言うと、nが十分に大きい場合の近似式です。 http://en.wikipedia.org/wiki/Stirling%27s_approximation によると n! =√(2πn)*(n/e)^n*e^λ(n) という漸近展開があるそうです。 ところで、 √1+√2+√3+…+√n などの漸近展開をご存知の方がいらっしゃれば教えてください。 y=√xのグラフとy=√(x+1)のグラフではさまれた面積と考えることで、 √1+√2+√3+…+√n =(2/3)n√n+… となることはわかるのですが、 √1+√2+√3+…+√n =(2/3)n√n+α√n+… とさらに精密にしたいとき、αがどういった定数になるのかわかりません。

  • マクロの展開

    #define A(str) str\n #define B(str) #str #define C(str) printf(B(A(str)); int main() { C(hello) } をプリプロセスすると入れ子になったマクロAが展開されずに  printf("A(hello)"); となってしまいます。  printf("hello\n"); と展開されるようにするにはどうしたらいいでしょうか?  よろしくお願いします。  

  • logのテイラー展開と多価

    自然対数log(x)を複素数で定義すると多価になります。 一方で、テイラー展開した式には多価性は出てきません。 log(1+x)=Σ[n=1,∞]{(-1)^(n+1)/n*x^n} 質問1.テイラー展開すると、何故多価でなくなるのでしょうか? 質問2.テイラー展開の式から、多価性を導き出せますか? つまり、テイラー展開した式からlog(1+x)=log(1+x)+2πiが求まりますか?

  • どこがおかしいのでしょうか??

    下のプログラムはsinの級数展開を求めるプログラム…を書いたつもりなんですが計算機と違う値がでてしまい困っています。どこをどう直せばいいのか教えてもらえませんでしょうか??それともこのプログラムではうまくいかないのでしょうか?返答をお願いします。 #include <stdio.h> #include<math.h> #define NMAX 100 main() { float eps,x,t,s; int n; printf("Taylor series\n"); scanf("%g", &eps); printf("eps=%g\n", eps); for(;scanf("%g", &x)!=EOF;){ printf("\nx=%g\n n\tt\t\ts\n", x); t=s=x; for(n=1;n<NMAX;n++){ t*=-x*x/((2*n+1)*(2*n)); s+=t; printf("%2d %15.6e %15.6e\n", n, t, s); if(fabs(t)<eps) break; } if(n>=NMAX) printf("--- not converged ---\n"); printf("exp(%g)=%g\tn=%d\n", x, s, n); } return(0); }

  • 一変数テイラー展開の問題がわかりません。

    見ていただきありがとうございます。 問題は次です。 f(x)=sinhx (但し、sinht={e^t-e^(-t)}/2とする。) (1)f(x)のx=1におけるテイラー展開を最初の0でない3項まで求めよ。 計算した結果は次です。 (2)f(x)のx=1におけるテイラー展開を一般の次数まで(n次)求めよ。 sinhx={e-e^(-1)}/2+{(e+e^(-1))/2}×(x-1)+{(e-e^(-1))}/4}×(x-1)^2+(余剰項) 一般項なんですが求めてみたのが次です。 (1/n!)×{〈e+(-1)^n〉e^(-1)}/2となりました。 あっているかわからないので確認よろしくおねがいします。 もし間違っていたなら、回答よろしくお願いします。

  • sinのプログラム

    #include<stdio.h> #include<math.h> #define NMAX 100 main(){ float eps,x,t,s; int n; printf("Taylor series\n"); scanf("%g",&eps); printf("eps=%g\n",&x); for(;scanf("%g",&x)!=EOF;){ printf("\nx=%g\n n\tt\t\ts\n",x); t=s=1; for(n=1;n<NMAX;n++){ t*=X/n; s+=t; printf("%2d %15.6e %15.6e\n",n,t,s); if(fabs(t)<eps) break; } if(n>=NMAX) printf("---not converged ---\n); printf("exp(%g)=%g\tn=%d\n",x,s,n); } return(0); } これはeの級数展開をもとめるプログラムなのでが、これをsinの級数展開のプログラムに改造しろという問題があります。 sinのn乗の項を求めてeの部分と置き換えてやってみたのですができません。 どなたかわかる方がいましたら、教えてください。

  • フーリエ級数展開についてです。 急いでます。

    (1)下の図のような周期2の関数がある。これをf(t)=|t| (-1<t<1)とし、そのフーリエ級数展開を求めなさい。なお、フーリエ級数展開はフーリエ係数を求めそれらの係数を用いて与式を展開すること。          |        /\ |   /\ _\/__\|/__\/___      -1       1   (2) 上の結果を用いて、Σ 1/(2n-1)^2=(π^2)/8となることを導きなさい。          (n=1~∞) という問題を教えてください。