Задача Коши, метод Эйлера , разделить на несколько параллельных потоков - C#

Узнай цену своей работы

Формулировка задачи:

Привет, народ. Я тут уже задавал этот вопрос, но как-то ответы не решили проблемы. Вот мой код решения задачи Коши методом Эйлера:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Koshi
{
    class Program
    {
        public static double fun(double x, double y)
        {
            return x + y;
        }
 
        static void Main(string[] args)
        {
            double b, h, x, y, i, m;
            string input;
            string[] par;
            Console.WriteLine("Введите значения а, b, y0 и число значений функции(m) через пробел: ");
            input = Console.In.ReadLine();
            par = input.Split(' ');
            try
            {
                x = Convert.ToDouble(par[0]);
                b = Convert.ToDouble(par[1]);
                y = Convert.ToDouble(par[2]);
                m = Convert.ToDouble(par[3]);
            }
            catch (Exception e)
            {
                Console.WriteLine("Вы ввели неверное значение");
                return;
            }
            h = (b - x) / m;
 
            Console.WriteLine("~~~~~~~~~~Метод Эйлера~~~~~~~~~~");
            for (i = 0; i < m; i++) 
            {
                y += h * fun(x, y);
                Console.WriteLine("x = " + (x + h) + " y = " + y);
                x += h;
            }
            Console.WriteLine("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
            Console.ReadLine();
        }
    }
}
Мне посоветовали заменить цикл for на такую часть:
Parallel.For(0, m, () => {
    y += h * fun(x, y);
    Console.WriteLine("x = " + (x + h) + " y = " + y);
    x += h;
});
Заменяя, начинаются просто кавардак. Пишет, что данный метод не может конвертировать double в long (Parallel.For использует только long), синтаксических ошибок ("=>", ";" - не воспринимает) и т.п. Кто-то может подсказать, как же все-таки мне окончательно и правильно разложить решение задачи коши на два параллельных потока? Спасибо, за внимание. Буду ждать советов.

Решение задачи: «Задача Коши, метод Эйлера , разделить на несколько параллельных потоков»

textual
Листинг программы
static void Main(string[] args)
        {
            int m;
            double b, h, x, y;
            Console.WriteLine("Введите значения а, b, y0 и число значений функции(m) через пробел: ");
            try
            {
                string[] par = Console.ReadLine().Split(' ');
                x = Convert.ToDouble(par[0]);
                b = Convert.ToDouble(par[1]);
                y = Convert.ToDouble(par[2]);
                m = Convert.ToInt32(par[3]);
            }
            catch (Exception e)
            {
                Console.WriteLine("Вы ввели неверное значение");
                return;
            }
            h = (b - x) / m;
 
            Console.WriteLine("~~~~~~~~~~Метод Эйлера~~~~~~~~~~");
 
 
            for (int i = 0; i < m; i++)
            {
                y += h * fun(x, y);
                x += h;
                Console.WriteLine("x = {0} y = {1}", x, y);
            }
            Console.WriteLine("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
            Console.ReadLine();
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.75 из 5
Похожие ответы