Java语言怎么求1-1000内的瓦尔西里函数的峰值?怎么采用牛顿法和莱布尼茨法来求解的?具体的代码的思路我不会?谁能解释
可以使用牛顿法和莱布尼茨法来逼近求解
牛顿法代码
public class NewtonMethod {
public static void main(String[] args) {
double x0 = 0.0; // 初始值
double epsilon = 0.0001; // 精度要求
double max = -Double.MAX_VALUE; // 最大值
for(int i = 1; i <= 1000; i++) {
double result = findMaximum(x0, epsilon);
if(result > max) {
max = result;
}
x0++;
}
System.out.println("瓦尔西里函数的最大值为:" + max);
}
public static double findMaximum(double x0, double epsilon) {
double x = x0;
while(true) {
double fx = valiseryFunction(x);
double fpx = derivativeFunction(x);
if(Math.abs(fx - 0) < epsilon) {
return x;
}
x = x - fx / fpx;
}
}
public static double valiseryFunction(double x) {
return Math.sin(x) * Math.exp(-x * x / 100);
}
public static double derivativeFunction(double x) {
return Math.exp(-x * x / 100) * (Math.cos(x) * (-2 * x / 100) + Math.sin(x));
}
}
不知道你这个问题是否已经解决, 如果还没有解决的话:
public class day6_2 {
//求1000以内各个位数和是3的倍数的数的和
public static void main(String[] args) {
int sum=0;
Scanner input=new Scanner(System.in);
System.out.println("输入数字");
int kk=input.nextInt();
for(int i=kk;i>0;i=i/10) {
sum=sum+i%10;
}
if (sum%3==0) {
System.out.println(sum);
}
else {
System.out.println("各个位数和不是3的倍数的数的和");
}
}