これをもとにf(x)=loge(4x²+1)の[0,1/2]の定積分を近似するプログラミングを台形公式を使い書け
var n = WScript.StdIn.ReadLine();
n = Number(n);
var a = 0;
var b = Math.PI;
var intv = [a,b];
var approx = trapezoid_approx(Math.sin,intv,n);
var exact = -Math.cos(b) + Math.cos(a);
WScript.Echo("近似値: " + approx);
WScript.Echo("厳密値: " + exact);
function trapezoid_approx(f, intv, n){
var delta = (intv[1]-intv[0])/n;
var approx = 0;
var left = intv[0];
var right = left + delta;
for(var i=0; i < n; i++){
approx += delta*(f(left) + f(right))/2;
left += delta;
right += delta;
}
return approx;
}
No.2ベストアンサー
- 回答日時:
個人的には良い問題だ、と思う。
ネタ的には高階関数、つまり関数を引数を取る関数の問題、だ。
ただ、このコード自体は一般的なJavaScriptの関数「じゃない」ブツが混じってる。
環境は分かんないんだけど、恐らくWindowsで、VBScriptとやり取りする独自拡張の何かが入ってるんだよな。
冒頭の
> var n = WScript.StdIn.ReadLine();
とか、出力の
> WScript.Echo("近似値: " + approx);
> WScript.Echo("厳密値: " + exact);
がそれら、だ。
ただ、これは責められない。
っつーのもJavaScriptには入出力がない、んで、「なんかの助けがない」と入出力ができない。
後者はフツーのJSのプログラムだとconsole.logと言うWeb APIを使ったりするケースだろう。
当然、console.logもJavaScript本体の機能じゃない。
だから、入出力が絡むとJavaScriptの一般論は話しづらくなる。
参考までに、Node.jsと言うサーバーサイドJS環境をスタンドアロン処理系として使えば与題がどう書けるか、と言うのを挙げておく。
Node.jsによる実装例:
https://www.ideone.com/cZM4wR
さて、与題のコードのtrapezoid_approxを見てみる。
trapezoid_approxは3つ引数を取り、それらはf、 intv、 nだ。
fは与える関数、intvは定積分の為の区間、nは区間分割数だ。
この3つを変えるだけで色んな区間で、望みの分割数でfとx軸が織りなす図形の面積を求める事が出来る。
よって、trapezoid_approxは高階関数で、既に汎用的な定積分の為のプログラムだ。
従ってこれを弄る必要はない。
そっちじゃなくって、「定積分をする区間」と、「どういった関数を与えるのか」を作らなアカンのだけど、高校卒業した知識があればさして難しい問題じゃない筈だ。
関数trapezoid_approxにお題に従って与える関数は「f(x)=loge(4x²+1)」と指定されてる以上、
function fn(x) {
return Math.log(4 * x * x + 1);
}
になる。
積分区間に付いても
> [0,1/2]の定積分
って書いてるんで
var a = 0;
var b = 1/2;
var intv = [a,b];
となるだけ、だ。
従って近似値の算出は
var approx = trapezoid_approx(fn,intv,n);
とならざるを得ない(nは入力から与えられる)。
厄介なのはむしろ厳密値の計算だろう。
要するに学校で習ってる通り、f(x)=loge(4x²+1)の積分ができないとならない。手計算で。出来る?
一応不定積分の答えを書いておくと
F(x) = Const. + x*loge(4*x^2+1)+atan(2*x)-2*x
だ。
つまり、JavaScriptでこいつもプログラムしとかないとなんない。
function Fn(x) {
return x * Math.log(4 * x * x + 1) + Math.atan(2 * x) - 2 * x;
}
これを使えば定積分の数学的解はJavaScriptでは次のように記述出来る。
var exact = Fn(b) - Fn(a);
以上。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript 定積分の近似値を計算する関数composite_newton_cotesをつくりたい 1 2023/01/18 14:09
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- オープンソース Coinmarketcap api 1 2022/05/30 15:47
- JavaScript ソースコードのいじる場所が分かりません。 1 2022/12/23 02:06
- JavaScript gasについて 1 2022/05/31 21:51
- JavaScript javascriptでテーブルに追加した項目のid追加してローカルストレージを操作したい 5 2023/01/01 15:52
- JavaScript スマフォではボタンを表示させたくない 2 2023/01/20 14:26
- Ruby vscode 文字化け 1 2022/05/21 19:17
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JavaScriptを使って毎日決まっ...
-
C#OpenCv V4にのエラーに関する...
-
VSCODE[Python]の設定について
-
Jscriptからのオープン
-
ジャバスプリクトについて
-
C#で、ContextMenuStripに動的...
-
jsによって検索プルダウン、都...
-
択一形式のテストをつくりたいです
-
APIを使って埋め込んだグーグル...
-
[ javascript ] 連想配列の初期...
-
HTMLにWSHを組み込む
-
Javaで避けるゲームを作ってい...
-
google apps scriptの終了のさせ方
-
C言語の質問です HTMLでこのよ...
-
なぜmatchメソッドがエラーにな...
-
1日1回だけ引けるjavascriptお...
-
ASP.NETのコントロールの値をJa...
-
ジェネレーターの作り方
-
GASでundefinedエラーが出ます
-
functionから別のfunctionを実...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
google apps scriptの終了のさせ方
-
C#OpenCv V4にのエラーに関する...
-
ジェネレーターの作り方
-
GASでundefinedエラーが出ます
-
ASP.NETのコントロールの値をJa...
-
C#で、ContextMenuStripに動的...
-
翌月を取得するGASが分かりません
-
gas スプレッドシートがアクテ...
-
ASP.NET MVCでObjectをjsに渡す
-
シンプルなweb版スタンプラリー...
-
ローカルにあるファイルを検索...
-
なぜmatchメソッドがエラーにな...
-
VSCODE[Python]の設定について
-
1日1回だけ引けるjavascriptお...
-
javascriptでiframeのURL変更は?
-
html javascript リンク先アド...
-
lengthが読めない理由が分からない
-
googleスプレッドシートのApps ...
-
【javascript】正規表現で括弧...
-
HTMLにWSHを組み込む
おすすめ情報