用二分法求解非线性方程(c,c++,matlab都可以)
用二分法求方程f(x)=x*x*x-sinx-12x+1的全部实根,ε≤10的-6次方。用c,c++,matlab编写的程序都可以。...
用二分法求方程f(x)=x*x*x-sinx-12x+1的全部实根,ε≤10的-6次方。
用c,c++,matlab编写的程序都可以。 展开
用c,c++,matlab编写的程序都可以。 展开
2个回答
展开全部
去我的空间里,有
#include<iostream>
#include<cmath>
using namespace std;
double fun(double x){
double y;
y=exp(-x)+exp(x);
return y;
}
int main(){
double a,b,u,v,e;
a=-1.0;
b=1.0;
int k=0;
cout<<"请输入精度 L:"<<endl;
cin>>e;
while(abs(u-b)>e||abs(a-v)>e){
++k;
cout<<"第"<<k<<"次"<<endl;
u=a+0.382*(b-a);cout<<"u的值:"<<u<<" "<<"fun(u)的值"<<fun(u)<<endl;
v=a+0.618*(b-a);cout<<"v的值:"<<v<<" "<<"fun(v)的值"<<fun(v)<<endl;
if(fun(u)>=fun(v))
a=u;
else
b=v;
}
}
#include<iostream>
#include<cmath>
using namespace std;
double fun(double x){
double y;
y=exp(-x)+exp(x);
return y;
}
int main(){
double a,b,u,v,e;
a=-1.0;
b=1.0;
int k=0;
cout<<"请输入精度 L:"<<endl;
cin>>e;
while(abs(u-b)>e||abs(a-v)>e){
++k;
cout<<"第"<<k<<"次"<<endl;
u=a+0.382*(b-a);cout<<"u的值:"<<u<<" "<<"fun(u)的值"<<fun(u)<<endl;
v=a+0.618*(b-a);cout<<"v的值:"<<v<<" "<<"fun(v)的值"<<fun(v)<<endl;
if(fun(u)>=fun(v))
a=u;
else
b=v;
}
}
展开全部
matlab 数据精度不够的 程序如下
clc
x=-6:0.000001:6;%(1)设置你的x精度即小数点后几位
t=[];
j=1;
for i=1:12000001
if abs(x(i)^3-sin(x(i))-12*x(i)+1)<=10^(-6)%(2)设置你的根比较实根的精度
t(j)=x(i);
j=j+1;
end
end
t
说明:(1)处已经用了最大的了10^(-6)
(2)如果精度是10^(-6)的话仅有一个答案t=0.0770但如果要求全部的解的话最好取到10^(-5)
有全部的解 t =
-3.4912 0.0770 3.4101
ε≤10^(-6)指的是什么精度?
不管怎样可以自己改一下
你可以把这个函数画出来看看
x=-6:0.01:6;
y=x.^3-sin(x)-12*x+1;
plot(x,y)
clc
x=-6:0.000001:6;%(1)设置你的x精度即小数点后几位
t=[];
j=1;
for i=1:12000001
if abs(x(i)^3-sin(x(i))-12*x(i)+1)<=10^(-6)%(2)设置你的根比较实根的精度
t(j)=x(i);
j=j+1;
end
end
t
说明:(1)处已经用了最大的了10^(-6)
(2)如果精度是10^(-6)的话仅有一个答案t=0.0770但如果要求全部的解的话最好取到10^(-5)
有全部的解 t =
-3.4912 0.0770 3.4101
ε≤10^(-6)指的是什么精度?
不管怎样可以自己改一下
你可以把这个函数画出来看看
x=-6:0.01:6;
y=x.^3-sin(x)-12*x+1;
plot(x,y)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |