• 締切済み

三乗根

Wernerの回答

  • Werner
  • ベストアンサー率53% (395/735)
回答No.1

すでに十分できているように見えるのですが、 どの辺に不満な点があるのでしょうか。 例えば積分範囲0~2は  print simp(0,2,10000/2), "\n"; で求められるようにできているようですし。 なお、タイトルにもなっている三乗根ですが  sub cbrt {return $_[0]**(1/3);} で求められると思います。 (反復して求めるプログラムを書くことそのものが目的だったのであれば無視してください。)

関連するQ&A

  • 関数の積分を求めるプログラムで質問です。

    シンプソンの公式を用いて積分を求めるプログラムで、 「 y=1/(1+x*x) のように±∞で0に収束するような関数は以下のような無限積分を求めることができる。 ∫(-∞→∞){1/(1+x*x)}dx …(a) ただし、無限区間を分割することはできないので、コンピュータを用いた計算では ∫(-a→a){1/(1+x*x)}dx のaに大きな値を入れることで代用する。この積分を求めるプログラムをシンプソンの式を用いて作成し、以下の3ケースについて値を求めて真値と比較せよ。真値は式(a)を解析的に積分することで求めよ。 ・a=100、N=1000 ・a=100、N=500 ・a=200、N=1000 (Nは以下のプログラムと対応しているものです) 」 というもので参考としてS=∫(1→2){1/x}dxをシンプソンの公式を使い求めるものは以下のものなのですが #include <stdio.h> double f(double x) { return 1/x; } int main() { int i,N; double a,b,h,S; double x[1000],y[1000]; a=1.0; b=2.0; N=10; h=(b-a)/N; for(i=0;i<=N;i++) x[i]=a+i*h; y[0]=f(x[0]); y[N]=f(x[N]); S=h*(y[0]+y[N])/3.0; for(i=1;i<=N-1;i=i+2) { y[i]=f(x[i]); S=S+h*y[i]*4.0/3.0; } for(i=2;i<=N-2;i=i+2) { y[i]=f(x[i]); S=S+h*y[i]*2.0/3.0; } printf("N=%d,S=%15.10lf\n",N,S); } これを生かしてプリグラムをつくりたいのですが、分からなくて困っています。助けてください。

  • {s_n}をf∈L^+(a,b)の定義関数列とする時,lim[n→∞]∫[a..b](f(x)-s_n(x))dx=0を示せ

    L^+(a,b) を区間(a,b)上の非負可積分関数全体の集合とする。 f∈L^+(a,b)に対し,定義関数列{s_n}が存在する。その時, lim[n→∞]∫[a..b](f(x)-s_n(x))dx=0を示せ。 (この∫は単関数のルベーグ積分) という問題なのですがどのように証明していいのか分かりません。 定義関数列の定義からs_1(x)≦s_2(x)≦…≦f(x) でs_n(x)はf(x)に近づいていくので0となる事は直観では分かるのですが…。 どのようにすればいいのでしょう?

  • 合成関数について

     こんばんは!ちょっと気になったのですが、  "f'(x)"が関数f(x)の導関数,"C"が積分定数を表すとき、  合成関数の微分法 [{f(x)}^n]' = nf'(x){f(x)}^n-1 が成り立つという事は、この関数の不定積分は、  ∫{f(x)}^n dx = [{1/(n+1)f'(x)}{f(x)}^n+1]+C としてもかまわないのでしょうか。  f(x)=ax+b のとき、  ∫(ax+b)^n dx = [{1/(n+1)a}(ax+b)^n+1]+C が成り立つので、関数全体としてはどうかなぁと思ったのですが・・・  よろしくお願いします。

  • ベータ関数

    ∫ x^a(1+x)^b dx 積分範囲0~∽ t=x/(1+x)と置いてとくのですが ベータ関数の形にもっていけないです

  • n次元の体積の求め方

    n次元ユークリッド空間で、   x1≧0, x2≧0,… xn≧0, x1+x2+…+xn ≦ a (aは正定数) を満たす領域の体積を考えます。私はこれを   ∫(0~a)dxn∫(0~a - xn)dxn-1 …∫(0~a -(xn+…+x2))dx1  =∫(0~a)dxn∫(0~a - xn)dxn-1 …∫(0~a -(xn+…+x3))dx2(a -(xn+…+x2))  =…  =a^n/n! として求めました。(http://oshiete1.goo.ne.jp/kotaeru.php3?q=1057646参照) n=2, 3 の場合にこれが正しいことは容易に確かめられます。自分の回答のことで無責任ですが、一般のnの場合になぜこのような積分で体積が求められるのでしょうか。また、被積分関数が1でないなら積分も必要と思いますが、被積分関数が1の場合は単なる体積です。積分を使わずにこの体積を幾何学的に直感的に説明する方法はないのでしょうか。

  • 大学1年レベルの級数に関する問題です

        ∞             ∞ f(x)=Σ(a_n・x^n)に対して、Σa_n/(n+1)が収束すれば     n=1            n=1 1       ∞ ∫f(x)dx=Σa_n/(n+1) が成立することを示せ。  0     n=1   という問題についてなのですが 私はこの問題を見たとき、次の定理                閉区間A=[a,b]上の連続関数f_n:A→R(n=1,2,・・・)を一般項とする関数項級数Σf_n(x)がA上で一様収束していれば a  ∞      ∞  b ∫ Σf_n(x)dx=Σ ∫f_n(x)dx が成立する。 b n=1       n=1 a という、項別積分の定理を使おうと思いました。 それで、f_n(x)=a_n・x^nとし、この問題において与えられたΣa_n/(n+1)が収束という条件から、Σf_n(x)が[0,1]上で一様収束することを導こうとしたのですが、うまくいきませんでした。 しかし、Σa_n/(n+1)が収束ではなく絶対収束だったら、Σf_n(x)が[0,1]上で一様収束することを導けました。 具体的には、 Σa_n/(n+1)が絶対収束より、Σ{a_n/(n+1)}x^nの収束半径Rは1<Rを満たす。また、Σ{a_n/(n+1)}x^nとΣa_n・x^nの収束半径は等しい。 ここで 「整級数Σa_n・x^n=Σf_n(x)の収束半径をRとする。0<s<Rなる任意のsに対し、閉区間[-s,s]でこの関数級数は一様収束する」 という定理から、とくにs=1としてやれば、関数項級数Σf_nは[-1,1]で一様収束することが導ける。よって[0,1]でももちろん一様収束するから項別積分の定理が使える。 としました。 なのでもしかしたら”収束”という箇所がミスプリントなのでは?と思ったので質問させていただきました。 ですが、私が単に、収束という条件から答えを導き出せてない可能性のほうが高いと思うので。。。 どなたか回答よろしくお願いしますm(_ _)m ぜんぜん解けなくてとても困ってます・・・。

  • 微積分

    ∫ x^a(1+x)^b dx 積分範囲0~∽ この問題は t=x/(1+x)とおく これをベータ関数で表せ という問題なのですが どうしても答えがでないんです 教えてください

  • シンプソン法の出力結果について

    シンプソン法の区間分割数nを10~100まで10ずつ増やして計算値と計算誤差を求めるプログラムを書きに作成したのですが、出力結果に-7.341865999405491E-5などとあります。この「E-数字」とはJavaではどういうこと示しているのですか? また、計算誤差の求め方は下記のプログラムでいいのですか? public class Simpson { static double f(double x) { // ここに任意の被積分関数を記述 double y = Math.exp(- x * x / 2) / Math.sqrt(2.0 * Math.PI); return y; } public static void main(String[] args) { double a = - 1.0, b = 1.0; // 積分範囲 int n = 100; // 区間分割数 for(n=10; n <=100; n+=10){ double h = (b - a) / (double)n; // 分割幅 double s, s1 = 0.0, s2 = 0.0; for (int i = 1; i <= n / 2; i++) { s1 += f(a + (2 * i - 1) * h); } for (int i = 1; i <= n / 2 - 1; i++) { s2 += f(a + 2 * i * h); } s = h / 3.0 * (f(a) + 4.0 * s1 + 2.0 * s2 + f(b)); double suti = (s-0.68269)/0.68269*100;  //計算誤差=(計算値ー真値)/真                                         値×100 System.out.println("区間分割数 =" + n); System.out.println("シンプソン法による計算値 =" + s); System.out.println("シンプソン法による計算誤差 ="+suti+"\n"); } } }

  • 数学III:定積分と不等式について

    定積分と不等式について、  [a,b] で、 g(x)≦f(x) ならば、 ∫[a,b]g(x)dx≦∫[a,b]f(x)dx である ということを用いて解く類の問題についての質問です。 教科書の問題程度ならなんとかなるのですが、参考書の問題になると解けません。具体的には、以下のURL([参考]の項)の問題で、(*)を立式出来ないのです。 いつもは ∫[0,1/2]f(x)dx=2^(-n)/(n+1) となる関数 f(x) を直感で見つけて解こうとするのですが、今回見つけた関数が nx^(n-1)/(n+1) であったために x^n/(1-x)≦nx^(n-1)/(n+1) は成り立たず……。 思うに、この問題を解く人は (1) (*) に気付く (2) 其れを証明する (3) 積分する という思考のプロセスを辿っているのだと思うのですが、 (*) にどうやって気づいたのか、其のプロセス、言うなれば上の (1) の前にあたる (0) のプロセスが分からないのです。言葉足らずな所もあるかもしれませんが、宜しくお願いします。 [参考] http://p.tl/Jiwm

  • 畳込み積分について

    畳込み積分で分からないところがあります。 例えば、次のような関数があるとします。 f(x)=Bx^2 (x<x1) Cx (x1≦x≦x2) Dx^2+Ex (x2<x≦x3) Nx^2 (x>x3) 要は、xの領域毎に関数式が異なるような場合です。 この式に、次のような式を畳込みするとします。 g(x)=K*e^(-x^2/3) 畳込みの式が次のように表されます。 h(x)=∫f(x)g(t-x)dt(積分範囲は -∞~∞ です) このとき、式を分解すると h(x)=∫(Bx^2)*g(t-x)dt (x<x1,積分範囲 -∞~x1) ∫(Cx)*g(t-x)dt (x1≦x≦x2,積分範囲 x1~x2) ∫(Dx^2+Ex)*g(t-x)dt (x2<x≦x3,積分範囲 x2~x3) ∫(Nx^2)*g(t-x)dt (x>x3,積分範囲 x3~∞) でいいんでしょうか?一番聞きたいのは積分範囲は 領域毎に上記のようにするんでしょうか? それとも積分範囲は、xの領域に関わらずに全て -∞~∞に統一して計算するんでしょうか?