自分は学生で先日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週間も何を考えたの?
どこまで自分で考えたかとか、どこがわからんかくらいは示してみてはどうでしょう。
・数学的な問題としてアルゴリズムがわからんが、アルゴリズムがわかればプログラムは書ける
・解き方(アルゴリズム)はわかるが、プログラムが書けん
・どっちもわからん ← 2週間も何を考えたの?
御指摘ありがとうございます。
課題の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;
}
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:御指摘ありがとうございます。
最小二乗法のC言語サンプルなんていくらでも出てきそうですが、考え方の参考として。
http://szksrv.isc.chubu.ac.jp/lms/lms1.html
http://www5d.biglobe.ne.jp/~tomoya03/sh ... Linear.htm
http://szksrv.isc.chubu.ac.jp/lms/lms1.html
http://www5d.biglobe.ne.jp/~tomoya03/sh ... Linear.htm