Построить Графиу у(х). - C#

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

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

Найти наименьшее значение функции: y=sin(x)/1+x и значение аргумента, при котором оно получено, если X изменяется от 0 до 10 с шагом 0,1. Для найденного x подсчитать сумму членов ряда:z=1+x+(x^2/2!)+...(x^10/10!). Построить график y(x). ПРОГРАММА НАПИСАНА, РАБОТАЕТ, РЕБЯТ, КАК ГРАФИК построить у(х).:?
 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication1
{
    class Program
    {
        /*Найти наименьшее значение функции: y=sin(x)/1+x и значение аргумента,
        при котором оно получено, если X изменяется от 0 до 10 с шагом 0,1. 
        Для найденного x подсчитать сумму членов ряда:z=1+x+(x^2/2!)+...(x^10/10!).*/
        //считаем факториал
        static double fact(double x)
        {
            double rezult = 1;
            if (x == 0 || x == 1)
                return rezult;
            while (x > 1)
            {
                rezult *= x;
                x--;
            }
            return rezult;
        }
        //функция для вычисления формулы
        static double func(double x) //задаю имя функции
        {
            return Math.Sin(x) / (1 + x);
        }
        static void Main(string[] args)
        {
            double minElement = 0, tmp, z, minElementIndex = 0;
            for (double i = 0; i <= 10; i += 0.1)  // x
                if ((tmp = func(i)) < minElement) // нахождения минимального элемента значения функции 
                {
                    minElement = tmp; // минимальное(наименьшее) знач Функции = минимальному элементу функции
                    minElementIndex = i; //позиция, на которой стоит минимальный элемент
                }
            Console.WriteLine("Минимальное значение функци = {0} при x {1}", minElement, minElementIndex);
            // добавление по формуле еденицы
            z = 1 + minElement;
            for (int i = 2; i <= 10; i++)//сумма членов ряда
            {
                z = z + Math.Pow(minElement, i) / fact(i); //сумма ряда z
            }
            Console.WriteLine("Сумма ряда: " + z);
        }
    }
}

Решение задачи: «Построить Графиу у(х).»

textual
Листинг программы
using System;
using System.Collections.Specialized;
using System.Globalization;
 
public class Tuple<T1, T2>
{
    public T1 Item1 { get; set; }
    public T2 Item2 { get; set; }
}
 
public Tuple
{
    public static Tuple<T1, T2> Create<T1, T2>(T1 item1, T2 item2)
    {
         return new Tuple<T1, T2> { Item1 = item1, Item2 = item2 };
    }
}
 
class Program
{
    delegate float f(float x);
 
    static Tuple<float, float> yMinMax(f func, float xmin, float xmax, float step)
    {
        float min = func(xmin), max = func(xmin);
        for (float x = xmin; x < xmax; x += step)
        {
            float cy = func(x);
            if (cy < min) min = cy;
            if (cy > max) max = cy;
        }
        return Tuple.Create(min, max);
    }
 
    static void SwapNumbers(ref float first, ref float second)
    {
        float tmp = first;
        first = second;
        second = tmp;
    }
 
    static float Distance(float v1, float v2)
    {
        return (float)Math.Abs(v1 - v2);
    }
 
    static bool IsOwned(float x, float min, float max)
    {
        return x >= min && x <= max;
    }
 
    static float Display(float x, float minA, float maxA, float minB, float maxB)
    {
        if (minA > maxA) SwapNumbers(ref minA, ref maxA);
        if (minB > maxB) SwapNumbers(ref minB, ref maxB);
        if (!IsOwned(x, minA, maxA)) return 0f; //throw new ArgumentOutOfRangeException();
        float lenA = Distance(minA, maxA);
        float lenB = Distance(minB, maxB);
        float y = lenB * (x - minA) / lenA + minB;
        return y;
    }
 
    static void build(f func, float xmin, float xmax, float step)
    {
        Tuple<float, float> ymm = yMinMax(func, xmin, xmax, step);
        for (float x = xmin; x < xmax; x += step)
        {
            int cx = (int)Display(x, xmin, xmax, 1, 80);
            float y = ymm.Item2 - func(x);
            int cy = (int)Display(y, ymm.Item1, ymm.Item2, 1, 25);
            Console.SetCursorPosition(cx, cy);
            Console.Write('*');
        }
    }
 
    static float f1(float x)
    {
        return (float)Math.Pow(2f, x);
    }
 
    static float f2(float x)
    {
        return (float)Math.Pow(0.5f, x);
    }
 
    static float f3(float x)
    {
        return (float)Math.Pow(4f, x);
    }
 
    static void Main(string[] args)
    {
        Console.WriteLine("Select function");
        Console.WriteLine("1. y = 2^x");
        Console.WriteLine("2. y = 0.5^x");
        Console.WriteLine("3. y = 4^x");
        Console.Write("Your choise: ");
        string s = Console.ReadLine();
        f function;
        switch (s.Trim())
        {
            case "1": function = f1; break;
            case "2": function = f2; break;
            case "3": function = f3; break;
            default: Console.WriteLine("Error: Wrong input!"); return;
        }
        Console.Write("Enter function step: ");
        s = Console.ReadLine();
        float step = 0f;
        while (!float.TryParse(s, NumberStyles.Any, CultureInfo.CurrentCulture, out step))
        {
            Console.WriteLine("Error: Wrong input!");
            Console.Write("Try again: ");
            s = Console.ReadLine();
        }
        Console.Clear();
        build(function, -3f, 3f, step);
        Console.ReadKey();
    }
}

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


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

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

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