忍者ブログ

グッドイブニング日和見

日和見(ひよりみ)とは江戸時代 天気を見る役職のこと 細々ボソボソ書いています

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

でーきた!

寒い とても 寒い

スズキです

課題のプログラムができたのでアップしておく

 
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
 
#define N 121
 
double mean(double *a);
double correlate(double *x,double *y);
double lsm(double *x,double *y);
 
int main(void)
{
int i;
double x[N],y[N],cor;
FILE *fp;
 
 
if((fp = fopen("soukandata.dat","r"))== NULL){
printf("ファイルがおーぷんできません ばーか\n");
}else{
for (i=0;i<N;i++) fscanf(fp,"%lf%lf",&x[i],&y[i]);
}
cor=correlate(x,y);
lsm(x,y);
printf("相関係数:%lf\nR^2:%lf",cor,pow(cor,2));
 
return(0);
}
 
double mean(double *a)
{
double m=0;
int i;
for(i=0;i<N;i++) m += a[i];
 
m /= N;
return(m);
}
double correlate(double *x,double *y)
{
double c=0,dd=0,dx=0,dy=0,ax,ay;
int i;
 
ax=mean(x);
ay=mean(y);
 
for(i=0;i<N;i++){
dd = dd +((x[i]-ax)*(y[i]-ay));
dx = dx + pow(x[i]-ax,2);
dy = dy + pow(y[i]-ay,2);
}
 
c=dd/(sqrt(dx)*sqrt(dy));
 
return(c);
}
double lsm(double *x,double *y){
int i;
double a,b,sx=0,sy=0,xx=0,xy=0;
 
for(i=0;i<N;i++){
sx += x[i];
sy += y[i];
xx += pow(x[i],2);
xy += x[i]*y[i];
}
 
a=((N*xy)-sx*sy)/((N*xx)-pow(sx,2));
b=(xx*sy-xy*sx)/(N*xx-pow(sx,2));
printf("近似曲線 y=%lf x + %lf\n",a,b);
return(0);
}

説明
mean(double *a) 平均を求める関数
coreelate(double *x,double *y) x,yに格納された値の相関を求める関数
lsm(double *x double *y) 近似曲線を求める関数

求める直線の式は切片と傾きの2つの値が必要なので2つの値を返す必要があるかもしれないけど2つ返すがわからないし切片と傾きを別々に関数でわけるのが面倒だったので関数内で表示させる仕様に

Excelとのデータがあったのでプログラムとして成功 課題終了
少し悦に浸る

おつかれさまです
PR

コメント

お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード Vodafone絵文字 i-mode絵文字 Ezweb絵文字

プロフィール

ブログかいてる人 : スズキ

雲ってのは一日見ていても飽きません

形や大きさ 流れる速さ 空とのコントラスト
たったそれだけで飽きないものを作りだすのは自然の魅力ですね
人工の娯楽がそういうものに敵わないものかと日々考えております

三重大学という公務員養成所で気象の勉強をしています

ツイッター