Загрузка...

Кто сможет помочь с задачкой?на c#

Тема в разделе C# создана пользователем lolisc 1 ноя 2021. 248 просмотров

  1. lolisc
    lolisc Автор темы 1 ноя 2021 7 12 июл 2019
    [IMG]
    Найти решение системы линейных алгебраических уравнений {111=1 211+222=2 … 11+22+⋯+= Если задана действительная матрица []× и массив свободных членов []. Для решения СЛАУ можно использовать метод Крамера.
     
  2. Layk
    Layk 2 ноя 2021 Заблокирован(а) 18 22 окт 2018
    lolisc, скинь формулу типа a+b = c что то того, попытаю сделать
     
  3. YuGiOh_inactive4645456
    YuGiOh_inactive4645456 2 ноя 2021 Заблокирован(а) 5 1 ноя 2021
    C#
    using System;
    using System.Collections.Generic;
    using System.Text;
    namespace ConsoleApplication_Kramer
    {
    class Program
    {
    static void Main(string[] args)
    {
    Console.WriteLine("Привет! назови себя =)");
    string name;
    name = Console.ReadLine();
    Console.WriteLine();
    Console.WriteLine("" + name + "! данная программа расчитана для вычесления СЛАУ методом Крамера!");
    Console.WriteLine();
    Console.WriteLine(" Особенности данной программы:");
    Console.WriteLine(" -размерность системы от 2 до 3 линейных уравнений");
    Console.WriteLine(" -определитель не должен быть равен 0");
    Console.WriteLine(" -в консоль должны записываться только численные выражения");
    Console.WriteLine();
    Console.WriteLine("" + name + " нажми любую клавишу для ночала работы");
    Console.ReadKey();
    int n; /* количество уравнений */
    double[,] A = new double[3, 3]; /* матрица системы */
    double[] b = new double[3]; /* вектор правых частей */
    double[] x = new double[3]; /* вектор решения */
    Console.WriteLine();
    Console.WriteLine();
    Console.Write("Введите количество уравнений 2..3 ");
    n = Convert.ToInt32(Console.ReadLine());
    if (n > 3 || n <= 1)
    {
    Console.WriteLine("Ошибка в размерности системы (n=2,3)");
    Console.WriteLine("После нажатия любой клавиши программа завершит свою работу . . .");
    Convert.ToInt32(Console.ReadLine());
    return;
    }
    for (int i = 0; i < n; i++)
    for (int j = 0; j < n; j++)
    {
    Console.Write("A{0}{1} -> ", i, j);
    A[i, j] = Convert.ToDouble(Console.ReadLine());
    }
    for (int i = 0; i < n; i++)
    {
    Console.Write("b{0} -> ", i);
    b[i] = Convert.ToDouble(Console.ReadLine());
    }
    if (SLAU_kramer(n, A, b, x) == 1)
    {
    Console.WriteLine("Система не имеет решение");
    Convert.ToInt32(Console.ReadLine());
    return;
    }
    else
    for (int i = 0; i < n; i++)
    Console.WriteLine("x" + i + " = " + x[i]);
    Console.ReadLine();
    }
    private
    static double det(int n, double[,] B) //метод вычисляющий определитель матрицы
    {
    if (n == 2)
    return B[0, 0] * B[1, 1] - B[0, 1] * B[1, 0];
    return B[0, 0] * (B[1, 1] * B[2, 2] - B[1, 2] * B[2, 1]) - B[0, 1] * (B[1, 0] * B[2, 2] - B[1, 2] * B[2, 0]) +
    B[0, 2] * (B[1, 0] * B[2, 1] - B[1, 1] * B[2, 0]);
    }
    static void equal(int n, double[,] A, double[,] B) //– метод присваивающий матрицы ( ), где n-размерность матриц
    {
    for (int i = 0; i < n; i++)
    for (int j = 0; j < n; j++)
    A[i, j] = B[i, j];
    }
    static void change(int n, int N, double[,] A, double[] b)
    {
    for (int i = 0; i < n; i++)
    A[i, N] = b[i];
    }
    public
    static int SLAU_kramer(int n, double[,] A, double[] b, double[] x) //метод реализующий метод Крамера
    {
    double[,] An = new double[3, 3];
    double det1 = det(n, A);
    if (det1 == 0) return 1;
    for (int i = 0; i < n; i++)
    {
    equal(n, An, A);
    change(n, i, An, b);
    x[i] = det(n, An) / det1;
    }
    return 0;
    }
    }
    }


    --- Сообщение объединено с предыдущим 2 ноя 2021
    нашел такое, надеюсь правильно понял условие
     
Загрузка...
Top