x^0.5  をやりたいのですが ^が実施できないコンパイラを使っています。
x^3 なら x*x*xとすればいいのですが ^0.5の近似式を教えて
欲しいのですが・・

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

A 回答 (4件)

√x = x^0.5 は言語によってはsqrt(x), sqr(x), power(x,0.5) などと書かれます。



そういうのがない場合には、数値計算をする関数(functionあるいはprocedure, subroutine, method)を作ってやれば良いですね。 要するに、大抵の言語でコンパイラに作りつけの関数sqrtがやっていることを自分で書けばよい。

~~~~~~~~~~~~~~~~~~~~~

√xを高い精度で計算するには、漸化式を使うのが速いと思います。

もちろんx<0のときはエラー、x=0なら√x=0です。
x>0のとき、y=√x に近づく近似値の列y[0], y[1], ...., y[k], .... を次々と作り、誤差が小さくなったら終わります。

●漸化式
適当な出発値y[0]から始めて
y[n+1]=y[n]/2+x/(2y[n])
という漸化式でy[1], y[2], ... を作ります。(Newton法)
この式は、繰り返しの度に有効桁数が倍になる、「2次収束」という性質を持っているので、出発値y[0]が正解に近ければ、ほんの数回の繰り返しで十分な精度(10進法で10桁以上)に達します。

●繰り返しを何処で打ち切るかの判断
 筋から言うと、正解√xに対する相対誤差 δ
δ=|(y[n]^2)/x - 1|/2
が十分小さくなったら打ち切る、ということで良いでしょう。
 このδがなぜ相対誤差なのか。近似値y[n]が絶対誤差εを含んでいて
