-
14-06-2014, 04:59 PM #1
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Ai giúp em thuật toán với em nghĩ hoài không ra
đề bài: Cài đặt các thuật toán đối với ma trận: tính định thức, ma trận nghịch
đảo, nhân ma trận,….
Ai biết cách giải chỉ giúp em vớiView more random threads:
- [Giúp]Bài Tập Chuỗi
- Một số vấn đề về con trỏ và cấp phát bộ nhớ
- Kiểm tra dùm mình chương trình này với
- Vấn đề về chuỗi
- Lỗi: cannot convert 'int *' to 'int' trong C?
- hỏi về cấp phát động
- Giúp em bài này với !!!!!
- Dãy con không giảm dài nhất
- bài tập về hàm và chuỗi ký tự
- Mọi người giúp em thuật toán(pp nổi bọt)
-
15-06-2014, 12:44 PM #2
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Nhân ma trận thì đơn giản rồi, cậu có thể tự vẽ ra là thấy được. Tính định thức và in ra ma trận nghịch đảo thì tham khảo nhiều bài trên congdongcviet.
-
19-06-2014, 04:06 PM #3
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
cảm ơn bạn
Nhưng mình đã tham khảo nhiều trang web nhưng chủ yếu toàn viết code mà mình đọc thì không hiểu lắm
Mình muốn tham khảo thuật toán để làm
nếu bạn biết thuật toán giải thì chỉ giúp mình với
-
20-06-2014, 03:46 PM #4
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Chỉ đọc thôi đố ai mà hiểu được, tớ cũng vậy. Lấy giấy bút ra chọn vài cái ma trận, chạy bằng tay theo code, tí tự khắc hiểu.
-
20-06-2014, 05:55 PM #5
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
P/s: Code này mình tham khảo rồi nhưng ko hiểu 1 số chỗ mình đã nêu cuối bài này
bạn đọc và chỉ giúp mình là tại sao nó lại phải so sánh và gán như thế
------------------------------------------------------------------------------
#include<stdio.h>
#include<conio.h>
#include<iostream>
int main()
{
int i,j,k,n, sign = 1;
double det = 1; double temp;
double a[10][10],b[10][10];
// Nhap cap cua ma tran:
printf("
Cap cua ma tran vuong, n = "); scanf("%d",&n);
// Nhap ma tran a:
for (i = 0; i < n; i++)
for (j = 0; j < n; j++)
{
printf("a[%d][%d] = ", i, j);
scanf("%lf",&a[i][j]);
}
//in ma tran
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
printf(" ");
printf("%1.0f",a[i][j]);
printf(" ");
}
printf("
");
}
// Tinh dinh thuc cua a
for (i = 0; i < n-1; i++)
{
if (a[i][i] == 0) // N?u g?p ph?n t? trên du?ng chéo chính b?ng 0 thì tìm hàng khác d? d?i
{
k = i+1;
while (k < n && a[k][i] == 0) k++;
if (k==n) {
printf("
det(a) = 0");
break;
} // Không timg th?y, t?c det(a) = 0
for (j = i; j < n; j++)// Ð?i hàng i v?i hàng k
{
temp = a[i][j];
a[i][j] = a[k][j];
a[k][j] = temp;
}
sign = -sign; // Ð?nh th?c d?i d?u dó
}
for (j = i+1; j < n; j++)// Bi?n d?i d? các ph?n t? cùng c?t ? hàng du?i b?ng 0 dó
{
temp = -a[j][i]/a[i][i];
for (k = i+1; k < n; k++){
a[j][k] += temp*a[i][k]; // Nhân hàng i v?i (-a[j][i]/a[i][i]) r?i c?ng vào hàng j
}
}
det *= a[i][i]*sign; // Tính d?n det(a)
}
det *= a[n-1][n-1]*sign; // Nhân v?i ph?n t? cu?i chéo chính n?a là xong
printf("
det(a) = %lf
",det);
//Tinh ma tran nguoc
if (det != 0)
{
for (i = 0; i < n; i++) // T?o ra b là ma tr?n don v? dó
for (j = 0; j < n; j++)
if (i==j) b[i][j] = 1; else b[i][j] = 0;
for (i = 0; i < n; i++) // X? lý t? hàng d?u d?n hàng cu?i
{
if (a[i][i] == 0) // N?u g?p ph?n t? trên du?ng chéo chính b?ng 0 thì d?i hàng
{
k = i+1;
while (k < n && a[k][i] == 0) k++;
for (j = 0; j < n; j++) // Ð?i hàng dó c?a a dó, c? v?i ma tr?n b n?a
{
temp = a[i][j];
a[i][j] = a[k][j];
a[k][j] = temp;
temp = b[i][j];
b[i][j] = b[k][j];
b[k][j] = temp;
}
}
temp = a[i][i];
for (j = i; j < n; j++) a[i][j] /= temp;
for (j = 0; j < n; j++) b[i][j] /= temp;
for (j = i+1; j < n; j++)
{
temp = -a[j][i];
for (k = i; k < n; k++) a[j][k] += temp*a[i][k];
for (k = 0; k < n; k++) b[j][k] += temp*b[i][k];
}
}// K?t thúc quá trình Gauss
for (i = n-1; i > 0; i--) // B?t d?u quá trình Jordan
for (j = i-1; j >=0; j--)
{
temp = -a[j][i];
for (k = n-1; k >= i; k--) a[j][k] += temp*a[i][k];
for (k = 0; k < n; k++) b[j][k] += temp*b[i][k];
}
for (i = 0; i < n; i++)// In ra ma tr?n b, bây gi? là ma tr?n nghich d?o c?a a
{
for (j = 0; j < n; j++) printf("%8.3lf\t", b[i][j]);
printf("
");
}
}
else printf("
Khong co ma tran nghich dao
");
getch();
}
---------------------------------------------------------------------------------------
Mình đã xem và nghiên cứu code này nhưng ko hiểu được chỗ
if (a[i][i] == 0) // N?u g?p ph?n t? trên du?ng chéo chính b?ng 0 thì tìm hàng khác d? d?i
{
k = i+1;
while (k < n && a[k][i] == 0) k++;
if (k==n) {
printf("
det(a) = 0");
break;
} // Không timg th?y, t?c det(a) = 0
for (j = i; j < n; j++)// Ð?i hàng i v?i hàng k
{
temp = a[i][j];
a[i][j] = a[k][j];
a[k][j] = temp;
}
sign = -sign;
}
mong bạn chỉ giúp
-
20-06-2014, 05:58 PM #6
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Mà chủ thớt có học môn Đại số tuyến tính ko [IMG]images/smilies/smile.png[/IMG]
xã hội vững mạnh, nhu cầu mặc đẹp của con người ngày càng cao. ngành công nghiệp thời trang cũng đang vững mạnh chóng vánh. những nhà máy gia công hàng may mặc chẳng thể đóng góp lặng thầm vào sự...
Tìm xưởng may gia công tại TP Hồ...