📄 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 + -