#1
by princessprincess » 3年前
Aのcsvファイルに書き込まれた6×6の行列を逆行列にしBのcsvファイルに書き込まれた列ベクトルと掛けたいのですがこのプログラムになにを追加すれば機能するのか教えてほしいです。
先生や友人に協力してもらい、6×6の行列(Aのcsvファイル)とベクトル(Bのcsvファイル)を掛けるプログラムは完成したのですが6×6の行列を逆行列にする方法が分かりません。
どうかご教授いただけると幸いです。よろしくお願いいたします。
code
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define N 6
int main()
{
double a[N][N];
double w[N];
double b[N];
int i = 0;
int k;
char buf[256];
FILE* fp1, * fp2, * fp3;
fp1 = fopen("A.csv", "r");
while (fgets(buf, 256, fp1) != NULL)
{
sscanf(buf, "%lf,%lf,%lf,%lf,%lf,%lf", &a[0], &a[1], &a[2], &a[3], &a[4], &a[5]);
i++;
}
fp2 = fopen("B.csv", "r");
fgets(buf, 256, fp2);
sscanf(buf, "%lf,%lf,%lf,%lf,%lf,%lf", &w[0], &w[1], &w[2], &w[3], &w[4], &w[5]);
fclose(fp1);
fclose(fp2);
for (i = 0; i < N; i++) {
b = 0;
for (k = 0; k < N; k++) {
b += a[k] * w[k];
}
}
fp3 = fopen("kai.csv", "w");
fprintf(fp3, "%f,%f,%f,%f,%f,%f", b[0], b[1], b[2], b[3], b[4], b[5]);
printf("%f,%f,%f,%f,%f,%f", b[0], b[1], b[2], b[3], b[4], b[5]);
fclose(fp3);
return 0;
}
/code
Aのcsvファイルに書き込まれた6×6の行列を逆行列にしBのcsvファイルに書き込まれた列ベクトルと掛けたいのですがこのプログラムになにを追加すれば機能するのか教えてほしいです。
先生や友人に協力してもらい、6×6の行列(Aのcsvファイル)とベクトル(Bのcsvファイル)を掛けるプログラムは完成したのですが6×6の行列を逆行列にする方法が分かりません。
どうかご教授いただけると幸いです。よろしくお願いいたします。
code
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define N 6
int main()
{
double a[N][N];
double w[N];
double b[N];
int i = 0;
int k;
char buf[256];
FILE* fp1, * fp2, * fp3;
fp1 = fopen("A.csv", "r");
while (fgets(buf, 256, fp1) != NULL)
{
sscanf(buf, "%lf,%lf,%lf,%lf,%lf,%lf", &a[i][0], &a[i][1], &a[i][2], &a[i][3], &a[i][4], &a[i][5]);
i++;
}
fp2 = fopen("B.csv", "r");
fgets(buf, 256, fp2);
sscanf(buf, "%lf,%lf,%lf,%lf,%lf,%lf", &w[0], &w[1], &w[2], &w[3], &w[4], &w[5]);
fclose(fp1);
fclose(fp2);
for (i = 0; i < N; i++) {
b[i] = 0;
for (k = 0; k < N; k++) {
b[i] += a[i][k] * w[k];
}
}
fp3 = fopen("kai.csv", "w");
fprintf(fp3, "%f,%f,%f,%f,%f,%f", b[0], b[1], b[2], b[3], b[4], b[5]);
printf("%f,%f,%f,%f,%f,%f", b[0], b[1], b[2], b[3], b[4], b[5]);
fclose(fp3);
return 0;
}
/code