Пример оформления отчета




 

ЗАДАНИЕ 1

Решение уравнений

Вариант 20

Выполнил студент гр. СТ-15

Кузнецов А.И.

Постановка задачи

Создать конструктор (Windows-форму) Form1.cs и клиентский код (программу) определения всех корней уравнения в интервале методом последовательного перебора точек с шагом . Проверить полученное решение подстановкой полученных корней в левую часть уравнения. При отсутствии корней программа должна печатать соответствующие комментарии.

Уравнение:

.

.

 

Текст клиентского кода программы

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Drawing.Drawing2D;

 

namespace WindowsFormsApplication_Уравнение

{

public partial class Form1: Form

{

double a, b, h;

double x, xh, xi, yi;

int i = 0, n;

double[] X, Y;

Bitmap myBmp;

double Mx, My, MaxY, MaxX;

 

public Form1()

{

InitializeComponent();

}

 

private void button1_Click(object sender, EventArgs e)

{

a = Convert.ToDouble(textBox1.Text);

b = Convert.ToDouble(textBox2.Text);

h = Convert.ToDouble(textBox3.Text);

x = a;

while (x < b)

{

xh = x + h;

if (f(x) * f(xh) <= 0)

{

i++;

xi = x + h / 2;

yi = f(xi);

listBox1.Items.Add(xi);

listBox2.Items.Add(yi);

}

x += h;

}

 

if (i == 0)

{

listBox1.Items.Add("В интервале x=[a; b]");

listBox1.Items.Add("корней нет");

}

 

}

 

private void button2_Click(object sender, EventArgs e)

{

// Построение графика

int[] yint, xint;

n = Convert.ToInt32(Math.Abs((b - a) / h));

Y = new double[n + 1];

X = new double[n + 1];

for (i = 0; i < n + 1; i++)

{

X[i] = a + i * h;

Y[i] = f(X[i]);

}

if (X == null || Y == null) return;

MaxY = 0;

MaxX = 0;

myBmp = new Bitmap(pictureBox1.Width, pictureBox1.Height);

Graphics gr1 = Graphics.FromImage(myBmp);

Pen P1 = new Pen(Color.Red, 2);

gr1.DrawRectangle(P1, 1, 1, pictureBox1.Width - 2, pictureBox1.Height - 2);

for (int i = 0; i < n + 1; i++)

{

if (System.Math.Abs(Y[i]) > MaxY)

{

MaxY = System.Math.Abs(Y[i]);

}

if (System.Math.Abs(X[i]) > MaxX)

{

MaxX = System.Math.Abs(X[i]);

}

}

My = (pictureBox1.Height) / 2.2 / MaxY;

Mx = (pictureBox1.Width) / 2.2 / MaxX;

yint = new int[n + 1];

xint = new int[n + 1];

for (int i = 0; i < n + 1; i++)

{

yint[i] = (pictureBox1.Height) / 2 - Convert.ToInt32(Y[i] * My);

xint[i] = pictureBox1.Width / 2 + Convert.ToInt32(X[i] * Mx);

}

Pen P2 = new Pen(Color.Green, 6);

for (int i = 0; i < n; i++)

{

gr1.DrawLine(P2, xint[i], yint[i], xint[i + 1], yint[i + 1]);

}

Pen P4 = new Pen(Color.Black, 3);

P4.SetLineCap(LineCap.Flat, LineCap.ArrowAnchor, DashCap.Flat);

Brush B2 = new SolidBrush(Color.Black);

System.Drawing.Font E = new Font("time new roman", 14);

gr1.DrawString("y", E, B2, pictureBox1.Width / 2 - 20, 0);

gr1.DrawString("x", E, B2, pictureBox1.Width - 20, pictureBox1.Height / 2);

gr1.DrawLine(P4, 10, (pictureBox1.Height) / 2, pictureBox1.Width - 10, (pictureBox1.Height) / 2);

gr1.DrawLine(P4, pictureBox1.Width / 2, (pictureBox1.Height) - 10, pictureBox1.Width / 2, 10);

pictureBox1.Image = myBmp;

}

 

private void button3_Click(object sender, EventArgs e)

{

Close();

}

// Вычисление левой части уравнения

double f(double x)

{

return 3 * Math.Sin(Math.Sqrt(x)) + 0.35 * x - 3.8;

}

}

}

Графический дизайн формы



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-06-30 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: