❶ 求C语言例题讲解:用迭代法求方程x=cos x的根,要求误差小于10的-6次方
呵呵
你不已经编完了吗
因为是cos函数 所以要定义成浮点数,这样更精确,因此赋值也 要赋浮点数,即0.0其实就是零加个小数点使数域更广,
这段程序的意思是
先对x1赋0
x2用cos(x)赋值
此时要是x1等于x2就是x=cosx,成立输出,要不成立
,进入while,判断括号里的就汪老是判断误差。当误差大于10的-6次方时循环继续,等小于10的-6次方时结束循环,输出的就是要求得
循环体的意思是
当满足判断条件时
看,开始 -----x1-----------x2----------------------
x1用x2赋值 x1--------------x2
因为开始x2等于cos0即1,此时cos值最大,以后的非零一定小
也就是说x2的值会不断变小,x1又不断的用x2赋值,那么困睁升x1也不断小这样x1和x2就会不断靠近,当两者之间的距离相差小于10的-6次方时就看成相等。满足要求,我再画几个数轴
x1-----------------------x(0)------------------------------------------
x1--------------------x(1)--------------------
x(1)----x【x(1)】
左早正为变量x1不断赋值,右为x2不断赋值
计算方法主要研究截断误差和舍入误差。
一、计算方法的主要内容:
本书比较全面地介绍了现代科学与工程计算中常用的数值计算方法。全书共分11章,主要内容有:引论、计算方法的数学基础、MATLAB编程基础、方程求根、解线性方程组的直接法、解线性方程组的迭代法、函数插值、数值积分与数值微分、常微分方程初值问题的数值解法、矩阵特征值计算、函数优化计算。
本书知识体系完整,既简要回顾了与计算方法有关的数学基础知识,又介绍了现代计算软件MATLAB,书中每个算法都配有结构化流程图,几乎所有算法都给出了MATLAB语言代码和MATLAB函数,部分算法给出了C语言代码,书后附有上机实验题目 。
❸ C语言方程求根问题不懂
这个问题如果要完整地讲还是比较复杂的,简单一点的话你就可以记住浮点数的表示和运算结果都有舍入误差,并不一定是完全精确的。
举个例子,double型的数据,a=0.1, b=0.6, c=0.9, 理论上讲disc=0,但如果你不开编译优化的话会算出disc=-5.55e-17,这样原本两个实根就被判定成虚根了。
当然,反过来disc很小(非0)轮判被判定成0也是有可能的。不过不论哪种情况,只液者有disc<0和disc=0被混淆才是比较严重的问题,因为disc>=0的两种状态即使区分不清闹桐薯楚也总是对应两个实根。
❹ 重赏!!!求matlab习题答案!!!
function t_charpt1_1
%数值试验1.1 病态问题
%输入:[0 20]之间的扰动项及小的扰动常数
%输出:加扰动后得到的全部根
clc
result=inputdlg({'请输入扰动项:在[0 20]之源好间的整数:'},'charpt 1_1',1,{'19'});
Numb=str2num(char(result));
if((Numb>20)|(Numb<0))
errordlg('请输入正确的扰动项:[0 20]之间的整数!');
return;
end
result=inputdlg({'请输入(0 1)之间的扰动常数:'},'charpt 1_1'雹雀铅,1,{'0.00001'岁掘});
ess=str2num(char(result));
ve=zeros(1,21);
root=roots(poly(1:20)+ve);
ve(21-Numb)=ess;
root=roots(poly(1:20)+ve);
disp(['对扰动项',num2str(Numb),'加扰动',num2str(ess),'得到的全部根为:']);
disp(num2str(root));
%找的,希望对你有用
❺ MATLAB中怎么算二元一次方程的均方根误差
您好,首先汪兄将数据的均值求解出来,用mean命令;
再将每个数据减去均值,得到误差数据,之后用mse命令就可以得到了。
每个命令的具体用法help一下吧。
clear
all;clc;
syms
a
b
c
d
h
N
[x,y]
=
solve('1+y*d*(x-1)/(6.283*b*a*(2*x+1))=y','(x-1)*b-N*h*y*(d+y*c)=0','困做袭x','胡粗y');
x=subs(x,{a,b,c,d,h,N},{1,2,3,4,5,6})
y=subs(y,{a,b,c,d,h,N},{1,2,3,4,5,6})
❻ (1)在区间 上用二分法求方程e^2+10X-2=0的近似根,要求误差不超过0.5*10^(-3) 。
#include <iostream>
#include <cmath>
using namespace std;
typedef double(*pf)(double);
double half(pf,double,double);
double newton(pf,pf,double);
double func(double x){return exp(x)+10*x-2;}
double dfunc(double x){return exp(x)+10;}
const double ep=5e-4;
int main()
{
cout<<"二档段分法:x="<<half(func,-10,10)<<endl;
cout<<"牛顿法:x="<<newton(func,dfunc,1)<<endl;
return 0;
}
double half(pf f,double a,double b)
{
double x;
if(f(a)*f(b)<0)
{
if(f(a)>0) x=a,a=b,b=x;
do
{
x=(a+b)/2;
if(f(x)>0) b=x;
else a=x;
}
while(fabs(f(x))>ep);
return x;
}
}//二分法行袜誉
double newton(pf f,pf df,double x)
{
while(fabs(f(x))>ep)
{
x=x-f(x)/df(x);
}
return x;
}//牛顿好穗法
❼ 一元一次方程定义及求根方法
一元一次方程指只含有一个未知数、未知数的最高次数为1且两边都为整式的等式。一元一次方程只有一个根。接下来让我们看一下一元一次方程的求根方法。
一元一次方程指只含有一个未知数、未知数败绝的最高次数为1且两边都为整式的等式,叫做一元一次方程。求出方程中未知数的值叫做方程式的解。一元一次方程是一种线性方程,且只有一个根。
解一元一次方程的步骤:去分母、去括号、移项、合并同类项、未知数系数化为1。
1.去分母:去分母是指等式两边同时乘以分母的最小公倍数。
2.去括号
(1)括号前是"+",把括号和它前面的"+"去掉后,原括号里各项衫漏的符号都不改变。
(2)括号前是"-",把括号和它前面的"-"去掉后,原括号里察塌姿各项的符号都要改变。(改成与原来相反的符号,例:-(x-y)=-x+y。
3.移项:把方程两边都加上(或减去)同一个数或同一个整式,就相当于把方程中的某些项改变符号后,从方程的一边移到另一边,这样的变形叫做移项。
4.合并同类项
合并同类项就是利用乘法分配律,同类项的系数相加,所得的结果作为系数,字母和指数不变。
通过合并同类项把一元一次方程式化为最简单的形式:ax=b (a≠0)
5.系数化为1
设方程经过恒等变形后最终成为ax=b型(a≠1且a≠0),那么过程ax=b→x=b/a叫做系数化为1。这是解方程的一个通用步骤,就是解方程最后一个步骤。即方程两边同时除以未知项的系数.最后得到x=a的形式。
(1)首先必须是方程。
(2)其次必须含有一个未知数。
(3)分母中不含有未知数。