y[n]=sqrt(x)+ε
であるとすると、
δ=|(y[n]^2)/x - 1|/2
= |(x+2y[n]ε+(ε^2))/x - 1|/2
= |(2ε√x+ε^2)/x |/2
≒|(2ε√x)/x |/2   (|ε|は小さいのでε^2 は無視できる。)
= |(ε/√x |
だからです。
 幾らなら十分小さくなったと言えるか。これは要求される精度に依存しますが、一般に計算機内部での浮動小数点数値の有効桁数を超えたら、それ以上計算したってしょうがないですね。
 これを逆手に取って、
  y[n]とy[n+1]が同じになったら打ち切る
というやり方もあります。

●出発値y[0]
出発値y[0]があまりにもでたらめだと、上記の漸化式が旨く働かないことがあります。
 y[0]は、数値xの計算機内部での表現を利用すると簡単に決められます。
浮動小数点の数値xは符号部S、仮数部D、指数部Eで表され、たいてい16進法で
x = S×D×(16^E)
となっている。Eは整数です。
ここで、x≠0の場合には
1>D≧1/16
です。
 この問題ではx≠0だし、符号部SはS=1に決まっています。従って
√x = √D ×(4^E)
ですね。
√D=√(1+(D-1))≒1+(D-1)/2 ≒1
と荒っぽい近似ができます。また
Eが偶数の場合には
√x = √D ×16^(E/2)
Eが奇数の場合には
√x = (√D )/4 ×16^((E+1)/2)
です。

だから
  Eが偶数のとき y[0] = 符号部1 仮数部(1+(D-1)/2) 指数部(E/2)
  Eが奇数のとき y[0] = 符号部1 仮数部(1+(D-1)/2)/4 指数部((E+1)/2)
とでもすれば良いでしょう。もっと手抜きして
  Eが偶数のとき y[0] = 符号部1 仮数部1 指数部(E/2)
  Eが奇数のとき y[0] = 符号部1 仮数部1 指数部((E+1)/2)
でも大丈夫です。(漸化式の繰り返しが少し増えるだけです。)

内部表現の調べかたが分からない場合には、計算でDとEを出すこともできます。
 16^(E-1) < x < 16^(E)
となるEを見つければ良いのです。
    • good
    • 0
この回答へのお礼

ごていねいに ありがとうございました。
結局、sqrt関数を手作りでつくることにしました。

お礼日時:2001/10/02 23:02

sight さんが仰るように何か関数があるような気はしますが、


どうしても近似が必要であれば次のテイラー展開の結果を使ってください。

 (1+x)^α = 1 + (α,1)*x + (α,2)*x^2 + … + (α,n)*x^n + o(x^n)

ここで、(α,n) は2項係数でαは自然数でなくてもよいですが n は自然数です。
(通常カッコの中のαと n は縦に並べて書きますが今は横に並べています。)
つまり、

 (α,n) = α(α-1)…(α-n+1)/n!

です。ただし、(α,0)=1 です。
今は、α=1/2 ですから
 (1/2,1) = (1/2)/1! = 1/2
 (1/2,2) = (1/2)(1/2-1)/2! = -1/8
 (1/2,3) = (1/2)(1/2-1)(1/2-2)/3! = 1/16
などになります。
したがって、

 (1+x)^0.5 = 1 + x/2 - x^2 /8 + x^3 /16 …

と展開できます。ご質問の x^0.5 であれば、x+1 ⇒ x とずらして

 x^0.5 = 1 + (x-1)/2 - (x-1)^2 /8 + (x-1)^3 /16 …

ですね。
あとは近似の精度に気をつけて下さい。
    • good
    • 0

コンパイラ・・・プログラムですか?


^が使えなくても、Cのpow関数みたいに、べき剰を計算してくれる関数はないんでしょうか?
pow(x, 0.5)みたいにかけるような・・・・
    • good
    • 0

.5乗だけでよいなら


ルートを使ってください。

また

参考で色々書いていますよ

参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=144106
    • good
    • 0

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

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

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

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

Q英語の読み方

日本語は一文字で一つの読み方でわかりやすいのですが英語には読み方の決まりはあるのでしょうか?あるのであれば読み方を詳しく書いているサイトや本、もしくはここに書いてくれると嬉しいです

Aベストアンサー

「えいごのよみかたの」でグーグル検索しかけたら「英語の読み方のルール」の検索結果がたくさんヒットしました。これなんか、どうでしょう。
http://www.uda30.com/bay/Spell-Yomi/Spell-Yomikata.htm

Qx*y=log(e^x+e^y)と定義すると、(x*y)+z=(x+z)*(y+z)

x、y∈Rに対して
x*y=log(e^x+e^y)
と定義すると、
(x*y)+z=(x+z)*(y+z)
が成り立ちます。
分配法則の*と+を逆にしたような感じですが、この*から何かしらの代数的な事実が従うのでしょうか?
この*の意味は何なのでしょうか?

x*x=aのとき、x=√aと定めと、
√(a*b)≧(a+b)/2
といった相加相乗平均の関係の類似は成り立つようですが。

Aベストアンサー

e^x=X, e^y=Y, e^z=Z と置いて考えましょう。
e^(x*y)=e^x+e^y → Z=X+Y
e^(x+y)=e^x*e^y → Z=X*Y
つまり、正の数の加算と乗算になります。

>分配法則の*と+を逆にしたような感じですが

まさにその通りです。入れ替えて見てください。

>√(a*b)≧(a+b)/2

通常の相加相乗平均とは逆ですね。

Q英語の読み方をカタカナで書くことについて

英語の単語の読み方をカタカナで読み方を書く人がよくいますよね?
たとえば

run ラン

こういった行為はよくないといわれていますなんででしょうか?

またカタカナで読み方を書くのではなくアルファベッドのローマ字読みで読み方を書くという行為もありますがこれはいいのでしょうか?

Aベストアンサー

少し、私も知っていることを言わせていただきます。
ソシュールの教えの中に、「シニフィアン」と「シニフィエ」という言葉があります。
「シニフィアン」とは、表記されたものという意味で、「シニフィエ」とは、その意味を持つ概念を表します。

>run ラン

>こういった行為はよくないといわれていますなんででしょうか?

そんなことは、誰が言ったのしょうね。単に、英語学習の権威付けだけではないでしょうか。
一部の人は、メディアによる吹き込みで、誤解があるのでしょう。

ソシュールの理論からすれば、おかしな話なのです。発音記号で?って、音声学の専門教育を受けた人が、国際音声記号(IPA)で書けるならともかく、別に、一般の発音記号などで表記しても、厳密性などはありませんね。日本人には違う音に聞こえても、英語ネイティブには同じに聞こえるらしいのですが、国際音声記号では、絶対に違う表記になります。

日本語でも、「ん」の表記はされていても、様々な音声を持っています。その違いを日本人自身は、特別な訓練をしなければ、認識できません。当然、ローマ字表記でもカバーすることはできません。私は、英語の発音を何度も調べてみましたが、違う音声なのに、同じに表記される発音記号は多くありますから、何を以って、カタカナ表記が悪いとするのか分かりません。場合によっては、カタカナ表記の方が正確かもしれません。

Wyswyg (what you see is what you get)という言葉がありますが、これをもじって、Wylwyg(what you listen [for] is what you get)ではないでしょうか?あなたの聞いたものが、本当なんだろうと思います。
つまり、音声言語である限りは、どんな表記であろうが、表記自体に何の罪もありません。聞いたことがないものは、発音記号であろうが、国際音声記号(IPA)であろうが、フォニックスであろうが、ハングルであろうが、再現できなければ何の役も立ちません。

究極的には、相手に、自分の意味している音声が通じるかどうかの問題で、有名な同時通訳の人の本でも、英語のカタカナ表記はされています。それが、結構、通じるのです。

「上杉謙信」が、" West Kensington"として通じたでも、それは、それで、Communicable なら良いのだと思います。日本語の発音で何が悪いのでしょう。相手が意味が取れないとなって、始めて、相手とのコンセンサスが取れる発音をするわけで、表記(シニフィアン)に問題があるわけではありません。表記を限定するということには、何か、英語教師の欺瞞が隠されているように感じます。

神経質な英語ネイティブの教師にあたれば、意味は通じていたのに、あれこれ上から目線で文句を言われるかもしれませんし、『なんで英語をやるの』の著者の中津燎子氏のように、英語そのものの有効性を無視して、自分が認める範囲の発音でない生徒なら、即刻ダメだしして、もう教えないという教師もいるかもしれませんが、本当に、英語をコミュニケーションのツールとして考えるなら、そのような配慮はいらないはずです。一方では、英語はグローバルな言語と位置づけながら、もう一方で、米国発音を強要するというのは、矛盾しているように思います。そうした、米国による英語至上主義はやめたほうがよいと思います。

少し、私も知っていることを言わせていただきます。
ソシュールの教えの中に、「シニフィアン」と「シニフィエ」という言葉があります。
「シニフィアン」とは、表記されたものという意味で、「シニフィエ」とは、その意味を持つ概念を表します。

>run ラン

>こういった行為はよくないといわれていますなんででしょうか?

そんなことは、誰が言ったのしょうね。単に、英語学習の権威付けだけではないでしょうか。
一部の人は、メディアによる吹き込みで、誤解があるのでしょう。

ソシュールの理論からすれば、...続きを読む

Qx^x^x^x^x^x^・・・・・^x  の一般的な表し方

タイトル通りになってしまいますが、

x^x^x^x^x^x^・・・・・・^x (xはn個ある)

を一般的に表すことができる式というのはあるものなのでしょうか?

grapesで
y=x
y=x^x
y=x^x^x
y=x^x^x^x
 ・
 ・
 ・

のグラフを描いてみましたところ、どうやらnが偶数か奇数かによって2種類のグラフに近づいているように見えたのです。どなたか一般的な記述の仕方をご存知の方、宜しくお願いしますm(_ _)m

Aベストアンサー

x^x^xはx^(x^x)と表すべきです。同様にx^x^x^xではなく、x^(x^(x^x))です。
これは(x^x)^xとx^(x^x)が等しくないから区別する必要があるわけです。
たとえば(3^3)^3=729なのに対し、3^(3^3)=19683です。
一般に後者の方が圧倒的に大きくなります。

さて、話をx^(x^(x^(…)))に戻しましょう。
これは定義域を[0,1]に限れば、確かにおっしゃるとおり偶数と奇数で
関数の形状が分かれます。これはx^x→1(x→0)が関係しています。
x^(x^x)は不定形の極限ではなく、単に0^1=0に収束します。
偶数個のときは不定形の極限が現れるわけです。
数学的帰納法とたとえばlogを取って極限計算をされてみたらよいでしょう。

さて問題になっている、x^(x^x)などの表記ですが、
これにはクヌースのタワー表記(1976)というものが知られています。
たとえば
x^(x^x)=x↑↑3
x^(x^(x^(x^(x^x))))=x↑↑6
などと表示します。参考URL(wiki)などをごらんください。
wikiによるとx^^3や、x^^6などとも表示するようです。

参考URL:http://ja.wikipedia.org/wiki/%E3%82%AF%E3%83%8C%E3%83%BC%E3%82%B9%E3%81%AE%E7%9F%A2%E5%8D%B0%E8%A1%A8%E8%A8%98

x^x^xはx^(x^x)と表すべきです。同様にx^x^x^xではなく、x^(x^(x^x))です。
これは(x^x)^xとx^(x^x)が等しくないから区別する必要があるわけです。
たとえば(3^3)^3=729なのに対し、3^(3^3)=19683です。
一般に後者の方が圧倒的に大きくなります。

さて、話をx^(x^(x^(…)))に戻しましょう。
これは定義域を[0,1]に限れば、確かにおっしゃるとおり偶数と奇数で
関数の形状が分かれます。これはx^x→1(x→0)が関係しています。
x^(x^x)は不定形の極限ではなく、単に0^1=0に収束します。
偶数個のときは不定...続きを読む

Q英語の読み方

英語の読み方を説明や教えてくれるホームページなどがあったら、教えてください。               
もしない場合は「palaces」の読み方だけでも教えてください。

Aベストアンサー

「フォニックス(phonics)」で検索すると、色々出てくるんじゃないでしょうか?

日本語には50音表があり、基本的に全ての単語が50音表の音だけでできています。他の音は使いません。

他の言語も同様で、英語の場合、フォニックスとか42 SoundsとかPV法とか言い方は色々ありますが、全ての単語がその音だけでできています。他の音は使いません。

(言語学で言うと「音韻」と言います。)

例えば、方言にもよりますが、一般米語の母音はこの表の13(14?)母音だけです。他の音を使ってはいけません。
http://www.americanaccent.com/vowel_chart.swf


又、英語のつづりは日本人が思っているほどめっちゃくちゃではありません。しっかりしたルールがあるます。

母音なら、
a,e,i,o,uの5文字にそれぞれ2種類の読み方があります。これで10通り。
加えて、oi,ou,ooの二重音字(2文字で1音)が3つ、計13母音です。

例えばaという字は[ei]か「ae]の2種類の読み方があります。つづり字でaを見たら、まずこの二つのどちらかを疑います。
例:[ei]で読む単語はmake、take、hate等
[ae]で読むのはapple、bad、dad、stand等

