はじめまして。Cを勉強して間もない者です。
今日学校から宿題が出て困っています。どうか救いの手をお願いします。期限は明日の19:00までなのですが・・・
今日,このような宿題が出されました。
『2つの配列を作り,周波数の異なる2つの正弦波形を描くプログラムを作れ』
#include<stdio.h>
#include<math.h>
int main(void){
int i;
float x[3600],y[3600];
for(i=0; i<=3599; i++){
ここまでは先生のヒントを参考にしながらやってみたのですが,この先どのようにすれば良いのかわかりません。どうかよろしくお願いします。また上のプログラムで間違いがあったらご指摘お願いします。
ちなみに僕の学校の授業では実際にグラフを描くのにはgnuplotというソフトを用います。
はじめまして。
Re:はじめまして。
こんにちは、ふわりんさん。
gnuplotですか、よく聞きますね。私は使ったこと無いんで、使い方知りませんけど。
http://lagendra.s.kanazawa-u.ac.jp/ogur ... lot-intro/
この辺見たら作れるんじゃないですか?
ちょっと私もやってみますけど。
また、3600回ループというのは1波長を3600回描画するという事ですか?
gnuplotですか、よく聞きますね。私は使ったこと無いんで、使い方知りませんけど。
http://lagendra.s.kanazawa-u.ac.jp/ogur ... lot-intro/
この辺見たら作れるんじゃないですか?
ちょっと私もやってみますけど。
また、3600回ループというのは1波長を3600回描画するという事ですか?
Re:はじめまして。
あれ、gnuplotってライブラリじゃなくて、ただのソフトなんですか?
じゃ数値だけ準備してコピペでデータ作ったらいいだけなんですか?
ごめんなさいgnuplot使ったこと無いんで。
数値作るだけならsin関数で数値作ってprintfで表示したらいいだけなんじゃないですか?
コマンドプロンプトに文字列を表示してそれをコピペするんでしょうか?
それともファイルを作成するんでしょうか?
じゃ数値だけ準備してコピペでデータ作ったらいいだけなんですか?
ごめんなさいgnuplot使ったこと無いんで。
数値作るだけならsin関数で数値作ってprintfで表示したらいいだけなんじゃないですか?
コマンドプロンプトに文字列を表示してそれをコピペするんでしょうか?
それともファイルを作成するんでしょうか?
Re:はじめまして。
グラフの出し方は分かるんです。
ただ,プログラムが・・・・
3600回ループは・・・どうなんでしょう・・・
周波数の異なる2つのsin関数の波形を一つのグラフ上に表せるようなプログラムであれば良いと思います。
よろしくお願いします。
ただ,プログラムが・・・・
3600回ループは・・・どうなんでしょう・・・
周波数の異なる2つのsin関数の波形を一つのグラフ上に表せるようなプログラムであれば良いと思います。
よろしくお願いします。
Re:はじめまして。
はい、出来ました。
#include<stdio.h>
#include<stdio.h>
#include<math.h>
#define PI 3.1416
void main(void){
int i;
double x[3600],y1[3600],y2[3600];
for(i=0; i<=3599; i++){
x=2.0000*PI*((double)(i+1)/3600.0000);
y1=sin(x);
y2=sin(2*x);
printf("x[%d]=%.4f - y1[%d]=%.4f - y2[%d]=%.4f\n",i,x,i,y1,i,y2);
}
}
説明は後書きます。とりあえず実行してみてください。
こちらにサンプルプログラムを置いておきます。
http://dixq.net/board/program/graph4.cpp
#include<stdio.h>
#include<stdio.h>
#include<math.h>
#define PI 3.1416
void main(void){
int i;
double x[3600],y1[3600],y2[3600];
for(i=0; i<=3599; i++){
x=2.0000*PI*((double)(i+1)/3600.0000);
y1=sin(x);
y2=sin(2*x);
printf("x[%d]=%.4f - y1[%d]=%.4f - y2[%d]=%.4f\n",i,x,i,y1,i,y2);
}
}
説明は後書きます。とりあえず実行してみてください。
こちらにサンプルプログラムを置いておきます。
http://dixq.net/board/program/graph4.cpp
Re:はじめまして。
あ、プログラムの意味はわかりました?
説明する必要ありません?
#include<stdio.h>はいりませんね。
消して置いてください。
一応ではプログラムの説明です。
これは
y1に周波数1の正弦波の値を
y2に周波数2の正弦波の値を
格納し、表示するプログラムです。
y = sin f*x;
ですから、fが周波数ですね。xの値は0~360度の値が入っています。
3600回計算していますから0.1度に1回計算しています。
xの値はラジアンで計算しています。
360度は2πですから6.2832...ですよね。
2πの値を3600で割って、次第に増やしていく方法を取っています。
sinのxにこの値をいれて計算し、yにいれただけです。
y1とy2はxに2をかけるかかけないかだけです。
周波数は上式のfの値なんで、ここにいれたらいいわけですね。
これを出力しています。
意味わかりました?
出力されている数値の意味わかります?
説明する必要ありません?
#include<stdio.h>はいりませんね。
消して置いてください。
一応ではプログラムの説明です。
これは
y1に周波数1の正弦波の値を
y2に周波数2の正弦波の値を
格納し、表示するプログラムです。
y = sin f*x;
ですから、fが周波数ですね。xの値は0~360度の値が入っています。
3600回計算していますから0.1度に1回計算しています。
xの値はラジアンで計算しています。
360度は2πですから6.2832...ですよね。
2πの値を3600で割って、次第に増やしていく方法を取っています。
sinのxにこの値をいれて計算し、yにいれただけです。
y1とy2はxに2をかけるかかけないかだけです。
周波数は上式のfの値なんで、ここにいれたらいいわけですね。
これを出力しています。
意味わかりました?
出力されている数値の意味わかります?