事实上,我正在尝试编写一个能够绘制数学函数图形的应用程序。该代码制作了平方函数的图形,并且效果很好。我的问题是我想制作三次函数。这是我到目前为止的代码:
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.BorderFactory;
import javax.swing.JPanel;
public class plano extends JPanel{
public plano() {
init();
}
public void init() {
this.setBorder(BorderFactory.createLineBorder(Color.black));
}
@Override
public void paintComponent( Graphics g ) {
super.paintComponent(g);
g.setColor(Color.red);
g.drawLine(0, this.getHeight()/2, this.getWidth(), this.getHeight()/2);
g.drawLine(this.getWidth()/2, 0,this.getWidth()/2 , this.getHeight());
}
// y=c*x2 +c*x +c
public void paintSQRFunc(Graphics g,double x3mult, double x2mult,
double x1mult,double cons, double x1,double x2)
{
for(double i=x1;i<x2;i++)
{
double y = ((double)Math.cbrt(i)*x3mult)+((double)Math.pow(i,2)*x2mult)+i*x1mult+cons;
double xp = i+1;
double yp = ((double)Math.cbrt(xp)*x3mult)+((double)Math.pow(xp,2)*x2mult)+xp*x1mult+cons;
g.drawLine((int)coord_x(i), (int)coord_y(y), (int)coord_x(xp), (int)coord_y(yp));
}
}
private double coord_x(double x)
{
double real_x = x+this.getWidth()/2;
return real_x;
}
private double coord_y(double y)
{
double real_y = -y+this.getHeight()/2;
return (real_y);
}
}
然后是我调用方法的主类:
import java.awt.event.ActionEvent;
import javax.swing.*;
import java.awt.event.ActionListener;
import graficadora.Graficadora;
public class Ventana extends JFrame implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
Graficadora.plano.paintSQRFunc(Graficadora.plano.getGraphics(),1,1,0,0,-200,200);
正如你所见,我试图让它能够绘制三次函数的图形。当我设置参数来绘制三次函数时,出现了错误:
(它应该绘制 y=x^3 的图形。该图形似乎倾斜 90°。)
最佳答案
It is supposed to graph y=x^3. The graph appears to be tilted in 90º.
我没有尝试你的代码,但我强烈怀疑问题出在这里:
double yp = ((double)Math.cbrt(xp)*x3mult) + // <-- Math.cbrt() ?
((double)Math.pow(xp,2)*x2mult)+xp*x1mult+cons;
如果您想显示三年级多项式,则 Math.cbrt(xp)
没有意义,根据Math.cbrt(double a) javadoc:
Returns the cube
root
of a double value.
这个立方根只是将函数图“旋转”90°。应该是:
double yp = ((double)Math.pow(xp,3)*x3mult) +
((double)Math.pow(xp,2)*x2mult)+xp*x1mult+cons;
还可以考虑看看 @trashgod 显示的示例 here 。或者您可能想看看第三方库,例如 JFreeChart 。有一些示例可以从显示的 here 开始和here .
关于java - 在java中绘制三次函数图形的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20719191/