ただ、日本語も英語も、「アクセント」の位置が重要な言語ですが、日本語と英語の決定的な違いは、英語は基本的に「アクセントのある母音だけつづりのルール通りに読んで、
アクセントが無い部分は、つづりがなんであろうとuの発音(bus等のu)を弱めに発音したものになる」ということです。

日本語は例えば「赤」と「垢」のアクセントの違いは、「音程」ですが、英語は音程は別に変えなくてもいいです。でもこの「母音の読み方」を変えることが重要です。


palacesは、
アクセントの位置は1つ目のaです。
ということは、1つ目aだけルール通り[ei]か「ae]で読み(この単語の場合は[ae])、2つ目のaとeはアクセントが無いので、つづり字に関わらずuの発音になります。

読みどおりにつづると、
PAL-uh-suz
となります。

(uhはbusのu)。

「フォニックス(phonics)」で検索すると、色々出てくるんじゃないでしょうか?

日本語には50音表があり、基本的に全ての単語が50音表の音だけでできています。他の音は使いません。

他の言語も同様で、英語の場合、フォニックスとか42 SoundsとかPV法とか言い方は色々ありますが、全ての単語がその音だけでできています。他の音は使いません。

(言語学で言うと「音韻」と言います。)

例えば、方言にもよりますが、一般米語の母音はこの表の13(14?)母音だけです。他の音を使ってはいけません...続きを読む

