⑴ 数值计算方法
占个位,明天下午再看看。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
一题:(你的题目中精度没有说清楚,应当是公式复制过,丢失信息了)
你改一下精度和初始值吧(自己设计的迭代法的收敛与初值关系比较大)
f=inline('(x^2+2-exp(x))/3'); %注意这里是x(n+1)=**的迭代公式
acc=1e-8; %精度
x0=1.5;
%(1)迭代法
x1=x0;
for i_iter=1:10000 %迭代最大次数
x2=f(x1);
if (abs(x1-x2)<acc)
break;
end
x1=x2;
end
x2,i_iter
%(2)斯蒂芬森
x1_s=x0;
for i_steff=1:10000 %迭代最大次数
y=f(x1_s);
z=f(y);
x2_s=x1_s-(y-x1_s)^2/(z-2*y+x1_s);
if (abs(x1_s-x2_s)<acc)
break;
end
x1_s=x2_s;
end
x2_s,i_steff
%(3)牛顿法
syms x
fNew=x^2-3*x+2-exp(x);
df=diff(fNew); %导数
f_df=fNew/df;
x1_n=x0;
for i_New=1:10000 %迭代最大次数
x2_n=x1_n-subs(f_df,x1_n);
if (abs(x1_n-x2_n)<acc)
break;
end
x1_n=x2_n;
end
x2_n,i_New
============
二题、
syms x1 x2
f(1)=3*x1^2-x2^2;
f(2)=3*x1*x2^2-x1^3-1;
df=jacobian(f);
f_df=(df\f')';
acc=1e-6;
x0=[1,1];
xold=x0;
for i_New=1:1000 %迭代最大次数
xnew=xold-subs(subs(f_df,x1,xold(1)),x2,xold(2));
if (norm(xnew-xold)<acc)
break;
end
xold=xnew;
end
xnew,i_New
⑵ 求数值计算方法实验报告格式(C语言)
自己去下吧
http://download.csdn.net/source/771208
数值计算方法上机实验报告完全版(亲手完成,含报告+含源代码+实验截图)
⑶ 微分几何,运筹学,数学实验,数值分析,计算方法,这几门课从难到易排下序,谢谢!
就我个人观点,微分几何是最难的。
运筹学主要是逻辑和观念的建立比较难一点,运算不算复杂。
其它的都是应用,前面基础不好也是难,但前面基础好就谈不上难了。
⑷ 数值计算方法上机题编程,,,用c语言编程序,用牛顿迭代法求18的倒数,精度为0.0005,求大神解
用牛顿迭代法求方程(2*(X-4)+3)X-6=0的根。
其迭代公式为X2=X1-F(X1)/F'(X1)
F'(X1)为对方程求导。本题中P'(X1)=(6*x1-8)*x1-3;
编译显示正确,但一运行就死机,我已经死了3次了。(一开始还以为电脑的问题)
#include<iostream.h>
#include<math.h>
void main(void)
{float x1,x2=100;
do
{x1=x2;
x2=(float)x1-(((2*x1-4)*x1+3)*x1-6)/((6*x1-8)*x1-3);
}while(fabs(x2-x1)>pow(10,-5));
cout<<x2;
}
⑸ 数值计算方法实验课题目(求定积分方面)
只会第一个牛顿莱布尼兹公式的做法:
4提出积分号,1/(1+X^2)的原函数为arctanX,故积分出来为4*arctanX 带入上下限为4*arctan1-4*arctan0=π
其他的不会做了
⑹ 求一篇数值分析实验报告
数值分析实验报告
姓名: 学号:
实验1:
1. 实验项目的性质和任务
通过上机实验,对病态问题、线性方程组求解和函数的数值逼近方法有一个初步理解。
2.教学内容和要求
1)对高阶多多项式
编程求下面方程的解
并绘图演示方程的解与扰动量 的关系。(实验2.6)
2)对 ,生成对应的Hilbert矩阵,计算矩阵的条件数;通过先确定解获得常向量b的方法,确定方程组
最后,用矩阵分解方法求解方程组,并分析计算结果。(第三章,实验题4)
3)对函数
的Chebyshev点
编程进行Lagrange插值,并分析插值结果。(第四章 实验1)
项目涉及核心知识点
病态方程求解、矩阵分解和方程组求解、Lagrange插值。
重点与难点
算法设计和matlab编程。
1)a.实验方案:
先创建一个20*50的零矩阵X,然后利用Matlab中的roots()和poly()函数将50个不同的ess扰动值所产生的50个解向量分别存入X矩阵中。然后再将ess向量分别和X的20个行向量绘图。即可直观的看出充分小的扰动值会产生非常大的偏差。即证明了这个问题的病态性。
b.编写程序:
>> X=zeros(20,50);
>> ve=zeros(1,21);
>> ess=linspace(0,0.00001,50);k=1;
>> while k<=50
ve(2)=ess(k);
X(1:20,k)=roots(poly(1:20)+ve);
k=k+1;
end
>> m=1;
>> while m<=20
figure(m),plot(ess,X(m,:));
m=m+1;
end
C.实验结果分析和拓展
由上面的实验结果可以看出一个充分小的扰动值可以让方程的解产生非常大的偏差,而且这个偏差随着ess的变大偏差也随即变大。但可以看出在相对小的根处根比较稳定,也就是说这些根关于ess并不敏感,而在较大根处时,根很不稳定,即这些解关于ess的变化是敏感的。这就说明了这个问题本身就是一个病态问题,与算法好坏无关。
若扰动在x^18处,只要把程序中的ve(2)改为ve(3)即可,其图形和此类似。
d.实验结论:
高次多项式扰动求方程解问题是一个病态问题。
2)a.实验方案:
先创建一个20*20的零矩阵A,再通过给定解x和Hilbert矩阵求出列向量b,然后通过LU分解法求出方程HX=b的解X,然后将x-X’这一行向量存入A矩阵中,形成一循环,最后,如果Hilbert矩阵非病态的话,则可输出一个20*20的对角矩阵。
b.编写程序:
>> n=2;
>> A=zeros(20,20);
>> while n<=20
x=1:n;
H=hilb(n);
b=H*x';
[L U]=lu(H);
y=L\b;X=U\y;
A(n,1:n)=x-X';
n=n+1;
end
Warning: Matrix is close to singular or badly scaled.
Results may be inaccurate. RCOND = 4.455948e-017.
Warning: Matrix is close to singular or badly scaled.
Results may be inaccurate. RCOND = 7.948463e-017.
Warning: Matrix is close to singular or badly scaled.
Results may be inaccurate. RCOND = 1.798429e-016.
Warning: Matrix is close to singular or badly scaled.
Results may be inaccurate. RCOND = 7.626119e-018.
Warning: Matrix is close to singular or badly scaled.
Results may be inaccurate. RCOND = 6.040620e-017.
Warning: Matrix is close to singular or badly scaled.
Results may be inaccurate. RCOND = 5.444860e-017.
>> A
A =
1.0e+003 *
Columns 1 through 10
0 0 0 0 0 0 0 0 0 0
-0.0000 0.0000 0 0 0 0 0 0 0 0
-0.0000 0.0000 -0.0000 0 0 0 0 0 0 0
-0.0000 0.0000 -0.0000 0.0000 0 0 0 0 0 0
0.0000 -0.0000 0.0000 -0.0000 0.0000 0 0 0 0 0
0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0 0 0 0
0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 0 0 0
-0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 0 0
-0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0
-0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000
-0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000
-0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0001 -0.0003 0.0006 -0.0007 0.0005
0.0000 -0.0000 0.0000 -0.0001 0.0005 -0.0027 0.0096 -0.0223 0.0348 -0.0361
0.0000 -0.0000 0.0000 -0.0004 0.0030 -0.0098 0.0080 0.0593 -0.2570 0.5154
0.0000 -0.0000 0.0000 -0.0001 0.0005 -0.0029 0.0095 -0.0171 0.0086 0.0347
0.0000 -0.0000 0.0000 -0.0000 0.0003 -0.0016 0.0059 -0.0133 0.0145 0.0094
0.0000 -0.0000 0.0000 -0.0001 0.0009 -0.0042 0.0118 -0.0182 0.0082 0.0185
0.0000 0.0000 -0.0000 0.0002 -0.0027 0.0187 -0.0762 0.1806 -0.2249 0.0813
0.0000 0.0000 -0.0000 0.0001 -0.0017 0.0120 -0.0497 0.1224 -0.1699 0.1064
0.0000 -0.0000 0.0000 -0.0003 0.0028 -0.0137 0.0371 -0.0464 -0.0164 0.1243
Columns 11 through 20
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
-0.0000 0 0 0 0 0 0 0 0 0
-0.0002 0.0000 0 0 0 0 0 0 0 0
0.0238 -0.0091 0.0015 0 0 0 0 0 0 0
-0.6091 0.4336 -0.1727 0.0296 0 0 0 0 0 0
-0.0944 0.1170 -0.0824 0.0318 -0.0053 0 0 0 0 0
-0.0624 0.1107 -0.1110 0.0674 -0.0232 0.0035 0 0 0 0
-0.0289 0.0059 0.0103 0.0082 -0.0263 0.0181 -0.0042 0 0 0
0.0524 0.1690 -0.3743 -0.1862 1.0944 -1.2171 0.6004 -0.1156 0 0
-0.0327 0.1652 -0.3051 -0.0485 0.7195 -0.9387 0.5714 -0.1699 0.0191 0
-0.1120 -0.0421 0.0883 0.0222 -0.0628 0.1013 -0.2902 0.3783 -0.2173 0.0469
C.实验结果分析和拓展:
当Hilbert矩阵的阶数比较小时,其解X和给定解x偏差不大;但当Hilbert矩阵的阶数变大时,偏差就会变大。这就说明了Hilbert矩阵是一组病态矩阵,从Matlab运行中的Warning可以看出,其条件数相当大。
d.实验结论:
Hilbert矩阵是一组病态矩阵,用它来做线性方程的系数矩阵时,往往会得出与精确解相差较大的解。
3)a.实验方案:
在区间【-1,1】上取点,先按Chebyshev取点,即xk=cos((2k-1)pi/2/(n+1))取点,然后再进行拉格朗日插值,绘出图和插值点。而后再进行均匀取点再拉格朗日插值。将两种插值结果进行比较。
b.编程实现:
for a=1:10
b=a+1;
for c=1:b
X(c)=cos((2*c-1)*pi/2/(a+1));
Y(c)=1/(1+25*X(c)^2);
x=-1:0.05:1;
end
m=length(x);
for i=1:m
z=x(i);s=0;
for k=1:b
L=1;
for j=1:b
if j~=k
L=L*(z-X(j))/(X(k)-X(j));
end
end
s=s+L*Y(k);
end
y(i)=s;
end
figure(1)
plot(x,y,'r');
hold on;
figure(2)
plot(X,Y,'b*')
hold on
end
for a=2:2:10
b=a+1;
X=linspace(-1,1,b);
Y=1./(1+25*X.^2);
x=-1:0.05:1;
m=length(x);
for i=1:m
z=x(i);s=0;
for k=1:b
L=1;
for j=1:b
if j~=k
L=L*(z-X(j))/(X(k)-X(j));
end
end
s=s+L*Y(k);
end
y(i)=s;
end
figure(1)
plot(x,y,'r');
hold on;
figure(2)
plot(X,Y,'b*')
hold on
end
C.实验结果分析及拓展:
均匀插值时,当n比较大时,就会出现多项式插值的Runge现象,即当插值节点的个数n增加时,Lagrange插值多项式对原来函数的近似并非越来越好。当进行非等距节点插值时,其近似效果明显要比均匀插值是要好。原因是非均匀插值时,在远离原点处的插值节点比较密集,所以其插值近似效果要比均匀插值时的效果要好。
d.实验结论:
利用Chebyshev点进行非等距节点插值的对原函数的近似效果要比均匀节点插值的好。
⑺ 数值计算方法的正文
随着计算机和计算方法的飞速发展,几乎所有学科都走向定量化和精确化,从而产生了一系列计算性的学科分支,如计算物理、计算化学、计算生物学、计算地质学、计算气象学和计算材料学等,计算数学中的数值计算方法则是解决“计算”问题的桥梁和工具。我们知道,计算能力是计算工具和计算方法的效率的乘积,提高计算方法的效率与提高计算机硬件的效率同样重要。科学计算已用到科学技术和社会生活的各个领域中。
数值计算方法是微分方程,常微分方程,线性方程组的求解。
数值计算方法,是一种研究并解决数学问题的数值近似解方法, 是在计算机上使用的解数学问题的方法,简称计算方法。
在科学研究和工程技术中都要用到各种计算方法。 例如,在航天航空、地质勘探、汽车制造、桥梁设计、 天气预报和汉字字样设计中都有计算方法的踪影。
计算方法既有数学类课程中理论上的抽象性和严谨性,又有实用性和实验性的技术特征, 计算方法是一门理论性和实践性都很强的学科。 在70年代,大多数学校仅在数学系的计算数学专业和计算机系开设计算方法这门课程。 随着计算机技术的迅速发展和普及, 现在计算方法课程几乎已成为所有理工科学生的必修课程。
计算方法的计算对象是微积分,线性代数,常微分方程中的数学问题。 内容包括:插值和拟合、数值微分和数值积分、求解线性方程组的直接法和迭代法、 计算矩阵特征值和特征向量和常微分方程数值解等问题。
⑻ 数值计算方法概述
在采矿工程中,数值模拟方法不仅能模拟岩体复杂的力学和结构特征,还能很方便地解决现场监测过程中需要大量人力、物力而无法完成的、现有力学理论不能求解的复杂形体问题,并对矿山岩体稳定性进行预测与预报。
关于岩土工程的数值分析方法,很多学者都作过系统综述[53,68,72],笔者只拟简单介绍。岩土工程数值分析方法,主要分为三大类,如图7-1所示。
图7-1 边坡工程数值分析方法
(1)连续介质数值分析方法
连续介质数值分析方法的理论基础是弹(塑)性力学。因此,在该类数值分析方法公式的推导过程中,需要满足基本方程和边界条件。只是在求解手段上,采用了不同于弹性力学的各种近似解法。这类数值分析方法包括有限差分法、有限单元法和边界单元法等,它适用于连续介质体的地下工程围岩与结构的应力分析和位移求解。
(2)非连续介质数值分析方法
非连续介质数值分析方法的理论基础是牛顿运动定律,它并不满足结构的位移连续条件,但是可以求出结构在平衡状态下的位移或者在不可能处于平衡状态时的破坏模式。此外,尽管结构不受位移连续的约束,但应满足给定的单元和交界面的本构定律。这类数值分析方法主要有离散单元法和不连续变形分析(DDA)。这些数值分析方法可用于分析节理岩体可能发生的不连续变形,如洞室围岩附近岩块的分离与滑落等。
(3)混合介质数值分析方法
混合介质数值分析方法是连续和不连续分析方法的耦合。在地下结构的某些区域(如洞室附近),围岩体由于开挖影响而发生块体的分离而不连续,在另外区域(如远离洞室),则岩体一般仍相互联系而处于连续状态。因此,考虑两种不同力学介质的耦合分析很必要。目前常见的耦合方法有有限元与离散元的耦合、边界元与离散元的耦合等。混合介质吸取连续介质和非连续介质两种数值分析方法中的优点,在可能发生不连续变形的岩体,采用非连续介质方法模拟,而远离洞室的岩体一般仍处于连续状态,可采用连续介质模型分析。
本章分别采用有限元强度折减法、有限元和离散元相结合的CDEM法、FLAC差分法,开展安家岭露天矿露天井工联合开采的数值模拟分析,研究露天开采和井工开采的相互作用及影响规律。