ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

Π‘Ρ…Π΅ΠΌΠ° Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ΠΈ

Π Π΅Ρ„Π΅Ρ€Π°Ρ‚ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

G. drawLine ((int) (dataSet.getxEnd () * stepx + 85), (int) (indentText () + sign () * (dataSet.getY (0)) * stepy+(dataSet.getA ()>0? 10:-10)), (int) (dataSet.getxEnd () * stepx + 90), (int) (indentText () + sign () * (dataSet.getY (0)) * stepy+(dataSet.getA ()>0? 5:-15))); G. drawLine ((int) (dataSet.getxEnd () * stepx + 85), (int) (indentText () + sign () * (dataSet.getY (0… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Π‘Ρ…Π΅ΠΌΠ° Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ΠΈ (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

Рис. 2. Π‘Ρ…Π΅ΠΌΠ° Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ΠΈ

Рис. 3. Π‘Ρ…Π΅ΠΌΠ° Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ΠΈ

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ тСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

package main;

import dataSet. MethodDataSet;//класс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅.

import graph. Graph;//класс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ Π³Ρ€Π°Ρ„ΠΈΠΊ.

import java.awt.BorderLayout; //ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Ρ‹ раскладки.

import java.awt.Dimension;//класс инкапсулируСт ΡˆΠΈΡ€ΠΈΠ½Ρƒ ΠΈ Π²Ρ‹ΡΠΎΡ‚Ρƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°.

import java.awt.Font; //класс прСдставляСт ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹.

import java.awt.GridBagConstraints; //класс опрСдСляСт ограничСния для ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ‡Π°ΡŽΡ‚ΡΡ.

//GridBagLayout класс являСтся Π³ΠΈΠ±ΠΊΠΈΠΌ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ΠΎΠΌ ΠΏΠΎ Ρ€Π°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π΅Ρ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎ,.

import java.awt.GridBagLayout;// Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎ ΠΈΠ»ΠΈ вдоль ΠΈΡ… Π±Π°Π·ΠΎΠ²ΠΎΠΉ Π»ΠΈΠ½ΠΈΠΈ, Π½Π΅ Ρ‚рСбуя Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚ΠΎΡ‚ ΠΆΠ΅ самый Ρ€Π°Π·ΠΌΠ΅Ρ€.

import java.awt.Insets;//Insets ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ являСтся прСдставлСниСм Π³Ρ€Π°Π½ΠΈΡ† ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°.

import java.awt.event.ActionEvent; //Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ для событий, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π½Π°ΡŽΡ‚, ΠΊΠ°ΠΊ Π΄ΠΈΡΠΏΠ΅Ρ‚Ρ‡Π΅Ρ€ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сСбя.

import java.awt.event.ActionListener;//Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΡΠ»ΡƒΡˆΠ°Ρ‚Π΅Π»Ρ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ события дСйствия.

import java.math.BigDecimal;//НСизмСнная, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Π°Ρ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ подписанныС дСсятичныС числа.

//НСизмСнныС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΠΈΡ€ΡƒΡŽΡ‚ настройки контСкста, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°.

import java.math.MathContext;//для числовых ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ BigDecimal класс.

import java.math.RoundingMode;//ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ ΠΎΠΊΡ€ΡƒΠ³Π»ΡΡŽΡ‰Π΅Π΅ΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ для числовых ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, способных ΠΊ ΠΎΡ‚Π±Ρ€Π°ΡΡ‹Π²Π°Π½ΠΈΡŽ точности.

import java.util.Timer;//Π—Π°Π΄Π°Ρ‡Π°, которая ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½Π°.

import java.util.TimerTask;//для ΠΎΠ΄Π½ΠΎΡ€Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ выполнСния Π’Π°ΠΉΠΌΠ΅Ρ€ΠΎΠΌ.

import javax.swing.JButton;//РСализация ΠΊΠ½ΠΎΠΏΠΊΠΈ «Π½Π°ΠΆΠ°Ρ‚ия» .

import javax.swing.JFrame;//Π Π°ΡΡˆΠΈΡ€Π΅Π½Π½Π°Ρ вСрсия java.awt.Frame это добавляСт ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ JFC/Swing.

import javax.swing.JLabel;//ΠžΠ±Π»Π°ΡΡ‚ΡŒ дисплСя для ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠΉ тСкстовой строки ΠΈΠ»ΠΈ изобраТСния, ΠΈΠ»ΠΈ ΠΎΠ±ΠΎΠΈΡ….

//JOptionPane ΠΎΠ±Π»Π΅Π³Ρ‡Π°Π΅Ρ‚ Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒΡΡ стандартноС Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ сообщаСт ΠΈΠΌ ΠΎ Ρ‡Π΅ΠΌ-Ρ‚ΠΎ.

import javax.swing.JOptionPane;

import javax.swing.JPanel;//JPanel ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π»Π΅Π³ΠΊΠΈΠΉ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€.

import javax.swing.JTextField;//JTextField Π»Π΅Π³ΠΊΠΈΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠΉ строки тСкста.

/**.

  • * Π€Ρ€Π΅ΠΉΠΌ для добавлСния, измСнСния Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ†Π²Π΅Ρ‚Π° Π»ΠΈΠ½ΠΈΠΈ, Ρ†Π²Π΅Ρ‚Π° Π·Π°Π»ΠΈΠ²ΠΊΠΈ.
  • */

public class MainFrame extends JFrame {.

// ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€

// (Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ — ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΏΠ°Π½Π΅Π»ΠΈ):

public MainFrame (int w, int h) {.

//Π Π΅ΠΆΠΈΠΌ Π·Π°ΠΏΡ€Π΅Ρ‚Π° измСнСния Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² ΠΎΠΊΠ½Π°:

setPreferredSize (new Dimension (w, h));//Π·Π°Π΄Π°Π΅ΠΌΡ€Π°Π·ΠΌΠ΅Ρ€Ρ‹.

//инициализируСмклассданных.

dataSet = newMethodDataSet ();

// ΡΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π³Π»Π°Π²Π½ΡƒΡŽ панСль.

mainPanel = new JPanel ();

mainPanel.setLayout (new BorderLayout ());//располоТСниСокон.

//РасставляСм ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΏΠΎ ΠΌΠ΅ΡΡ‚Π°ΠΌ.

//панСль Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°.

header = new JPanel ();

header.setLayout (null);//располоТСниСокон.

header.setPreferredSize (new Dimension (w, 260));

createHeader (w, h);//ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅ΠΌ Π² ΠΏΠ°Π½Π΅Π»ΡŒ Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° тСкстовыС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, мСню.

// ΡΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π¦Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΡƒΡŽ панСль.

content = new JPanel ();

content.setLayout (new GridBagLayout ());//располоТСниСокон.

createContent ();//ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅ΠΌ Π² Π¦Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΡƒΡŽ панСль тСкстовыС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ для Π²Π²ΠΎΠ΄Π°Π΄Π°Π½Π½Ρ‹Ρ….

// ΡΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ footer панСль.

footer = new JPanel ();

footer.setLayout (new GridBagLayout ());//располоТСниСокон.

footer.setPreferredSize (new Dimension (w, 80));

createFooter ();//ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅ΠΌ Π² Π½ΠΈΠΆΠ½ΡŽΡŽ панСль ΠΊΠ½ΠΎΠΏΠΊΠΈ.

//добавляСм ΠΏΠ°Π½Π΅Π»ΠΈ Π² Π³Π»Π°Π²Π½ΡƒΡŽ панСль.

mainPanel.add (header, BorderLayout. PAGE_START);//Π²Π΅Ρ€Ρ…Π½ΡΡΠΎΠ±Π»Π°ΡΡ‚ΡŒΠΏΠ°Π½Π΅Π»ΠΈ.

mainPanel.add (content, BorderLayout. CENTER);//Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½Π°ΡΠΎΠ±Π»Π°ΡΡ‚ΡŒΠΏΠ°Π½Π΅Π»ΠΈ.

mainPanel.add (footer, BorderLayout. PAGE_END);//Π½ΠΈΠ·ΠΏΠ°Π½Π΅Π»ΠΈ.

getContentPane ().add (mainPanel);

pack ();//измСняСт Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΎΠΊΠ½Π°, принимая Π²ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ Π΅Π³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ².

}.

//ΠœΠ΅Ρ‚ΠΎΠ΄ добавляСт ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π² ΠΏΠ°Π½Π΅Π»ΡŒ Header.

//ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ для располоТСния ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ².

private void createHeader (int w, int h) {.

//ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΏΠ°Π½Π΅Π»ΠΈ Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°.

integrals = new JLabel[6]; //Массив тСкстовых ΠΌΠ΅Ρ‚ΠΎΠΊ для Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Π»Π°.

//topLabel — тСкстовая ΠΌΠ΅Ρ‚ΠΊΠ° Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

topLabel = new JLabel («Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Π΄Π°Π½Π½Ρ‹Π΅ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ произвСсти графичСскиС ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Π­ΠΉΠ»Π΅Ρ€Π° «);

/*.

  • *setBounds (int x, int y, int width, int height)
  • *ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΡ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ этого ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°. НовоС располоТСниС Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ Π»Π΅Π²ΠΎΠ³ΠΎ ΡƒΠ³Π»Π°
  • *опрСдСляСтся x ΠΈ y, ΠΈ Π½ΠΎΠ²Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ опрСдСляСтся width ΠΈ height.
  • *x — новая x-ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π° этого ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°
  • *y — новая y-ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π° этого ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°
  • *width — Π½ΠΎΠ²ΠΎΠ΅ width ΠΈΠ· ΡΡ‚ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°
  • *height — Π½ΠΎΠ²ΠΎΠ΅ height ΠΈΠ· ΡΡ‚ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°
  • */

topLabel.setBounds (w / 6, 20, 400, 40);

header.add (topLabel);

// Π—Π°Π΄Π°Π΅ΠΌ тСкстовыС ΠΌΠ΅Ρ‚ΠΊΠΈ:

integrals[0] = new JLabel («?»);//созаСм Π½ΠΎΠ²ΡƒΡŽ тСкст ΠΌΠ΅Ρ‚ΠΊΡƒ ?

integrals[0]. setFont (new Font («AriΠ°l», Font. BOLD, 60));//ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌΡˆΡ€ΠΈΡ„Ρ‚.

integrals[0]. setBounds (w / 3 — 40, 90, 40, 64);//устанавливаСмрасполоТСниС.

header.add (integrals[0]);//Π΄ΠΎΠ±ΠΎΠ²Π»ΡΠ΅ΠΌΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π²ΠΏΠ°Π½Π΅Π»ΡŒ Header.

integrals[1] = new JLabel («x1»);//созаСм Π½ΠΎΠ²ΡƒΡŽ тСкст ΠΌΠ΅Ρ‚ΠΊΡƒ Ρ…1.

integrals[1]. setBounds (w / 3 — 25, 66, 55, 40);//устанавливаСм располоТСниС.

integrals[2] = new JLabel («x2»);//созаСм Π½ΠΎΠ²ΡƒΡŽ тСкст ΠΌΠ΅Ρ‚ΠΊΡƒ Ρ…2.

integrals[2]. setBounds (w / 3 — 40, 148, 55, 40);//устанавливаСм располоТСниС.

integrals[3] = new JLabel («1.25»);//созаСм Π½ΠΎΠ²ΡƒΡŽ тСкст ΠΌΠ΅Ρ‚ΠΊΡƒ Π°*ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ экспонСнты.

integrals[3]. setBounds (w / 3 — 10, 115, 160, 24);//устанавливаСм располоТСниС.

integrals[4] = new JLabel («(1 — e)»);//созаСм Π½ΠΎΠ²ΡƒΡŽ тСкст ΠΌΠ΅Ρ‚ΠΊΡƒ.

integrals[4]. setBounds (w / 3 + 34, 115, 160, 24);//устанавливаСм располоТСниС.

integrals[5] = new JLabel («0.8x»);//созаСм Π½ΠΎΠ²ΡƒΡŽ тСкст ΠΌΠ΅Ρ‚ΠΊΡƒ.

integrals[5]. setBounds (w / 3 + 80, 108, 140, 24);//устанавливаСм располоТСниС.

integrals[5]. setFont (new Font («AriΠ°l», Font. ITALIC, 10));//устанавливаСм ΡˆΡ€ΠΈΡ„Ρ‚.

header.add (integrals[5]);//добовляСм ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π² ΠΏΠ°Π½Π΅Π»ΡŒ Header.

for (int i = 1; i < 5; i++) {.

integrals[i]. setFont (new Font («AriΠ°l», Font. ITALIC, 20));//ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌΡˆΡ€ΠΈΡ„Ρ‚.

header.add (integrals[i]);//Π΄ΠΎΠ±ΠΎΠ²Π»ΡΠ΅ΠΌΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹Π²ΠΏΠ°Π½Π΅Π»ΡŒ Header.

}.

}.

//ΠΌΠ΅Ρ‚ΠΎΠ΄ для добавлСния ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π² ΠΏΠ°Π½Π΅Π»ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… (content).

private void createContent () {.

// ВСкстовоС ΠΏΠΎΠ»Π΅ для Π²Π²ΠΎΠ΄Π° Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π°:

//Массив ΠΌΠ΅Ρ‚ΠΎΠΊ:

inputLabel = new JLabel[6];

inputLabel[0] = new JLabel («ΠžΠ±Π»Π°ΡΡ‚ΡŒ опрСдСлСния Ρ… = 0 Π΄ΠΎ Ρ… = «, JLabel. RIGHT);

inputLabel[1] = new JLabel («ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, Π° = «, JLabel. RIGHT);

inputLabel[2] = new JLabel («Π˜Π½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ ΠΎΡ‚ Ρ…1 = «, JLabel. RIGHT);

inputLabel[3] = new JLabel («Π΄ΠΎΡ…n = «, JLabel. RIGHT);

inputLabel[4] = new JLabel («Ρƒ2 = «, JLabel. RIGHT);

inputLabel[5] = new JLabel («Π’ычислСнныйинтСграл = «, JLabel. RIGHT);

//ΠœΠ°ΡΡΠΈΠ²Ρ‚Π΅ΠΊΡΡ‚ΠΎΠ²ΠΎΠ³ΠΎΠΏΠΎΠ»Ρ:

inputText = newJTextField[10];

// ВСкстовоС ΠΏΠΎΠ»Π΅ для Π²Π²ΠΎΠ΄Π° Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π°:

inputText[0] = new JTextField («5», 12);//ΠΎΠ±Π»Π°ΡΡ‚ΡŒ опрСдСлСния Ρ…=0, Π΄ΠΎ Ρ…=.

inputText[1] = new JTextField («-3», 12);//ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°.

inputText[2] = new JTextField («1», 12);//xStart.

inputText[3] = new JTextField («3», 12);//xEnd.

inputText[4] = new JTextField («2», 12);//Ρƒ2.

inputText[5] = new JTextField (12);//ВычислСнныйинтСграл.

inputText[5]. setEditable (false);

//добавляСм ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π² ΠΏΠ°Π½Π΅Π»ΡŒ Π’Π²ΠΎΠ΄Π° Π΄Π°Π½Π½Ρ‹Ρ… (content).

for (int i = 0; i < 6; i++) {.

content.add (inputLabel[i], new GBC (0, i).setAnchor (GBC.FIRST_LINE_END).setWeight (450, 35));

content.add (inputText[i], new GBC (1, i).setAnchor (GBC.FIRST_LINE_START).setWeight (250, 35));

}.

}.

//ΠΌΠ΅Ρ‚ΠΎΠ΄ для добавлСния ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π² Π½ΠΈΠΆΠ½ΡŽΡŽ панСль.

private void createFooter () {.

//АвторпроСкта.

authorLabel = new JLabel («Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»: Π‘Π°Π»ΠΈΡ…ΠΎΠ²Π˜.Π’.»);

//Кнопка «ΠΠ°Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ» .

paintButton = new JButton («ΠΠ°Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ»);

paintButton.addActionListener (new ActionListener () {.

// ΠœΠ΅Ρ‚ΠΎΠ΄Π΄Π»ΡΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈΡ‰Π΅Π»Ρ‡ΠΊΠ°Π½Π°ΠΊΠ½ΠΎΠΏΠΊΠ΅:

public void actionPerformed (ActionEvent event) {.

// РСакция Π½Π° Ρ‰Π΅Π»Ρ‡ΠΎΠΊ.

updateLabel ();

if (mark == true) {//Ссли Π΄Π°Π½Π½Ρ‹Π΅ Π²Π΅Ρ€Π½Ρ‹Π΅.

// Π‘oΠ·Π΄Π°Π½ΠΈΠ΅ΠΎΠΊΠ½Π°Π³Ρ€Π°Ρ„ΠΈΠΊΠ°:

Graph gr = new Graph (dataSet);

//устанавливаСм Π€Π»Π°ΠΆΠΎΠΊ.

gr.setMark (true);

// ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΠΎΠΊΠ½ΠΎ.

gr.setVisible (true);

mark = false;

}.

}.

});

//Кнопка «ΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ» .

clearButton = new JButton («ΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ»);

clearButton.addActionListener (new ActionListener () {.

// ΠœΠ΅Ρ‚ΠΎΠ΄Π΄Π»ΡΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈΡ‰Π΅Π»Ρ‡ΠΊΠ°Π½Π°ΠΊΠ½ΠΎΠΏΠΊΠ΅:

public void actionPerformed (ActionEvent event) {.

// РСакция Π½Π° Ρ‰Π΅Π»Ρ‡ΠΎΠΊ.

cleanLabel ();

}.

});

//Кнопка «Π’Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒ» .

mathButton = newJButton («Π’Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ»);

mathButton.addActionListener (newActionListener () {.

// ΠœΠ΅Ρ‚ΠΎΠ΄ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ‰Π΅Π»Ρ‡ΠΊΠ° Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅:

public void actionPerformed (ActionEvent event) {.

// РСакция Π½Π° Ρ‰Π΅Π»Ρ‡ΠΎΠΊ.

updateLabel ();//обновляСм Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Π»Π°.

if (mark == true) {//Ссли Π΄Π°Π½Π½Ρ‹Π΅ Π²Π΅Ρ€Π½Ρ‹Π΅.

dataSet.setSum ();//ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Π»Π°.

inputText[5]. setText (Double.toString (dataSet.getSum ()));//обновляСм тСкст ΠΏΠΎΠ»Π΅ ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

mark = false;

}.

}.

});

//ДобовляСм ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π² ΠΏΠ°Π½Π΅Π»ΡŒ footer.

footer.add (authorLabel, new GBC (0, 0).setAnchor (GBC.LINE_START).setWeight (250, 30).setInsets (10));

footer.add (paintButton, new GBC (1, 0).setAnchor (GBC.LINE_END).setWeight (250, 30).setInsets (10));

footer.add (mathButton, new GBC (2, 0).setAnchor (GBC.LINE_END).setWeight (250, 30).setInsets (10));

footer.add (clearButton, new GBC (3, 0).setAnchor (GBC.LINE_START).setWeight (250, 30).setInsets (10));

}.

//мСтодочисткиВСкстовыхмСток.

privatevoidcleanLabel () {.

//УстанавливаСм Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ тСкст ΠΌΠ΅Ρ‚ΠΎΠΊ null.

inputText[0]. setText (««);

inputText[1]. setText (««);

inputText[2]. setText (««);

inputText[3]. setText (««);

inputText[4]. setText (««);

inputText[5]. setText (««);

}.

//Π’Π²ΠΎΠ΄Π΄Π°Π½Π½Ρ‹Ρ…ΠΈΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌΠ΅Ρ‚ΠΎΠΊ.

private void updateLabel () {.

// ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅.

String xEnd = inputText[0]. getText ();

String a = inputText[1]. getText ();

String startBy = inputText[2]. getText ();

String finishBy = inputText[3]. getText ();

String y2 = inputText[4]. getText ();

if (isUserAGoat < 5) {//Ссли ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Π²Π΅Π» Π½Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ 5Ρ€Π°Π· Π΄Π°Π½Π½Ρ‹Π΅, Ρ‚ΠΎ Π½Π° 5сСк блокируСтся ΠΊΠ½ΠΎΠΏΠΊΠ°.

try {.

dataSet.setxEnd (parserToDouble (xEnd)).setFinishBy (parserToDouble (finishBy)).setStartBy (parserToDouble (startBy)).setY2(parserToDouble (y2)).setA (parserToDouble (a));

//Ссли условиС Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ΅Ρ‚ся Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ ошибка.

if (!(dataSet.getY2() > -50 && dataSet. getY2() < 50)) {.

isUserAGoat++;

JOptionPane.showMessageDialog (null, «ΠžΠ±Π»Π°ΡΡ‚ΡŒΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡΠ΄ΠΎΠ»ΠΆΠ½Π°Π±Ρ‹Ρ‚ΡŒΠ±ΠΎΠ»ΡŒΡˆΠ΅Π½ΡƒΠ»Ρ ΠšΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΌΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅Π΄Π»Ρ y2 Π±ΡƒΠ΄Π΅Ρ‚Π΄ΠΈΠ°ΠΏΠΎΠ·ΠΎΠ½Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉΡ‚ -50 Π΄ΠΎ 50 ΠΎΡΡ‚Π°Π»ΠΎΡΡŒΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ: «+ (5 — isUserAGoat), «ΠžΡˆΠΈΠ±ΠΊΠ°», JOptionPane. WARNING_MESSAGE);

return;

//a1>0&&a1<1000.

} else if (dataSet.getA ()==0) {.

isUserAGoat++;

JOptionPane.showMessageDialog (null, «Π’Π²Π΅Π΄ΠΈΡ‚Π΅Π°Π±ΠΎΠ»ΡŒΡˆΠ΅ΠΈΠ»ΠΈΠΌΠ΅Π½ΡŒΡˆΠ΅ 0. ΠšΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΌΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅Π΄Π»ΡΠ°Π±ΡƒΠ΄Π΅Ρ‚Π΄ΠΈΠ°ΠΏΠΎΠ·ΠΎΠ½Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉΠΎΡ‚ -100 Π΄ΠΎ -1 ΠΎΡΡ‚Π°Π»ΠΎΡΡŒΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ:» + (5 — isUserAGoat), «ΠžΡˆΠΈΠ±ΠΊΠ°», JOptionPane. WARNING_MESSAGE);

return;

//if ((xx >= h)&&(xx<1000)){}.

}else if (!(dataSet.getA () > -100 && dataSet. getA () < 0)) {.

isUserAGoat++;

JOptionPane.showMessageDialog (null, «Π—адайтСкоррСктныйдиапазондопустимыхзначСнийдляа. ΠšΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΌΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅Π΄Π»ΡΠ°Π±ΡƒΠ΄Π΅Ρ‚Π΄ΠΈΠ°ΠΏΠΎΠ·ΠΎΠ½Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉΠΎΡ‚ -100 Π΄ΠΎ -1 ΠΎΡΡ‚Π°Π»ΠΎΡΡŒΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ:» + (5 — isUserAGoat), «ΠžΡˆΠΈΠ±ΠΊΠ°», JOptionPane. WARNING_MESSAGE);

return;

//if ((xx >= h)&&(xx<1000)){}.

}.

else if (!(dataSet.getxEnd () >= dataSet. getH () && dataSet. getxEnd () < 1000)) {.

isUserAGoat++;

JOptionPane.showMessageDialog (null, «Π—адайтСкоррСктныйдиапазондлях ΠšΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΌΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅Π΄Π»Ρ x Π±ΡƒΠ΄Π΅Ρ‚Π΄ΠΈΠ°ΠΏΠΎΠ·ΠΎΠ½Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉΠΎΡ‚ 0 Π΄ΠΎ 1000 ΠΎΡΡ‚Π°Π»ΠΎΡΡŒΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ:» + (5 — isUserAGoat), «ΠžΡˆΠΈΠ±ΠΊΠ°», JOptionPane. WARNING_MESSAGE);

return;

} /* ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°Π²Π²ΠΎΠ΄Π° x1.

//if ((x0_ xx)).

*/ else if (dataSet.getStartBy () dataSet. getxEnd ()) {.

isUserAGoat++;

JOptionPane.showMessageDialog (null, «Π˜Π½Ρ‚Π΅Ρ€Π²Π°Π» x1 Π΄ΠΎΠ»ΠΆΠ΅Π½Π±Ρ‹Ρ‚ΡŒΠ±ΠΎΠ»ΡŒΡˆΠ΅, Ρ‡Π΅ΠΌ «+ dataSet. getH () + «ΠΈΠΌΠ΅Π½ΡŒΡˆΠ΅ «+ dataSet. getFinishBy () + », ΠΎΡΡ‚Π°Π»ΠΎΡΡŒΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ: «+ (5 — isUserAGoat), «ΠžΡˆΠΈΠ±ΠΊΠ°», JOptionPane. WARNING_MESSAGE);

return;

} // ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°Π²Π²ΠΎΠ΄Π° xn.

// if ((x_end>x0_)&&(x_end<=xx)){}.

else if (!(dataSet.getFinishBy () > dataSet. getStartBy () && dataSet. getFinishBy () <= dataSet. getxEnd ())) {.

isUserAGoat++;

JOptionPane.showMessageDialog (null, «Π˜Π½Ρ‚Π΅Ρ€Π²Π°Π»Ρ…n Π΄ΠΎΠ»ΠΆΠ΅Π½Π±Ρ‹Ρ‚ΡŒΠ±ΠΎΠ»ΡŒΡˆΠ΅, Ρ‡Π΅ΠΌ «+ dataSet. getStartBy () + «ΠΈΠΌΠ΅Π½ΡŒΡˆΠ΅ «+ dataSet. getxEnd () + », ΠΎΡΡ‚Π°Π»ΠΎΡΡŒΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ: «+ (5 — isUserAGoat), «ΠžΡˆΠΈΠ±ΠΊΠ°», JOptionPane. WARNING_MESSAGE);

return;

}.

//обновляСмзначСниСтСкстовхмСток.

integrals[1]. setText (Double.toString (dataSet.getFinishBy ()));

integrals[2]. setText (Double.toString (dataSet.getStartBy ()));

integrals[3]. setText (new BigDecimal (dataSet.getA () / 0.8, new MathContext (4)).toString ());

mark = true;//Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Π΅Π΄Π°Π½Π½Ρ‹Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅.

dataSet.inizial ();////инициализацияданных.

} catch (NumberFormatExceptionΠ΅) {.

isUserAGoat++;

JOptionPane.showMessageDialog (null, «Π’вСдитСкоррСктныСзначСния (Ρ†ΠΈΡ„Ρ€Ρ‹) ΠΎΡΡ‚Π°Π»ΠΎΡΡŒΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ: «+ (5 — isUserAGoat), «ΠžΡˆΠΈΠ±ΠΊΠ°», JOptionPane. ERROR_MESSAGE);

return;

}.

} else {.

JOptionPane.showMessageDialog (null, «Π’Ρ‹Π²Π²Π΅Π»ΠΈΠ½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹Π΅Π΄Π°Π½Π½Ρ‹Π΅ 5 Ρ€Π°Π·, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Π±ΡƒΠ΄Π΅Ρ‚Π·Π°ΠΊΡ€Ρ‹Ρ‚Π°!», «ΠžΡˆΠΈΠ±ΠΊΠ°», JOptionPane. ERROR_MESSAGE);

System.exit (0);

}.

}.

/*.

  • *parserToDouble ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ тСкстовоС Π·Π½Π°Ρ‡Π΅Π½ΠΈ ΠΊ Ρ‚ΠΈΠΏ double, Π΄ΠΎ Ρ‚очности 0.1
  • */

private double parserToDouble (String text) {.

return new BigDecimal (Double.parseDouble (text)).setScale (1, RoundingMode. HALF_UP).doubleValue ();

}.

//ΠŸΠ°Π½Π΅Π»ΠΈΠ΄Π»ΡΡ‚Π΅ΠΊΡΡ‚ΠΎΠ²Ρ‹Ρ…ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², ΠΊΠ½ΠΎΠΏΠΎΠΊ.

private final JPanel mainPanel, footer, header, content;//Главная, боковая, Π»Π΅Π²Π°ΡΠΏΠ°Π½Π΅Π»ΡŒΡ„Ρ€Π΅ΠΉΠΌΠ°.

//ВСкстовыСмСтки.

private JLabel topLabel, authorLabel;

private JLabel[] integrals, inputLabel;

// ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΠΈΠΏΠ°Π½Π΅Π»ΠΈ:

private JTextField[] inputText; //тСхтполСдлявводаданных.

// КнопкипанСли:

private JButton paintButton, mathButton, clearButton; //кнопкидляпрорисовки, очисткипопосчСтаданных.

private int isUserAGoat = 0;// ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ.

//классданныхинтСграла.

private MethodDataSet dataSet;

private boolean mark = false;

}.

//GridBagConstraints классопрСдСляСтограничСниядлякомпонСнтов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅Ρ€Π°Π·ΠΌΠ΅Ρ‡Π°ΡŽΡ‚ΡΡ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ GridBagLayout класс.

class GBC extends GridBagConstraints {.

public GBC (int gridx, int gridy) {.

this.gridx = gridx;

this.gridy = gridy;

}.

public GBC setAnchor (int anchor) {.

this.anchor = anchor;

return this;

}.

public GBC setWeight (double weightx, double weighty) {.

this.weightx = weightx;

this.weighty = weighty;

return this;

}.

public GBC setInsets (int distance) {.

this.insets = new Insets (distance, distance, distance, distance);

return this;

}.

}.

package main;

import javax.swing.JFrame;// прСдставляСтсобойокно.

// Класс с Π³Π»Π°Π²Π½Ρ‹ΠΌ ΠΌΠ΅Ρ‚oΠ΄oΠΌ ΠΏΡ€oΠ³Ρ€Π°ΠΌΠΌΡ‹:

public class Main {.

public static void main (String[] args) {.

// Π‘oΠ·Π΄Π°Π½ΠΈΠ΅ΠΎΠΊΠ½Π°:

MainFrame main = new MainFrame (545, 500);//Π Π°Π·ΠΌΠ΅Ρ€ΠΎΠΊΠ½Π°.

main.setTitle («Π’ычислСниС ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Π»Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Π­ΠΉΠ»Π΅Ρ€Π°»);//Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΎΠΊΠ½Π°.

//это Π½ΡƒΠΆΠ½ΠΎ для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈ.

//Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ ΠΎΠΊΠ½Π° Π·Π°ΠΊΡ€Ρ‹Π²Π°Π»Π°ΡΡŒ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°,.

//ΠΈΠ½Π°Ρ‡Π΅ ΠΎΠ½Π° останСтся Π²ΠΈΡΠ΅Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ°Ρ….

main.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);

// ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΠΎΠΊΠ½ΠΎ.

main.setVisible (true);

main.setLocationRelativeTo (null);//располоТСниСокнапоцСнтру.

main.setResizable (false);//Π·Π°ΠΏΡ€Π΅Ρ‰Π°Π΅Ρ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΎΠΊΠ½ΠΎ прилоТСния.

}.

}.

packagegraph;

importdataSet.MethodDataSet;//классввСдСнныхданных.

import java.awt.BasicStroke;//Π¨Ρ‚Ρ€ΠΈΡ…ΠΎΠ²ΠΎΠΉ Π½Π°Π±ΠΎΡ€ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°.

import java.awt.Color;//Π¦Π²Π΅Ρ‚.

import java.awt.Dimension;//Dimension класс инкапсулируСт ΡˆΠΈΡ€ΠΈΠ½Ρƒ ΠΈ Π²Ρ‹ΡΠΎΡ‚Ρƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°.

importjava.awt.Graphics;//Π“Ρ€Π°Ρ„ΠΈΠΊΠ°.

importjava.awt.Graphics2D;//класс Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ΡΡ Graphics класс, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ слоТноС ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π³Π΅ΠΎΠΌΠ΅Ρ‚Ρ€ΠΈΠ΅ΠΉ, скоординируйтС прСобразования, ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ†Π²Π΅Ρ‚ΠΎΠΌ, ΠΈ Ρ‚СкстовоС располоТСниС.

importjava.awt.Toolkit;//ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ являСтся ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ AWT.

importjava.awt.event.ActionEvent; //Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ для событий, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π½Π°ΡŽΡ‚, ΠΊΠ°ΠΊ Π΄ΠΈΡΠΏΠ΅Ρ‚Ρ‡Π΅Ρ€ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сСбя.

importjava.awt.event.ActionListener;//Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΡΠ»ΡƒΡˆΠ°Ρ‚Π΅Π»Ρ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ события дСйствия.

importjava.awt.geom.GeneralPath;//GeneralPath класс прСдставляСт гСомСтричСский ΠΏΡƒΡ‚ΡŒ, созданный ΠΈΠ· ΠΏΡ€ΡΠΌΡ‹Ρ… Π»ΠΈΠ½ΠΈΠΉ, ΠΈ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹ΠΉ ΠΈ ΠΊΡƒΠ±ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ (BΠΉzier) ΠΊΡ€ΠΈΠ²Ρ‹Π΅.

importjava.math.BigDecimal;//НСизмСнная, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Π°Ρ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ подписанныС дСсятичныС числа.

importjava.math.RoundingMode;//ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ ΠΎΠΊΡ€ΡƒΠ³Π»ΡΡŽΡ‰Π΅Π΅ΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ для числовых ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, способных ΠΊ ΠΎΡ‚Π±Ρ€Π°ΡΡ‹Π²Π°Π½ΠΈΡŽ точности.

importjavax.swing.JButton;//РСализация ΠΊΠ½ΠΎΠΏΠΊΠΈ «Π½Π°ΠΆΠ°Ρ‚ия» .

importjavax.swing.JFrame;//Π Π°ΡΡˆΠΈΡ€Π΅Π½Π½Π°Ρ вСрсия java.awt.Frame это добавляСт ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ JFC/Swing.

importjavax.swing.JPanel;//JPanel ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π»Π΅Π³ΠΊΠΈΠΉ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€.Ρ‹.

// Класс Ρ„Ρ€Π΅ΠΉΠΌΠ°:

public class Graph extends JFrame {.

// ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ ΠΏΠ°Π½Π΅Π»ΠΈ.

// (Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ — Π΄Π°Π½Π½Ρ‹Π΅):

public Graph (MethodDataSet dataSet) {.

// ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° всСго экрана Π²Ρ‹Π·Π²Π°Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ Toolkit. getDefaultToolkit ().getScreenSize ().

Dimension sSize = Toolkit. getDefaultToolkit ().getScreenSize ();

//Π Π°Π·ΠΌΠ΅Ρ€ ΠΎΠΊΠ½Π°.

myWidth = (int) sSize. getWidth () — 280;

myHeight = (int) sSize. getHeight () — 160;

setSize (myWidth + 30, myHeight + 100);

//Π—ΠΎΠ³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΎΠΊΠ½Π°:

setTitle («Π“Ρ€Π°Ρ„ΠΈΠΊ y = f (x) Π½Π° ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΊΠ΅ [» + dataSet. getStartBy () + «;» + dataSet. getFinishBy () + «, a= «+ dataSet. getA () + «y20 = «+ dataSet. getY2());

//Π Π΅ΠΆΠΈΠΌ Π·Π°ΠΏΡ€Π΅Ρ‚Π° измСнСния Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² ΠΎΠΊΠ½Π°:

setResizable (false);

//РасполоТСниС ΠΎΠΊΠ½Π° ΠΏΠΎ Ρ†Π΅Π½Ρ‚Ρ€Ρƒ:

setLocationRelativeTo (null);

panel = new JPanel (null);

add (panel);// Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°Π½Π΅Π»ΠΈ Π² Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ.

this.dataSet = dataSet;

// БмСщСния.

dx = 10;//ΠΏΠΎ оси Ρ….

dy = 100;//ΠΏΠΎ оси Ρƒ.

//Кнопка Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ Π½Π°Π·Π°Π΄.

returnBack = newJButton («ΠΠ°Π·Π°Π΄»);

returnBack.setBounds (myWidth/2, myHeight+30, 100,20);//располоТСниС ΠΊΠ½ΠΎΠΏΠΊΠΈ.

panel.add (returnBack);//добавляСм ΠΊΠ½ΠΎΠΏΠΊΡƒ Π² ΠΏΠ°Π½Π΅Π»ΡŒ.

returnBack.addActionListener (newActionListener () {.

// ΠœΠ΅Ρ‚ΠΎΠ΄ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ‰Π΅Π»Ρ‡ΠΊΠ° Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅:

public void actionPerformed (ActionEvent event) {.

setVisible (false);//Π·Π°ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Ρ„Ρ€Π΅ΠΉΠΌ.

}.

});

}.

// ΠœΠ΅Ρ‚ΠΎΠ΄ отрисовки Π³Ρ€Π°Ρ„ΠΈΠΊΠ°.

@Override.

public void paint (Graphics gr) {.

super.paint (gr);

Graphics2D g = (Graphics2D) gr;

//Π‘Ρ‚Ρ€ΠΎΠΈΠΌ Π³Ρ€Π°Ρ„ΠΈΠΊ.

doublex = 0;

// Π’ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, для ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ Π³Ρ€Π°Ρ„ΠΈΠΊΠ°.

double ampx = dataSet. getxEnd ();

double ampy;

if (dataSet.getA () > 0) {.

ampy = Min ();

} else {.

ampy = Max ();

}.

// ВычисляСм коэффициСнт ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ.

stepx = (myWidth — 90) / ampx;//коэф Ρ….

stepy = (myHeight — 80) / ampy;//коэф Ρƒ.

//ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ Π³Ρ€Π°Ρ„ΠΈΠΊΠ° Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

//ΠΏΠ»ΠΎΡ‰Π°Π΄ΡŒ.

GeneralPath square = new GeneralPath ();//создаСтся пустой ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса GeneralPath.

g.setColor (Color.YELLOW);//устанавливаСм Ρ†Π²Π΅Ρ‚.

drawSquare (square);//вычисляСм ΠΎΠ±Π»Π°ΡΡ‚ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΊΡ€Π°ΡΠΈΡ‚ΡŒ.

g.fill (square);//Π·Π°ΠΊΡ€Ρ‹ΡˆΠΈΠ²Π°Π΅ΠΌ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ.

g.draw (square);//рисуСм Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ.

GeneralPath graph = new GeneralPath ();//создаСтся пустой ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса GeneralPath.

g.setColor (Color.BLUE);//устанавливаСтся Ρ†Π²Π΅Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ.

drawToGraph (graph);//Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ для прорисовки Π³Ρ€Π°Ρ„ΠΈΠΊΠ°.

g.setStroke (newBasicStroke (3.0f));//устанавливаСм Ρ‚ΠΎΠ»Ρ‰ΠΈΠ½Ρƒ Π»ΠΈΠ½Π½ΠΈ 3.

g.draw (graph);//рисуСм Π½Π° Ρ„Ρ€Π΅ΠΉΠΌΠ΅ Π³Ρ€Π°Ρ„ΠΈΠΊ.

//сСтку ΠΈ ΡΠ°ΠΌ Π³Ρ€Π°Ρ„ΠΈΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

GeneralPathpath = newGeneralPath ();//ΡΠΎΠ·Π΄Π°Π΅Ρ‚ΡΡΠΏΡƒΡΡ‚ΠΎΠΉΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΊΠ»Π°ΡΡΠ°GeneralPath.

g.setColor (Color.BLACK);//устанавливаСм Ρ‡Π΅Ρ€Π½Ρ‹ΠΉ Ρ†Π²Π΅Ρ‚.

g.setStroke (newBasicStroke (1.0f));//устанавливаСтся Ρ‚ΠΎΠ»Ρ‰ΠΈΠ½Π° 1.

//сСтка.

if (mark == true) {//провСряСм, Π²Ρ‹Π±Ρ€Π°Π½ chekbox.

//Если Π²Ρ‹Π±Ρ€Π°Π½ Ρ‚ΠΎ.

drawGridΠ₯ (path, dataSet. getxEnd (), 10);//Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ прорисовки Π»ΠΈΠ½ΠΈΠΉ ΠΏΠΎ ΠΎΡΠΈ Ρ….

if (dataSet.getA () > 0) {//ΠΈ для «Ρƒ» Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ прорисовки ΠΏΠΎ Ρƒ.

drawGridY (path, g, Min (), 10);//для Π°>0 Π½Π°Ρ…ΠΎΠ΄ΠΈΠΌ ΠΌΠΈΠ½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

} else {.

drawGridY (path, g, Max (), 10);//ΠΈΠ½Π°Ρ‡Π΅ ΠΌΠ°Ρ….

}.

}.

//линия оси Ρƒ.

path.moveTo (60, indent ());//ΠŸΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ Π²Π΅Ρ€ΡˆΠΈΠ½Ρƒ.

path.lineTo (60, indent () + sign () *dataSet.getYN ()*stepy);//ΠŸΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌ Ρ‚ΠΎΡ‡ΠΊΡƒ Π² ΠΊΠΎΠ½Π΅Ρ† Π»ΠΈΠ½ΠΈΠΈ.

//линия оси Ρ….

path.moveTo (60, indent () + sign () * dataSet. getY (0)*stepy);//ΠŸΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ Π²Π΅Ρ€ΡˆΠΈΠ½Ρƒ.

path.lineTo (dataSet.getxEnd ()*stepx+90, indent () + sign () * dataSet. getY (0)*stepy);//ΠŸΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌ Ρ‚ΠΎΡ‡ΠΊΡƒ Π² ΠΊΠΎΠ½Π΅Ρ† Π»ΠΈΠ½ΠΈΠΈ.

g.draw (path);//рисуСм эти Π»ΠΈΠ½ΠΈΠΈ.

//Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° «ΠΏΠΎΠ΄ΠΏΠΈΡΡŒ осСй ΠΏΠΎ Ρ…» .

scaleX (g, dataSet. getxEnd (), 10);

//Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° «ΠΏΠΎΠ΄ΠΏΠΈΡΡŒ осСй ΠΏΠΎ Ρƒ» .

if (dataSet.getA () > 0) {//Ссли Π°>0, Ρ‚ΠΎ Π½Π°Ρ…ΠΎΠ΄ΠΈΠΌ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΈ Π΄Π»Ρ Π½Π΅Π³ΠΎ считаСм.

scaleY (g, Min (), 10);

} else {//ΠΈΠ½Π°Ρ‡Π΅ ΠΌΠ°Ρ….

scaleY (g, Max (), 10);

}.

//ΠŸΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°Π΅ΠΌ ось Ρ….

g.drawString («Ρ…», (int) (dataSet.getxEnd ()*stepx + 85), (int) (indentText () + sign () * (dataSet.getY (0)) * stepy));

//стрСлки для оси Ρ….

g.drawLine ((int) (dataSet.getxEnd () * stepx + 85), (int) (indentText () + sign () * (dataSet.getY (0)) * stepy+(dataSet.getA ()>0? 0:-20)), (int) (dataSet.getxEnd () * stepx + 90), (int) (indentText () + sign () * (dataSet.getY (0)) * stepy+(dataSet.getA ()>0? 5:-15)));

g.drawLine ((int) (dataSet.getxEnd () * stepx + 85), (int) (indentText () + sign () * (dataSet.getY (0)) * stepy+(dataSet.getA ()>0? 10:-10)), (int) (dataSet.getxEnd () * stepx + 90), (int) (indentText () + sign () * (dataSet.getY (0)) * stepy+(dataSet.getA ()>0? 5:-15)));

//ΠŸΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°Π΅ΠΌ ось Ρƒ.

g.drawString («Ρƒ», (int) (45), (int) ((dataSet.getA ()>0)?130+dataSet.getYN () * stepy :90+ dataSet. getY (0)*stepy));

//стрСлки ось Ρƒ.

g.drawLine ((int) (60), (int) ((dataSet.getA ()>0)?90+dataSet.getYN () * stepy :200+ dataSet. getY (0)*stepy), (int) (60), (int) ((dataSet.getA ()>0)?130+dataSet.getYN () * stepy :80+ dataSet. getY (0)*stepy));

g.drawLine ((int) (60), (int) ((dataSet.getA ()>0)?130+dataSet.getYN () * stepy :80+ dataSet. getY (0)*stepy), (int) (55), (int) ((dataSet.getA ()>0)?125+dataSet.getYN () * stepy :85+ dataSet. getY (0)*stepy));

g.drawLine ((int) (60), (int) ((dataSet.getA ()>0)?130+dataSet.getYN () * stepy :80+ dataSet. getY (0)*stepy), (int) (65), (int) ((dataSet.getA ()>0)?125+dataSet.getYN () * stepy :85+ dataSet. getY (0)*stepy));

//Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Π½Π°Ρ‡Π°Π»ΠΎ оси.

g.drawString («0.0», (int) (40), (int) (indentText () + sign () * (dataSet.getY (0)) * stepy));

//ΠŸΠ»ΠΎΡ‰Π°Π΄ΡŒ.

g.drawString («- ΠŸΠ»ΠΎΡ‰Π°Π΄ΡŒ S», dx+65,dy-30);// ΠžΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ»ΠΎΡ‰Π°Π΄ΠΈ.

//устанавливаСм Ρ†Π²Π΅Ρ‚ S.

g.setColor (Color.YELLOW);

g.setStroke (new BasicStroke (5.0f));///Ρ‚ΠΎΠ»Ρ‰ΠΈΠ½Π° Π»ΠΈΠ½ΠΈΠΈ 5.

g.drawLine (dx+30, dy-35,dx+60, dy-35);//линия ΠΏΠ»ΠΎΡ‰Π°Π΄ΠΈ.

}.

/**ΠŸΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°Π΅ΠΌ ox.

  • * @paramg создаётся систСмой, Π° ΠΌΡ‹ Π±Π΅Ρ€Ρ‘ΠΌ Π΅Π³ΠΎ Π² Π³ΠΎΡ‚ΠΎΠ²ΠΎΠΌ Π²ΠΈΠ΄Π΅ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ для рисования
  • * @paramvalue — ΠΌΠ°Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
  • * @paramcount — Ρ‡ΠΈΠ»ΠΎ ΠΎΡ‚Ρ€Π΅Π·ΠΊΠΎΠ²
  • */

public void scaleX (Graphics g, double value, int count) {.

double variable = value / count; //пСрСмСнная шага.

for (int i = 1; i <= count; i++) {.

g.drawString (Double.toString (new BigDecimal (variable).setScale (1, RoundingMode. HALF_UP).doubleValue ()), (int) (variable * stepx + 50), (int) (indentText () + sign () * (dataSet.getY (0)) * stepy));

variable += value / count;//ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ шаг.

}.

}.

/**ΠŸΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°Π΅ΠΌ oy.

  • * @paramgсоздаётся систСмой
  • * @paramcount — ΠΌΠΈΠ½ ΠΈΠ»ΠΈ ΠΌΠ°Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
  • * @param value — Ρ‡ΠΈΠ»ΠΎ ΠΎΡ‚Ρ€Π΅Π·ΠΊΠΎΠ²
  • */

public void scaleY (Graphics g, double value, int count) {.

double variable = value / count;

for (int i = 1; i <= count; i++) {.

g.drawString (Double.toString (new BigDecimal (variable).setScale (1, RoundingMode. HALF_UP).doubleValue ()), (int) 23, (int) (indent () + sign () * variable * stepy));

variable += value / count;

}.

}.

/*GeneralPath.

  • *@path — класс для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΊΡ€ΠΈΠ²Ρ‹ΠΌΠΈ
  • *@moveTo — установка ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΠΏΠ΅Ρ€Π²ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ
  • *@lineTo — постороСниС ΠΊΠΎΠ½Ρ‚ΡƒΡ€Π°, ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ слСд ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹
  • *@closePath — Π·Π°ΠΌΡ‹ΠΊΠ°Π΅Ρ‚ ΠΊΡ€ΠΈΠ²ΡƒΡŽ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ линию Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΊ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅ ΠΊΠΎΠ½Ρ‚ΡƒΡ€Π° ΠΊΡ€ΠΈΠ²ΠΎΠΉ
  • */

/*.

  • *moveToGraph ()
  • *рисуСт Π³Ρ€Π°Ρ„ΠΈΠΊ */

public GeneralPath drawToGraph (GeneralPath path) {.

path.moveTo (dx + 50, indent () + sign () * (dataSet.getY (0)) * stepy);

for (int i = 1; i <= dataSet. getNx (); i++) {.

x = dataSet. getH () * i;

path.lineTo (dx + x * stepx + 50, indent () + sign () * (dataSet.getY (i)) * stepy);

}.

returnpath;

}.

/*Π’Ρ‹Π²ΠΎΠ΄ΠΈΠΌ сСтку*/.

//рисуСт сСтку ΠΏΠΎ ΠΎΡΠΈ Ρƒ.

public GeneralPath drawGridY (GeneralPath path, Graphics2D g, double value, int count) {.

double variable = value / count;

for (int i = 1; i <= count; i++) {.

path.moveTo (60, (indent () + sign () * variable * stepy));

path.lineTo (60 + dataSet. getxEnd () * stepx, (indent () + sign () * variable * stepy));

variable += value / count;

}.

return path;

}.

public GeneralPath drawGridΠ₯ (GeneralPath path, double value, int count) {.

double variable = value / count;

for (int i = 0; i < 11; i++) {.

path.moveTo (variable * stepx + 60, indent () + sign () * (dataSet.getY (0)) * stepy);

path.lineTo (variable * stepx + 60, indent () + sign () * (dataSet.getYN ()) * stepy);

variable += value / count;

}.

return path;

}.

/*Π—Π°ΠΊΡ€Π°ΡˆΠΈΠ²Π°Π΅ΠΌ ΠΏΠ»ΠΎΡ‰Π°Π΄ΡŒ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹*/.

public GeneralPath drawSquare (GeneralPath path) {.

//ΡˆΡ‚Ρ€ΠΈΡ…ΠΎΠ²ΠΊΠ° Π²Π½ΠΈΡ‚Ρ€ΠΈ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹.

path.moveTo (dx + dataSet. getStartBy () * stepx + 50, indent () + sign () * (dataSet.getY (0)) * stepy);

for (int i = dataSet. getIntStartBy (); i <= dataSet. getNs (); i++) {.

x = i * dataSet. getH ();

path.lineTo (dx + x * stepx + 50, indent () + sign () * (dataSet.getY (i)) * stepy);

}.

path.lineTo (dx + dataSet. getFinishBy () * stepx + 50, indent () + sign () * (dataSet.getY (0)) * stepy);

path.closePath ();

returnpath;

}.

//Π·Π½Π°ΠΊ для установки Π½Π°Ρ‡Π°Π»Π° оси ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚.

public double sign () {.

if (dataSet.getA () < 0) {.

return -1;

}.

return 1;

}.

//отступ для Π½Π°Ρ‡Π°Π»ΠΎ оси ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚.

publicdoubleindent () {.

if (dataSet.getA () < 0) {.

return myHeight + 30;

}.

returndy + 10;

}.

//отступначалоподписиосикоординат.

public double indentText () {.

if (dataSet.getA () < 0) {.

return myHeight + 45;

}.

return dy + 5;

}.

//Π½Π°Ρ…ΠΎΠ΄ΠΈΠΌ ΠΌΠΈΠ½ значСния.

private double Min () {.

double min = dataSet. getY (0);

for (int i = 1; i <= dataSet. getNx (); i++) {.

if (dataSet.getY (i) < min) {.

min = dataSet. getY (i);

}.

}.

return min;

}.

//Π½Π°Ρ…ΠΎΠ΄ΠΈΠΌ ΠΌax значСния.

private double Max () {.

double max = dataSet. getY (0);

for (int i = 1; i <= dataSet. getNx (); i++) {.

if (dataSet.getY (i) > max) {.

max = dataSet. getY (i);

}.

}.

return max;

}.

//Π‘Π΅Ρ‚ΠΊΠ°.

public Graph setMark (boolean mark) {.

this.mark = mark;

return this;

}.

private int myWidth, myHeight;

private MethodDataSet dataSet;

// ΠžΡ‚ΡΡ‚ΡƒΠΏΠΎΡ‚ΠΊΡ€Π°Π΅Π²ΠΎΠΊΠ½Π°.

privateintdx, dy;

privatedoublex=0;

// Π¨Π°Π³ΠΈ ΠΏΠΎ ΠΎΡΡΠΌ ΠΏΡ€ΠΈ рисовании.

// Π“Ρ€Π°Π½ΠΈΡ†Ρ‹ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° измСнСния ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚:

privatedoublestepx;

privatedoublestepy;

// БостояниС Ρ„Π»Π°ΠΆΠΊΠ° Π²Ρ‹Π²ΠΎΠ΄Π° сСтки:

privatebooleanmark = true;

//ΠΊΠ½ΠΎΠΏΠΊΠ° для Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π°.

private JButton returnBack;

//ПанСль для Π³Ρ€Π°Ρ„ΠΈΠΊΠ°.

private JPanel panel;

}.

package dataSet;

//класс ΠΌΠ΅Ρ‚ΠΎΠ΄Π°.

public class Method {.

private MethodDataSet data;//класс Π΄Π°Π½Π½Ρ‹Ρ….

//ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°.

private double x;

private double sum = 0;

//конструкторпринимаСтклассданных.

publicMethod (MethodDataSetdata) {.

this.data = data;

}.

//считываСм ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Π».

public double getSum () {.

return sum * data. getH ();

}.

//функция.

private double F (double x) {.

returndata.getA () * x * data. getY (2)-data.getY1()*math.pow (x, 2);

}.

//ΠΌΠ΅Ρ‚ΠΎΠ΄ Π­ΠΉΠ»Π΅Ρ€Π°.

public void methodEuler () {.

//ΠΠ°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ΡƒΡΠ»ΠΎΠ²ΠΈΡ.

data.addY (0, data. getY1());

data.addY (1, data. getY2());

//ВычисляСм для всСх Ρ‚ΠΎΡ‡Π΅ΠΊ Ρƒ[x].

for (int i = 1; i <= data. getNx (); i++) {.

x = i * data. getH ();

data.addY (i, data. getY (i — 1) + data. getH () * F (x));

}.

}.

public void setSum () {.

int dlina = (int) Math. round ((data.getFinishBy () — data. getStartBy ()) / data. getH ());

int nach = (int) Math. round (data.getStartBy () / data. getH ());

for (int i = nach; i <= (nach + dlina); i++) {.

sum += data. getY (i);

}.

}.

}.

package dataSet;

public class MethodDataSet {.

//Π’Π²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅.

private double a;

//Π˜Π½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΠ°Ρ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ.

private double startBy, xEnd, finishBy;

private int nx;

private int ns;

private int fs;

//шаг интСгрирования.

private double h=0.01;

private final double y1 = 0;

private double y2;

privatedouble[] y;

//ΠΌΠ΅Ρ‚ΠΎΠ΄ нахоТдСния ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Π»Π°.

private Method method;

//инициализация Π΄Π°Π½Π½Ρ‹Ρ….

public void inizial (){.

nx = (int) (xEnd / h);//количСстворазбиСний.

y = newdouble[nx + 1]; //длина массива.

//ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ для подсчСта ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Π»Π°.

//Ρ‚.ΠΊ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Π» вычисляСтся с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ…1.

//Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π°ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π½Π°Ρ‡Π°Π»ΠΎ ΠΎΡ‚Ρ‡Π΅Ρ‚Π° ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ°.

//ΠΈ Π΅Π³ΠΎ Π΄Π»ΠΈΠ½Ρƒ.

fs = (int) (Math.round (startBy / h));//Π½Π°Ρ‡Π°Π»ΠΎ ΠΎΡ‚Ρ‡Π΅Ρ‚Π°.

ns = (int) (Math.round ((finishBy — startBy) / h) + fs);//количСство Ρ€Π°Π·Π±ΠΈΠ΅Π½ΠΈΠΉ ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ° интСгрирования.

//подсчСт ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Π»Π°.

method = new Method (this);

method.methodEuler ();//ΠΌΠ΅Ρ‚ΠΎΠ΄ Π­ΠΉΠ»Π΅Ρ€Π°.

}.

//подсчСт суммы.

public void setSum () {.

method.setSum ();

}.

//ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ сумму.

public double getSum () {.

returnmethod.getSum ();

}.

//ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽΠ°.

public MethodDataSet setA (double a) {.

this.a = a;

return this;

}.

//ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ h.

public MethodDataSet setH (double h) {.

this.h = h;

return this;

}.

//ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π½Π°Ρ‡Π°Π»ΠΎ ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ° интСгрирования.

public MethodDataSet setStartBy (double startBy) {.

this.startBy = startBy;

return this;

}.

//ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΊΠΎΠ½Π΅Ρ†Π° ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ°.

public MethodDataSet setxEnd (double xEnd) {.

this.xEnd = xEnd;

return this;

}.

//ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΊΠΎΠ½Π΅Ρ† ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ° интСгрирования.

public MethodDataSet setFinishBy (double finishBy) {.

this.finishBy = finishBy;

return this;

}.

//ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρƒ2.

public MethodDataSet setY2(double y2) {.

this.y2 = y2;

return this;

}.

/**.

  • * @return ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ A
  • */

public double getA () {.

return a;

}.

/**.

  • * @return ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ startBy
  • */

public double getStartBy () {.

return startBy;

}.

/**.

  • * @return ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ xEnd
  • */

public double getxEnd () {.

return xEnd;

}.

/**.

  • * @return ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ finishBy
  • */

public double getFinishBy () {.

return finishBy;

}.

/**.

  • * @return ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ nx
  • */

public int getNx () {.

return nx;

}.

/**.

  • * @return ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ns
  • */

public int getNs () {.

returnns;

}.

/**.

  • * @returnΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽns
  • */

public int getIntStartBy () {.

return fs;

}.

/**.

  • * @return ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ h
  • */

public double getH () {.

returnh;

}.

/**.

  • * @returnΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽy1
  • */

public double getY1() {.

returny1;

}.

/**.

  • * @return ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ y2
  • */

public double getY2() {.

returny2;

}.

/**.

  • * @return ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ y
  • */

public double getY (int i) {.

returny[i];

}.

//Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΊΠΎΠ½Π΅Ρ‡Π½ΡƒΡŽ Ρƒ.

public double getYN () {.

return y[nx];

}.

/**.

  • * @добавляСм Π² ΠΌΠ°ΡΡΠΈΠ² y
  • */

public void addY (int i, double type) {.

y[i] = type;

}.

}.

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