Q数学の因数分解です。⑴ x^4-18x^2y^2+y^4⑵ x^4+4y^4です。途中式

数学の因数分解です。

⑴ x^4-18x^2y^2+y^4

⑵ x^4+4y^4

です。途中式も書いていただきたいです。
よろしくお願いします。

Aベストアンサー

⑴ x^4-18x^2y^2+y^4
x⁴-18x²y²+y⁴
=(x⁴-2x²y²+y⁴)-16x²y²
=(x²-y²)²-(4xy)²
={(x²-y²)+4xy}・{(x²-y²)-4xy}
=(x²-y²+4xy)(x²-y²-4xy)

⑵ x^4+4y^4
=x^4+4y^4+4x^2y^2ー4x^2y^2
=(x^4+4x^2y^2+4y^4)ー4x^2y^2
=(x^2+2y^2)^2ー4x^2y^2

a^2ーb^2=(a+b)(aーb)を利用して
=(x^2+2y^2+2xy)(x^2+2y^2ー2xy)

Q英語の文字の読み方についてお願いします。図々しいのですが、英語の読み方

英語の文字の読み方についてお願いします。図々しいのですが、英語の読み方を全て書いていただけませんか(サイトがあれば教えて下さい)。例:ja=ヤ,ジャ の用にjaで「ジャ」や「ヤ」と発音するみたいにお願いします。

Aベストアンサー

フォニックスやるのがいちばんいいんじゃないですか?

フォニックスって何?
http://allabout.co.jp/children/kidsenglish/closeup/CU20020620a/index.htm
http://www.genkienglish.net/phonicsj.htm

