Как считать интеграл и сохранять его в "таблицу"? - Visual Basic .NET

  1. Ситуация такая: есть функция рисования графиков на оси координат, есть функция подсчета интеграла (код прикреплен). У нас есть t(можно считать как x) от 0 до 2*пи с шагом 0,1. Есть w1 = 2*пи/T, T=Пи, и есть k = от 0 до 60 (это максимум). Нужно посчитать интеграл при k = 1, t раз(формула будет прикреплена). После чего нужно как - то построить график при первом k, при втором k и т.д. (там будет синусоида). Как это сделать? И в конце концов нам нужно будет выполнить одно выражение (формула тоже прикреплена). Кто может помочь? Я не могу понять как это реализовать и как потом выводить эти коэффициенты на экран и графики. Буду рад любым советам и ответам! Код программы vb.net1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 Public Class Form1     Private xmin, xmax, ymin, ymax, w, h As Integer     Private bmp As Bitmap     Private g As Graphics     Private pnAxis, pnGraphics As Pen     Private pnt As List(Of PointF), pp As PointF     Private isDraw As Boolean     Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load         xmin = -7 : xmax = 7 : ymin = -2 : ymax = 2         w = PictureBox1.Width         h = PictureBox1.Height         bmp = New Bitmap(w, h, PictureBox1.CreateGraphics())         PictureBox1.Enabled = False         pnAxis = New Pen(Brushes.Blue, -1)         pnGraphics = New Pen(Brushes.Red, 2)         Button1.Enabled = False         Label2.Text = "min = " & xmin.ToString         Label3.Text = "max = " & xmax.ToString         Label5.Text = "min = " & ymin.ToString         Label4.Text = "max = " & ymax.ToString         Label1.Text = "X"         Label6.Text = "Y"         Label7.Text = "Интегралл"         Label8.Text = ""     End Sub     Private Sub CreateGraphics_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click         PictureBox1.Enabled = True         gettingStartedCanvas()         Button1.Enabled = True         Label8.Text = ""     End Sub     Private Sub GetIntegral_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click         Dim kx As Double = w / 2 / xmax         Dim ky As Double = h / 2 / ymax         Dim p As PointF         For i = 0 To pnt.Count - 1             p = pnt(i)             p.X -= w / 2             p.Y -= h / 2             p.Y = -p.Y             p.X /= kx             p.Y /= ky             pnt(i) = p         Next         'вычисляем приближенно по методу трапеций         Dim sum As Double = 0.0         For i = 1 To pnt.Count - 1             sum += (pnt(i - 1).Y + pnt(i).Y) / 2 * (pnt(i).X - pnt(i - 1).X)         Next         Label8.Text = sum.ToString         Button1.Enabled = False         PictureBox1.Enabled = False     End Sub     Private Sub gettingStartedCanvas()         g = Graphics.FromImage(bmp)         g.Clear(PictureBox1.BackColor)         g.DrawLine(pnAxis, New Point(w / 2, 0), New Point(w / 2, h))         g.DrawLine(pnAxis, New Point(0, h / 2), New Point(w, h / 2))         PictureBox1.Image = bmp         g.Dispose()     End Sub     Private Sub PictureBox1_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown         Dim x As Integer = e.Location.X         Dim y As Integer = e.Location.Y         If x <> 0 Then x = 0         pnt = New List(Of PointF)         pp = New PointF(x, y)         pnt.Add(pp)         isDraw = True         g = Graphics.FromImage(bmp)     End Sub     Private Sub PictureBox1_MouseUp(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseUp         If Not isDraw Then Exit Sub         Dim x As Integer = e.Location.X         Dim y As Integer = e.Location.Y         If x <> w Then x = w         pnt.Add(New PointF(x, y))         g.DrawLine(pnGraphics, pp, pnt(pnt.Count - 1))         isDraw = False         g.Dispose()         PictureBox1.Image = bmp     End Sub     Private Sub PictureBox1_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove         If isDraw Then             Dim x As Integer = e.Location.X             Dim y As Integer = e.Location.Y             If x <= pp.X Then Exit Sub             Dim p As PointF = New PointF(x, y)             g.DrawLine(pnGraphics, pp, p)             pnt.Add(p)             pp = p             PictureBox1.Image = bmp         End If     End Sub End Class


textual

Код к задаче: «Как считать интеграл и сохранять его в "таблицу"? - Visual Basic .NET»

For i = 0 To nn - 1
            x(i) = pnt(ii(i)).X
            y(i) = pnt(ii(i)).Y
        Next

