Задача Коши, метод Эйлера , разделить на несколько параллельных потоков - C#
Формулировка задачи:
Привет, народ. Я тут уже задавал этот вопрос, но как-то ответы не решили проблемы.
Вот мой код решения задачи Коши методом Эйлера:
Мне посоветовали заменить цикл for на такую часть:
Заменяя, начинаются просто кавардак.
Пишет, что данный метод не может конвертировать double в long (Parallel.For использует только long), синтаксических ошибок ("=>", ";" - не воспринимает) и т.п.
Кто-то может подсказать, как же все-таки мне окончательно и правильно разложить решение задачи коши на два параллельных потока?
Спасибо, за внимание. Буду ждать советов.
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(); } } }
Parallel.For(0, m, () => { y += h * fun(x, y); Console.WriteLine("x = " + (x + h) + " y = " + y); x += h; });
Решение задачи: «Задача Коши, метод Эйлера , разделить на несколько параллельных потоков»
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(); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д