Qy=x^(x^(x^(x^(x^(x^…の定義域は

y=x^(x^(x^(x^(x^(x^…の定義域は
[e^-e,e^(1/e)]と書かれていた本を昔読んだことがあります。
(うろ覚えですが)

最大値がe^(1/e)であることは容易に示すことができたのですが、
最小値がe^-eであることはどうやって示せばよいのでしょうか。

ご存じの方がおられましたらご教授いただきたく、よろしくお願いいたします。

Aベストアンサー

y=x^(x^(x^(x^(x^(x^…^(x^x)…)))))≡x^^x (0<x) (xは無限に並ぶ)…(A)
この関数で注意しなければならないことは
---------------------------------------------------------------
y=x^(x^(x^(x^(x^(x^…^(x^x)…)))))) (0<x) (xはn個並ぶ)…(B)
x→0の時 y→0or1となること

0^0^…^(0^0)=1 (0が偶数個並ぶとき)
0^0^…^(0^0)=0 (0が奇数個並ぶとき)
からx<<1のとき
(B)は多価関数となると推察される。
しかも xの数の偶数、奇数で関数が分かれる。
---------------------------------------------------------------
したがって(A)を考えるとき、偶数個のxを固まりにして考えないと上の性質を表現できない。
なので
(A)式の右辺をyで置換する場合
y=x^(x^(y)) (0<x≦e^(1/e))…(C)
とすることで(B)式のxの数の偶数、奇数の場合の性質を含ませることが出来る。
この(C)の関数は0≦x≦e^(-e)で多価関数になるので,この変域を除けば
定義域は次のようになる。
e^(-e)≦x≦e^(1/e)
この定義域でyの値域は
1/e≦y≦e
となります。

(C)のグラフを添付しておきます。

定義域の最小値はグラフからもわかりますが、(C)の関数式が多価関数にならない下限値
(y=1/eの時のx)として求めることが出来ます。

y=x^(x^(x^(x^(x^(x^…^(x^x)…)))))≡x^^x (0<x) (xは無限に並ぶ)…(A)
この関数で注意しなければならないことは
---------------------------------------------------------------
y=x^(x^(x^(x^(x^(x^…^(x^x)…)))))) (0<x) (xはn個並ぶ)…(B)
x→0の時 y→0or1となること

0^0^…^(0^0)=1 (0が偶数個並ぶとき)
0^0^…^(0^0)=0 (0が奇数個並ぶとき)
からx<<1のとき
(B)は多価関数となると推察される。
しかも xの数の偶数、奇数で関数が分かれる。
---------------------------------------------------------------...続きを読む

Q英語由来の外来語の読み方

例えば、アメリカ大統領のリンカーンの名前の読み方について、次の二通りをよく目にします。
(1)アブラハム・リンカーン
(2)エイブラハム・リンカーン

 (2)は、より英語の発音に忠実な読み方、と言えると思いますが、(1)のような読み方は、何か呼び方がありますか? 「ヘボン式」とは違いますか? 何か適切な呼び方があればそれをご教授頂きたいのと、ほかにもこのような例をご存じであれば挙げて頂きたいこと、それと、それに関する解説か、サイトの紹介などを、よろしくお願い致します。

Aベストアンサー

(1)は一般的に【ローマ字読み】といわれる類です。

http://www.ikeda19.com/como_leer.html

http://komachi.yomiuri.co.jp/t/2013/0217/574050.htm?g=08

Qcos(x/2)*cos(x/2^2)*・・・・・cos(x/2^n)

実数x及び自然数nに対して
a_n=cos(x/2)*cos(x/2^2)*・・・・・cos(x/2^n)
とする。
(1)2^n*a_n*sin(x/2^n)の値はnと無関係に一定であることを証明せよ。
(2)log|a_n|をxで微分することにより、
Σ(n=2~∞)1/2^n *tan(π/2^n)=1/π
であることを証明せよ

この問題に取り組んでいます。
(1)で2^n*a_n*sin(x/2^n)の計算を行っていて、いろいろな三角関数の公式を利用してみたのですが全然うまくいきません。「nと無関係」ということはnが消えればいいということだと思うのですが・・・。
(2)はloga_nを微分したところ
-1/2 tan(x/2) - 1/2^2 tan(x/2^2) -・・・となったのですがここから証明すべき式に変形するにはどうしたらいいのでしょうか?
回答いただければありがたいです。よろしくお願いします

Aベストアンサー

はじめまして。

(1)は倍角の公式(sin(2x) = 2*sin(x)*cos(x))を使うとおもしろいようにcos(x/2^n)が消えていきますよ。


人気Q&Aランキング