// Nelder ve Mead metodu ile optimizasyon
// 
import java.util.*;
import java.awt.*;
import java.applet.Applet;
import java.awt.event.*;
import javax.swing.*;


class f1 extends f_xj
{
public double func(double x[]) 
{
//çözümü istenen fonksiyon	
double ff;
ff=2.0*x[0]*x[1]+2.0*x[0]-x[0]*x[0]-2.0*x[1]*x[1];
return -ff; //minimum değil maxsimum istendiğinden - ile çarptık
}
}

public class OPO7
{
     public static void main (String args[])  
     {  
	 String s="kök tahmin değerlerini arada bir boşluk bırakarak giriniz: ";
     double [] x0=opt.verigir(s);
     double [] dx0=new double[x0.length];
     for(int i=0;i<x0.length;i++) dx0[i]=0.2*x0[i];
     f1 f=new f1();
     double [] r1= opt.nelder(f,x0,dx0);
     s=" çözüm seti  : \n"+Matrix.toStringT(r1);     
     String s2="Nelder-Mead metodu ile lineer olmıyan çok değişkenli fonksiyon optimizasyonu:";
     JOptionPane.showMessageDialog(null,s,s2,JOptionPane.PLAIN_MESSAGE);
     double [] r2= opt.newtond(f,r1);
     s=" çözüm seti  : \n"+Matrix.toStringT(r1);
     s2="Newton metodu ile lineer olmıyan çok değişkenli fonksiyon optimizasyonu:";
     JOptionPane.showMessageDialog(null,s,s2,JOptionPane.PLAIN_MESSAGE);
     System.exit(0);
     } 
}