「ガウスの消去法」(2005/11/07 (月) 06:37:30) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
<dl>
<dt>358 :<font color="green"><b>デフォルトの名無しさん</b></font>
:2005/11/06(日) 22:47:07</dt>
<dd>2w+3x+4y-5z=0<br>
5w+2x-2y+z=7<br>
3w+x-y+z=6<br>
7w+2x+y-3z=2<br>
(注)ピボット選択必須<br>
この連立一次方程式をガウスの消去法で解くプログラムを完成させよ<br>
お願いします</dd>
<dt>362 :<font color="green"><b>デフォルトの名無しさん</b></font>
:2005/11/06(日) 23:05:11</dt>
<dd>
「ガウスの消去法」でyahooで検索したら、上から4番目に詳しい説明が出た。<br>
<br>
n = 4;<br>
double a[4][4],b[4];<br>
a[0][0]=... みたいにして書けば動くはず。<br>
<br>
というか既出の問題に関してはまとめサイト欲しいな...<br>
<br></dd>
<dt>363 :<font color="green"><b>362</b></font>:2005/11/06(日)
23:17:41</dt>
<dd>ピボットなしだよ。。。ごめんなさい。</dd>
<dt>364 :<a href="mailto:sage"><b>デフォルトの名無しさん</b></a>
:2005/11/06(日) 23:21:00</dt>
<dd><a href=
"http://www.fuka.info.waseda.ac.jp/~kozo/suuchi/simple_equation/simple_equation_2.html"
target=
"_blank">http://www.fuka.info.waseda.ac.jp/~kozo/suuchi/simple_equation/simple_equation_2.html</a></dd>
<dt>370 :<a href="mailto:sage"><b>(1/3)</b></a>:2005/11/07(月)
00:07:41</dt>
<dd><a href="http://pc8.2ch.net/test/read.cgi/tech/1130431335/358" target=
"_blank">>>358</a><br>
#include <stdio.h><br>
#include <stdlib.h><br>
#include <math.h><br>
<br>
swap( double *x, double *y ){<br>
double temp;<br>
temp = *x;<br>
*x = *y;<br>
*y = temp;<br>
}<br>
main(){<br>
int i, j, k, n=4, pibot;<br>
double max;<br>
double a[4][4]={{2,3,4,-5},{5,2,-2,1},{3,1,-1,1},{7,2,1,-3}};<br>
double b[4]={0,7,6,2};<br>
int z;<br>
for(z=0;z<4;z++)<br>
printf("(%5.2f)A+(%5.2f)B+(%5.2f)C+(%5.2f)D=%5.2f\n"<br>
,a[z][0],a[z][1],a[z][2],a[z][3],b[z]);<br></dd>
<dt>371 :<a href="mailto:sage"><b>(2/3)</b></a>:2005/11/07(月)
00:08:24</dt>
<dd>for( i = 0; i < n; i++ ){<br>
/* ピボット選択 */<br>
max = 0; pibot = i;<br>
for( j=i; j<n; j++ ){<br>
if( fabs( a[j][i] ) > max ){<br>
max = fabs( a[j][i] );<br>
pibot = j;<br>
}<br>
}<br>
if( pibot != i ) {<br>
for( j = 0; j < n; j++ ){<br>
swap( &a[i][j], &a[pibot][j] );<br>
}<br>
swap( &b[i], &b[pibot] );<br>
}<br>
<br>
/* 前進消去 */<br>
for( j = i+1; j < n; j++ ){<br>
a[i][j] /= a[i][i];<br>
}<br>
b[i] /= a[i][i];<br>
for( k = i+1; k < n; k++ ){<br>
for( j = i+1; j < n; j++ ){<br>
a[k][j] -= a[i][j] * a[k][i];<br>
}<br>
b[k] -= b[i] * a[k][i];<br>
}</dd>
<dt>372 :<a href="mailto:sage"><b>(3/3)</b></a>:2005/11/07(月)
00:09:02</dt>
<dd>/* 後退代入 */<br>
for( i = n-1; i >= 0; i-- ){<br>
for( j = i+1; j < n; j++ ){<br>
b[i] -= a[i][j] * b[j];<br>
}<br>
}<br>
<br>
/* 出力 */<br>
printf( "解A=%5.2f\n", b[0] );<br>
printf( "解B=%5.2f\n", b[1] );<br>
printf( "解C=%5.2f\n", b[2] );<br>
printf( "解D=%5.2f\n", b[3] );<br>
<br>
}<br>
<br>
あと、氏ねカス<br>
<br></dd>
<dt>373 :<font color="green"><b>カス</b></font>:2005/11/07(月)
00:29:17</dt>
<dd><a href="http://pc8.2ch.net/test/read.cgi/tech/1130431335/372" target=
"_blank">>>372</a><br>
ありがとっす</dd>
</dl>
表示オプション
横に並べて表示:
変化行の前後のみ表示: