📄 yunchou2.java
字号:
import java.lang.*;
import javax.swing.JOptionPane;
class RR
{
int f(int x)
{
if(x<=1)
return 1;
else
return f(x-1)+f(x-2);
}
}
public class YunChou2
{
public static void main(String args[])
{
int n=0;
RR tt=new RR();
String inputString;
String outputString;
inputString=JOptionPane.showInputDialog("请输入区间下限a0:");
double a0=Integer.parseInt(inputString);
inputString=JOptionPane.showInputDialog("请输入区间上限b0:");
double b0=Integer.parseInt(inputString);
inputString=JOptionPane.showInputDialog("请输入绝对精度:");
double jd=Double.parseDouble(inputString);
for(int i=0;i>=0;i++)
{
if(tt.f(i)*jd>=1)
{
n=i;
break;
}
}
outputString="取值区间:"+"("+a0+","+b0+ ")"+"\n"+"绝对精度="+jd+"\n"+"搜索次数="+n;
JOptionPane.showMessageDialog(null,outputString,"定义域",JOptionPane.INFORMATION_MESSAGE);
double t1 =b0+ (double)tt.f(n-1)/(double)tt.f(n) *(a0-b0);
double t2 =a0+(double)tt.f(n-1)/(double)tt.f(n)*(b0-a0);
YunChou2 g=new YunChou2();
g.init1(t1,t2,a0,b0,n);
}
public void init1(double t1,double t2,double a0,double b0,int n)
{ String outputString1;
RR t=new RR();
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+(double)t.f(n-i-3)/(double)t.f(n-i-2)*(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+(double)t.f(n-i-2)/(double)t.f(n-i-1)*(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+(double)t.f(n-i-2)/(double)t.f(n-i-1)*(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+(double)t.f(n-i-2)/(double)t.f(n-i-1)*(b0-a0);
ft1=t1*t1+t1+1;
ft2=t2*t2+t2+1;
continue;
}
}
else
{
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=outputString1+"\n"+"Minf(x)="+ft1;
JOptionPane.showMessageDialog(null,outputString1,"最后运行结果",JOptionPane.INFORMATION_MESSAGE);
System.exit(0);
}
else
{
outputString1=outputString1+"\n"+"Minf(x)="+ft2;
JOptionPane.showMessageDialog(null,outputString1,"最后运行结果",JOptionPane.INFORMATION_MESSAGE);
System.exit(0);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -