?? yunchou3.java
字號:
import java.lang.*;
import javax.swing.JOptionPane;
public class YunChou3
{
public static void main(String args[])
{
int n=0;
String inputString;
String outputString;
inputString=JOptionPane.showInputDialog("請輸入區間下限a0:");
double a0=Double.parseDouble(inputString);
inputString=JOptionPane.showInputDialog("請輸入區間上限b0:");
double b0=Double.parseDouble(inputString);
inputString=JOptionPane.showInputDialog("請輸入絕對精度:");
double jd=Double.parseDouble(inputString);
double t1 =b0+0.618*(a0-b0);
double t2 =a0+0.618*(b0-a0);
for(int i=1;i>=1;i++)
{
if(Math.pow(0.618,(double)i)<=jd)
{
n=i+1;
break;
}
}
outputString="取值區間:"+"("+a0+","+b0+ ")"+"\n"+"絕對精度="+jd;
JOptionPane.showMessageDialog(null,outputString,"取值區間和精度",JOptionPane.INFORMATION_MESSAGE);
YunChou3 t=new YunChou3();
t.init1(t1,t2,a0,b0,n);
}
public void init1(double t1,double t2,double a0,double b0,int n)
{
String outputString1;
double ft1=t1*t1+t1+1;
double ft2=t2*t2+t2+1;
for(int i=0;i<n-2;i++)
{
if(t1<t2)
{
if(ft1<ft2)
{
a0=a0;
b0=t2;
t1=t1;
t2=b0+0.618*(a0-b0);
ft1=t1*t1+t1+1;
ft2=t2*t2+t2+1;
continue;
}
else if(ft1>=ft2)
{
a0=t1;
b0=b0;
t1=t2;
t2=a0+0.618*(b0-a0);
ft1=t1*t1+t1+1;
ft2=t2*t2+t2+1;
continue;
}
}
else if(t1>t2)
{
if(ft1>ft2)
{
a0=a0;
b0=t1;
t1=t2;
t2=b0+0.618*(a0-b0);
ft1=t1*t1+t1+1;
ft2=t2*t2+t2+1;
continue;
}
else if(ft1<=ft2)
{
a0=t2;
b0=b0;
t1=t1;
t2=a0+0.618*(b0-a0);
ft1=t1*t1+t1+1;
ft2=t2*t2+t2+1;
continue;
}
}
else
{
a0=a0;
b0=b0;
t1=1/2*(a0+b0);
t2=a0+(1/2+Math.random())*(b0-a0);
ft1=t1*t1+t1+1;
ft2=t2*t2+t2+1;
}
}
outputString1="最后兩次試點的位置為:"+"\n"+"x1="+t1+"\n"+"x2="+t2;
if(ft1<=ft2)
{
outputString1="搜索次數="+n+"\n"+outputString1+"\n"+"Minf(x)="+ft1;
JOptionPane.showMessageDialog(null,outputString1,"最后運行結果",JOptionPane.INFORMATION_MESSAGE);
System.exit(0);
}
else
{
outputString1="搜索次數="+n+"\n"+outputString1+"\n"+"Minf(x)="+ft1;
JOptionPane.showMessageDialog(null,outputString1,"最后運行結果",JOptionPane.INFORMATION_MESSAGE);
System.exit(0);
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -