https://qiita.com/haya_walker/items/d64a5fc624c65a324fa2 ```こちらのサイトの方程式を使わせていただきました 以下は自作のプログラムです。
#include <stdio.h>
#define N 3
int main(void) {
float a[N][N+1] = {
{5,-1,-1,0},
{ 2,1,-3,-5 },
{ 1,1,1 ,6} }; // The matrix
int t; int u; for (t = 0; t <= 3; t++) { for (u = 0; u <= 3; u++) { printf("中身は%fです\n", a[t][u]); }} int i; float d = a[1][0] / a[0][0]; for (i = 0; i <= 3; i++) {//forを使う上で上限がなかったので3までが上限なのでi<=3と書いた。 a[1][i] = a[1][i] - a[0][i] * d; { printf("a[1][%d]=%fとなる\n", i,a[1][i]); } //printf("a[1][%d]= a[1][%d]- a[0][%d]* a[0][%d]/ a[0][%d]である\n", i, i, i, i, i); } float r; r = a[2][0] / a[0][0]; for (i = 0; i <= 3; i++) { a[2][i] = a[2][i] - a[0][i] * r; } int I; for (I = 0; I <= 3; I++) { printf("a[2][%d]=%fとなる\n", I,a[2][I]); } float z; z= a[2][1] / a[1][1]; int y; //iは1から3まで入るのでkに+1した形で入ってもらいiを利用する。kはforより3までとする。 for (y = 0; y <= 3; y++) { a[2][y] = a[2][y] - a[1][y] * z; printf("a[2][%d]=%fとなる\n", y, a[2][y]); } float g = a[2][3] / a[2][2]; printf("Z=%f\n", g); float h; h = a[1][3] / a[1][2] + a[1][1] / a[1][2]; printf("Y=%f\n", h); float j; j = h / a[0][0] + g / a[0][0]; printf("X=%f\n", j); return 0;
}
以下は実行結果です。
中身は5.000000です
中身は-1.000000です
中身は-1.000000です
中身は0.000000です
中身は2.000000です
中身は1.000000です
中身は-3.000000です
中身は-5.000000です
中身は1.000000です
中身は1.000000です
中身は1.000000です
中身は6.000000です
中身は0.000000です
中身は0.000000です
中身は0.000000です
中身は0.000000です
a[1][0]=0.000000となる
a[1][1]=1.400000となる
a[1][2]=-2.600000となる
a[1][3]=-5.000000となる
a[2][0]=0.000000となる
a[2][1]=1.200000となる
a[2][2]=1.200000となる
a[2][3]=6.000000となる
a[2][0]=0.000000となる
a[2][1]=0.000000となる
a[2][2]=3.428571となる
a[2][3]=10.285715となる
Z=3.000000
Y=1.384615
X=0.876923
サイトでの答えは
x=1, y=2, z=3
<編集>7/28 以下が正しいプログラムです。皆様の知恵をお借りしてできました。どうもありがとうございます。
#include <stdio.h>
#include <time.h>
#define N 3
int main(void) {
clock_t start, end; start = clock(); float a[N][N+1] = { {5,-1,-1,0}, { 2,1,-3,-5 }, { 1,1,1 ,6} }; // The matrix int t; int u; for (t = 0; t <= 3; t++) { for (u = 0; u <= 3; u++) { printf("中身は%fです\n", a[t][u]); //printf("中身は%fです\n", a[0][0]); //printf("中身は%fです\n", a[0][0]); }} int i; float d = a[1][0] / a[0][0]; for (i = 0; i <= 3; i++) {//forを使う上で上限がなかったので3までが上限なのでi<=3と書いた。 a[1][i] = a[1][i] - a[0][i] * d; { printf("a[1][%d]=%fとなる\n", i,a[1][i]); } //printf("a[1][%d]= a[1][%d]- a[0][%d]* a[0][%d]/ a[0][%d]である\n", i, i, i, i, i); } //printf("%fです\n", a[1][0]); //printf("%fです\n", a[1][1]); //printf("%fです\n", a[1][2]); //printf("%fです\n", a[1][3]); //int I;//forを使ってまとめた。 //for (I = 0; I <= 3; I++) { //printf("forを使うと%fとなる\n", a[1][I]); //} float r; r = a[2][0] / a[0][0]; for (i = 0; i <= 3; i++) { a[2][i] = a[2][i] - a[0][i] * r; } int I; for (I = 0; I <= 3; I++) { printf("a[2][%d]=%fとなる\n", I,a[2][I]); } float z; z= a[2][1] / a[1][1]; int y; //iは1から3まで入るのでkに+1した形で入ってもらいiを利用する。kはforより3までとする。 for (y = 0; y <= 3; y++) { a[2][y] = a[2][y] - a[1][y] * z; printf("a[2][%d]=%fとなる\n", y, a[2][y]); } float g = a[2][3] / a[2][2]; printf("Z=%f\n", g); float h; h = a[1][3] / a[1][1] - a[1][2] / a[1][1]* a[2][3] / a[2][2]; printf("Y=%f\n", h); float j; j = h / a[0][0] + g / a[0][0]; printf("X=%f\n", j); end = clock(); printf("%f sec\n", (double)(end - start) / CLOCKS_PER_SEC); return 0;
}
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/07/28 11:52
2018/07/28 12:10
2018/07/28 12:40
2018/07/28 12:43
2018/07/28 13:21
2018/07/28 13:23