СДЕЛАЙТЕ РЕПОСТ

12   голосов, оценка 4.000 из 5



Похожие ответы
  1. Здравствуйте, не подскажите: как рисунок расположенный на диске считать в набор байтов. Наверно это не сложно))). Спасибо.

  1. Дано текстовый файл. Подсчитать число появлений в ней каждой строчной (то есть маленькой) латинской буквы и создать текстовый файл, элементы которого имеют вид «<буква> - <число ее появлений>» (например, «а-25»). Буквы, отсутствующие в тексте, в файл не включать. Строки порядок по возрастанию кодов букв. Результат записать в файл. Написал код но не подсчитывает количество букв в файлеvb.net1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 Imports System Imports System.IO Imports System.Text Public Class Form1     Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load         Dim f As New FileStream("text.txt", FileMode.Open)         Dim fs As New StreamReader(f)         Dim f1 As New FileStream("textt.txt", FileMode.Create)         Dim fs1 As New StreamWriter(f1)         Dim s As String         Dim k As String         Dim s1 As String         Dim c As Char         Dim b(25) As Integer         Dim g, l As Integer         For i = 0 To 28             Do While fs.EndOfStream = False                 g = Val(c)                 If g >= 97 And g <= 120 Then                     s1 = fs.ReadLine                     g = g + 1 - 96                     l = l + 1                 End If                 s1 = fs.ReadLine             Loop         Next         fs.Close()         f.Close()         s = ""         For i = 0 To 26             If i > 0 Then                 If i <= 26 Then                     s = Chr(96 + i)                     fs1.WriteLine(s & "-" & l)                 End If             End If         Next         fs1.Close()         f1.Close()     End Sub End Class

  1. Необходимо осуществить поиск по listobx. В строках listbox очень много всякого текста. мне необходимо подсчитать количество строк, содержащих текст - SID SID может находиться, как и в начале, так и в середине, так и в конце строки(слова) Заранее спасибо

  1. Итак, в форме программы должен выводится размер файла в зависимости от которого, показатель будет измеряться в b, Kb, Mb, Gb. Возникли некоторые сложности в подсчете, ведь функция IO.FileInfo.Length выводит размер в байтах. Возникла мысль сделать через If:vb.net1 2 3 4 5 6 7 8 9 10 11 12            If FI.Length < 1024 Then                 LabelMb.Text = Math.Round(FI.Length, 1) & " b"             End If             If 1073741824 > FI.Length > 1024 Then                 LabelMb.Text = Math.Round((FI.Length / 1024), 1) & " Kb"             End If             If 1099511627776 > FI.Length > 1073741824 Then                 LabelMb.Text = Math.Round((FI.Length / 1073741824), 2) & " Mb"             End If             If FI.Length > 1099511627776 Then                 LabelMb.Text = Math.Round((FI.Length / (1.1 * 10 ^ 12)), 2) & " Gb"             End IfНо не покатило(

  1. Доброго времени! Есть папка с логами, в ней логи с расширением .log за последние несколько месяцев. Новый файл лога создается каждые 4 часа. Задача: 1. Просмотреть логи за последние 3 недели (исключая сегодняшний день) 2. Найти все вот такие строчки: "2016-08-07 20:02:49.212 - Thread: 6 -> OnConnectedClient Player1 attempt" 3. Создать список из имен пользователей (в данном случае - Player1) без повторов с указанием сколько дней назад пользователь последний раз заходил на сервер. 4. Создать (перезаписать) файл SettFile.txt вида: 10.08.16 'сегодняшняя дата Player1:12 'имя игрока:сколько дней назад заходил Player2:3 Player3:17 и т.д. 5. При последующих запусках программы (планирую запускать раз в сутки в 1:00): - Считать файл SettFile.txt - Просмотреть логи за дату, указанную в файле - Добавить новых пользователей (если такие будут) - Если зайдут пользователи из уже записанных в файле - поменять им значение на 1. - Всем остальным, соответственно, увеличить значение на 1. - Перезаписать файл SettFile.txt Какие вопросы: А) как получить дату "3 недели назад"? Б) Как организовать массив в который будет считываться файл SettFile.txt так, чтобы с ним было удобно работать (менять числа, добавлять строки и т.д.) В) Как правильно считать имена пользователей БЕЗ ПОВТОРОВ, да и еще выбрать самые "свежие" даты захода? У меня мысль только одна - считывать логи начиная с самого свежего и добавлять имена в hashset (с которым я не умею работать), но как установить порядок считывания по дате - не знаю. Что я пока сделал (да практически ничего):vb.net1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 Imports System Imports System.IO   Module Module1     Dim LogPath As String = "D:\Temp\logs"     Dim SettFile As String = "SettFile.txt"     Dim SettArr() As String     Dim Logs As New List(Of String)     Dim LastWrTime As String     Dim thisDate As Date = Today     Dim Date3Week As Date '3 недели назад       Sub Main()         ' считываем построчно файл SettFile.txt в массив         If My.Computer.FileSystem.FileExists(LogPath & SettFile) Then             SettArr = File.ReadAllLines(SettFile, System.Text.Encoding.Default)         End If         'получаем список файлов за предыдущие даты         For Each foundFile As String In My.Computer.FileSystem.GetFiles(LogPath, Microsoft.VisualBasic.FileIO.SearchOption.SearchAllSubDirectories, "SpaceEngineersDedicated*.log")             Dim fi As FileInfo = New FileInfo(foundFile)             If Date3Week < fi.LastWriteTime.Date And fi.LastWriteTime.Date < thisDate Then                 Logs.Add(foundFile)             End If         Next           Dim fis As FileInfo = New FileInfo(Logs(0))         MsgBox(fis.LastWriteTime.Date)         MsgBox(thisDate)       End Sub       'записываем файл SettFile.txt     Sub WriteSettFile(ByVal SetArr() As String)           File.WriteAllLines(SettFile, SetArr)       End Sub End ModuleМне, в принципе, нужны только подсказки - какими функциями воспользоваться, как организовать и т.п. Разберусь. Заранее благодарен.

  1. Количество меню верхнего уровня подсчитывается:vb.net1 count = MenuStrip1.Items.CountДопустим по щелчку на первом элементе верхнего уровня выпадает подменю. Как подсчитать количество членов(строк) выпавшего подменю? результатом того что на картинке должно быть число 4.

  1. Здравствуйте! Пытался почитать мануалы по работе с FileStream, но ничего не понятно. Возьмем пример:vb.net1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29    Dim pathSource As String = "c:\tests\source.txt" 'откуда читаем     Dim pathNew As String = "c:\tests\newfile.txt" 'куда потом пишем     Try         Using fsSource As FileStream = New FileStream(pathSource, _             FileMode.Open, FileAccess.Read) ' как я понял задаем для fsSource откуда и как читаем файл                 Dim bytes() As Byte = New Byte((fsSource.Length) - 1) {}  ' ???                 Dim numBytesToRead As Integer = CType(fsSource.Length,Integer) 'число байт для считывания                 Dim numBytesRead As Integer = 0 ' число считанных байтов                   While (numBytesToRead > 0) 'цикл - пока число байт, что нужно считать больше 0                     Dim n As Integer = fsSource.Read(bytes, numBytesRead, _                         numBytesToRead) ' видимо получаем количество считанных байт                     If (n = 0) Then ' когда конец файла - выходим из цикла                         Exit While                     End If                     numBytesRead = (numBytesRead + n)                     numBytesToRead = (numBytesToRead - n)                   End While             numBytesToRead = bytes.Length               Using fsNew As FileStream = New FileStream(pathNew, _                 FileMode.Create, FileAccess.Write) ' обозначаем для fsNew куда и как записывать                 fsNew.Write(bytes, 0, numBytesToRead) ' записываем в файл то, что прочитали             End Using         End Using     Catch ioEx As FileNotFoundException         Console.WriteLine(ioEx.Message)     End TryОтсюда вопросы: 1)что такое? vb.net1 Dim bytes() As Byte = New Byte((fsSource.Length) - 1) {}2)как, к примеру считать файл не с начала, а с конца? 3)как вывести, например, в textbox то, что я считал?

  1. ВОПРОС ТАКОЙ:У меня есть программа которая считывает из текстового поля информацию и вносит её в лист бокс и так же есть кнопка которая сохраняет данные из лист бокса в тхт файл и при загрузке формы данные из тхт документа загружаются в лист бокс.Но если вносишь новые данные и нажимаешь кнопку сохранить то данные которые были дублируются не подскажете как этого исправить.WindowsApplication11.rar

  1. Есть CheckedListBox1, заполняется он программно с листа эксель. После загрузки значение CheckedListBox1.CheckedItems.Count равно "0". Ставлю галочку на любом пункте - CheckedListBox1.CheckedItems.Count равен "1", снимаю галочку = равен "1", опять ставлю = равен "0". В итоге получается так - ставлю галку = 0, снимаю галку = 1 И как он считает ?