układ równań Ola: rozwiąż układ Cramera wzorami i macierzowo x1 + x2 + 2x3 = 9 2x1 − x2 + 2x3 = 6 x1 + x2 +4x3 = 15
26 mar 15:41
26 mar 16:08
Ola: to umiem ale jak z tymi macierzami AX = B ⇒ X = A−1 B
26 mar 16:13
Des: A1 − odwrotna macierz współczynników, B − macierz wyrazów wolnych Trzeba wymnożyć macierze, umiesz?
26 mar 16:17
Maciess: Trudnością raczej jest odwrócenie macierzy 3x3, a nie pomnozenie dwóch macierzy emotka
26 mar 16:24
Ola: no i o to własnie mi chodziło emotka
26 mar 16:40
Ola: A−1 =
26 mar 16:40
Des: 1 , 1/3 , −2/3 1 , −1/3 , −1/3 −1/2 , 0 , 1/2
26 mar 16:46
Ola: zgadza się emotka
27 mar 18:21
Mariusz: Ola masz C# w systemie , wyszukaj sobie kompilator Napisałem niedawno programik do odwracania macierzy using System; using System.IO; using System.Globalization; namespace MatrixInverse { class MatrixInverse { public static void Main() { char esc; string str,path; int i,j,n; double[,] A; double d; NumberFormatInfo nfi = new NumberFormatInfo(); nfi.NumberDecimalSeparator = "."; Console.WriteLine("Podaj ścieżkę do pliku w którym chcesz zapisać wynik"); path = Console.ReadLine(); using(StreamWriter sw = new StreamWriter(path,true)) { do { Console.Clear(); Console.WriteLine("Odwracanie macierzy"); Console.WriteLine(); Console.WriteLine("Podaj rozmiar macierzy n="); str = Console.ReadLine(); int.TryParse(str,out n); A = new double[n+1,2*n+1]; for(i = 1;i <= n;i++) { Console.WriteLine("Wprowadz " + i.ToString(nfi) + ". wiersz macierzy"); for(j = 1;j <= n;j++) { str = Console.ReadLine(); double.TryParse(str,out A[i,j]); } } Inverse(A,n,out d); sw.WriteLine(d.ToString(nfi)); for(i = 1;i <= n && d != 0.0 ;i++) { for(j = n + 1;j <= 2*n;j++) { Console.Write(A[i,j].ToString(nfi)+" , "); sw.Write(A[i,j].ToString(nfi) + " , "); } Console.WriteLine(); sw.WriteLine(); } esc = (char)Console.ReadKey().Key; } while(esc != (char)ConsoleKey.Escape); } } public static void Inverse(double[,] A,int n,out double d) { int i,j,k,m; double s,t,temp; d = 1.0; for(i = 1;i <= n;i++) for(j = n+1;j <= 2*n;j++) if(i == j − n) A[i,j] = 1.0; else A[i,j] = 0.0; for(i = 1;i <= n;i++) { m = i; for(j = i;j <= n;j++) if(Math.Abs(A[j,i]) > Math.Abs(A[m,i])) m = j; for(j = 1;j <= 2*n;j++) { temp = A[i,j]; A[i,j] = A[m,j]; A[m,j] = temp; } if(m != i) d = −d; if(A[i,i] == 0.0) { d = 0.0; return; } s = A[i,i]; for(j = 1;j <= 2*n;j++) A[i,j] /= s; for(j = i + 1;j <= n;j++) { t = A[j,i]; for(k = i;k <= 2*n;k++) A[j,k]−=A[i,k]*t; } } for(k = n + 1;k <= 2*n;k++) { for(i = n;i >= 1;i−−) { s = A[i,k]; for(j = i + 1;j <= n;j++) s −= A[i,j]*A[j,k]; A[i,k] = s; } } } } }
28 mar 20:34