写在前面:

题目如下:
求方程
- x - 1=0在1.5附近的根,要求精度为
,
采用计算公式
1、x =
2、x =
3、x =
4、x =
5、x =
6、x =
C/C++ 版本:
cpp
#include<iostream>
#include<cmath>
#include<iomanip>
#define int long long
#define exp 1E-7
using namespace std;
double picard(double x){
// return 1/(x*x-1);
// return cbrt(x+1);
// return sqrt(1+1/x);
return x - (pow(x,3)-x-1)*1.0/(3*pow(x,2)-1);
}
void solve(){
double x0,x1;
int maxi;
// 精度要求
// cin>>exp;
// 迭代初值
cin>>x1;
// 最大迭代次数
cin>>maxi;
for(int i =0;i<maxi;i++){
x0 = x1;
x1 = picard(x0);
cout<<fixed<<setprecision(9)<<"x0:"<<x0<<" "<<"x1:"<<x1<<"\n";
if(fabs(x1-x0)<=exp){
cout<<setprecision(8)<<"方程根为:"<<x1<<"\n";
cout<<"迭代次数为"<<i+1<<"\n";
return ;
}
}
cout<<"迭代次数超过上限"<<"\n";
}
signed main(){
int _=1;
while(_--){
solve();
}
return 0;
}
Python版本:
python
import math
def picard(x):
return 1.0 / (x ** 4) + 3 # 修复:使用x**4而不是pow(x,4)
def solve():
EXP = 1e-6
try:
# 迭代初值
x1 = float(input("请输入迭代初值: "))
# 最大迭代次数
maxi = int(input("请输入最大迭代次数: "))
except ValueError:
print("输入格式错误,请输入数字")
return
for i in range(maxi):
x0 = x1
x1 = picard(x0)
print(f"第{i+1}次迭代: x = {x1}") # 添加调试信息
if abs(x1 - x0) <= EXP:
print(f"方程根为:{x1}")
print(f"迭代次数为:{i + 1}")
return
print("迭代次数超过上限")
def main():
_ = 1
while _ > 0:
solve()
_ -= 1
if __name__ == "__main__":
main()
Java版本:
java
import java.util.Scanner;
public class Main {
private static final double EXP = 1e-6;
public static double picard(double x) {
return 1.0 / Math.pow(x, 4) + 3;
}
public static void solve() {
Scanner scanner = new Scanner(System.in);
try {
System.out.print("请输入迭代初值: ");
double x1 = scanner.nextDouble();
System.out.print("请输入最大迭代次数: ");
int maxi = scanner.nextInt();
for (int i = 0; i < maxi; i++) {
double x0 = x1;
x1 = picard(x0);
System.out.println("第" + (i + 1) + "次迭代: x = " + x1); // 添加调试信息
if (Math.abs(x1 - x0) <= EXP) {
System.out.println("方程根为:" + x1);
System.out.println("迭代次数为:" + (i + 1));
return;
}
}
System.out.println("迭代次数超过上限");
} catch (Exception e) {
System.out.println("输入格式错误,请输入数字");
}
}
public static void main(String[] args) {
int count = 1; // 避免使用_作为变量名
while (count > 0) {
solve();
count--;
}
}
}
最后的运行结果如下:

叮!您的技术外卖已送达,记得给个五星好评(点赞)哦~ 关注我,解锁更多"好吃不胖"的技术干货!
写在后面:
