助けてください、、、

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ダメな子

助けてください、、、

#1

投稿記事 by ダメな子 » 17年前

自分は学生で先日C言語実習で課題を出され2週間、考えたのですが解りません、

もしよかったら考えてみてもらえませんか。
人様に頼るのは良くないと思っていますが提出が迫っています。
力を貸していただいたら光栄です。


課題2-1
以下の実行例のように,直線y = ax + b の係数a, b を入力し,その直線上の座標値(xi, yi) を求め,さらに各yi に
のみ誤差を加え,その座標値をテキストファイルとして出力するプログラムを作成せよ.

課題2-2
課題2–1 で出力したデータファイルの内容を読み込み,最小二乗法によって,直線y = ax + b のパラメータa, b を
求めるプログラムを作成せよ.

課題2-3
グラフィックライブラリを用いて,
• 課題2–1 で入力したパラメータa, b を用いた直線(元の直線),
• 課題2–1 でファイルに出力した,誤差を含む点の座標値,
• 課題2–2 で求められたパラメータa, b を用いた直線(推定直線)
を全て1つのグラフィックウィンドウ上に表示するプログラムを作成せよ.
グラフ描画例(印刷の都合,白黒を反転している)

通りすがり

Re:助けてください、、、

#2

投稿記事 by 通りすがり » 17年前

丸投げでしてくれる人がいるかわかりませんが・・・
どこまで自分で考えたかとか、どこがわからんかくらいは示してみてはどうでしょう。

・数学的な問題としてアルゴリズムがわからんが、アルゴリズムがわかればプログラムは書ける
・解き方(アルゴリズム)はわかるが、プログラムが書けん
・どっちもわからん ← 2週間も何を考えたの?

ダメな子

御指摘ありがとうございます。

#3

投稿記事 by ダメな子 » 17年前

課題の1は解けたのですが2で最小二乗法が出てきてどの様な考え方でプログラムを作成すればいいのか解りません。
1はこんな感じで考えました。
#include <stdio.h>
#include <stdlib.h>
#define NUM 10


int main(void)
{
double x, y;
int a, b, i;
char filename[20]="line.dat";

FILE *fp;

printf("係数 a >");
scanf_s("%lf", &a);
printf("係数 b >");
scanf_s("%lf", &b);
printf("ファイル名>");
scanf_s("%s", filename);

srand(130);

if ((fp = fopen("line.dat", "w")) == NULL) {
printf("Can't open file.\n");
exit(1);
}

for (i = 0; i < NUM; i++) {
x = i;
y = (double)(a * i + b);
y += (double)(rand()%(int)(2.0*3.0/0.001))*0.001-3.0;
fprintf(fp, "%d %lf\n", i, y);

}

fclose(fp);



return 0;
}

通りすがり

Re:御指摘ありがとうございます。

#4

投稿記事 by 通りすがり » 17年前

最小二乗法のC言語サンプルなんていくらでも出てきそうですが、考え方の参考として。

http://szksrv.isc.chubu.ac.jp/lms/lms1.html
http://www5d.biglobe.ne.jp/~tomoya03/sh ... Linear.htm

C言語マスター

Re:御指摘ありがとうございます。

#5

投稿記事 by C言語マスター » 17年前

俺もよくわからんのや。。。

閉鎖

“C言語何でも質問掲示板” へ戻る