C言語関係掲示板

過去ログ

No.1350 Eulerの公式

[戻る] [ホームページ]
No.18355

Eulerの公式
投稿者---さやか(2004/11/24 22:35:19)


初心者です。
Eulerの公式の実数部がゼロの式
exp(ix)=cos(x)+isin(x)
について、今は複素数を無視して実数出力のプログラムを組んだつもりが
それさえも構文エラーになってコンパイルできません。

#include<iostream.h>
#include<math.h>

double main()
{
  double x;

    cout << "Input x: ";
    cin >> x;

   cout <<"cos(x)+isin(x) = "<< cos(x)+sin(x)<<;

  return (0);
}

ちなみにc だったらできたんです。
#include<stdio.h>
#include<math.h>

main()
{
double x;

printf("Input x: ");
scanf("%lf", &x);

printf("cos(x)+isin(x) = %f ", cos(x)+sin(x));

どなたかご教授ください。


No.18356

Re:Eulerの公式
投稿者---ぽこ(2004/11/24 22:59:30)


>それさえも構文エラーになってコンパイルできません。

コンパイルエラーの場合はエラーメッセージを"そのまま"載せることを
お勧めします。

#double main()って、、実際のソースコードは違いますよね?



No.18357

Re:Eulerの公式
投稿者---monkey(2004/11/24 23:04:41)


最後の << が余分なのでは?
cout <<"cos(x)+isin(x) = "<< cos(x)+sin(x)<<;



No.18364

Re:Eulerの公式
投稿者---επιστημη(2004/11/25 10:16:19)


>初心者です。
>Eulerの公式の実数部がゼロの式
>exp(ix)=cos(x)+isin(x)
>について、今は複素数を無視して実数出力のプログラムを組んだつもりが
>それさえも構文エラーになってコンパイルできません。

標準C++なら複素数がすんなり扱えます。

#include <iostream>
#include <complex>

int main() {
  double x = 3.1416/6.0;
  // 半径1,偏角π/6
  std::complex<double> z = std::polar(1.0, x);
  std::cout << "(cos(x), isin(x)) = " 
            << z;

  return 0;
}




No.18394

Re:Eulerの公式
投稿者---かずま(2004/11/25 20:26:40)


> Eulerの公式の実数部がゼロの式
> exp(ix)=cos(x)+isin(x)
> について、今は複素数を無視して実数出力のプログラムを組んだつもりが

オイラーの公式 exp(i*x) = cos(x) + i*sin(x) の実数部がゼロとは
どういう意味ですか?

右辺の複素数表現のうち、cos(x) が実数部、sin(x) が虚数部だと私は
理解しているのですが、違うのですか?
#include <iostream>
#include <complex>

int main()
{
    using namespace std;
    const complex<double> i(0, 1);
    double x;
    while (cin >> x) {
        cout << "       exp(i * x) = " << exp(i * x) << '\n';
        cout << "cos(x) + i*sin(x) = " << cos(x) + i*sin(x) << '\n';
    }
}



No.18396

Re:Eulerの公式
投稿者---さやか(2004/11/26 01:53:05)


みなさんありがとうございます!
c++は複素数を扱う場合にとても便利ですね!
かずまさんのご指摘の
> exp(ix)=cos(x)+isin(x)
> について今は複素数を無視して実数出力のプログラムを組んだつもりが
というのは、複素数の扱いがわからなかったので実際は 
exp(ix)=cos(x)+isin(x) 
ですがc++初心者の私はとりあえず
cos(x)+sin(x) 
の出力を目指したという意味だったんです。まぎらわしくてすいません。
これからもっと勉強していきたいと思います。
返信くださったみなさん親切にありがとうございました。