日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

数值分析方程求根实验matlab,数值分析实验之非线性方程求根(MATLAB实现)

發布時間:2025/3/8 循环神经网络 72 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数值分析方程求根实验matlab,数值分析实验之非线性方程求根(MATLAB实现) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、實驗目的

1. 了解一般非線性方程的求根是比較復雜的事情:要討論(或知道)它有無實根,有多少實根;知道求近似根常用的幾種方法,每種方法的特點是什么。

2. 用通過二分法(區間半分法)、不動點(也Picard)迭代法及Newton迭代(切線)法求其它非線性方程的根,并盡可能估計誤差。

二、實驗原理

三、實驗程序

四、實驗內容

1. 用二分法求方程x3-3x-1=0在的所有根.要求每個根的誤差小于0.001.

提示與要求: (1) 利用精度找到迭代次數;

(2) 由f(x)=3(x2-1)可取隔根區間[-2,-1].[-1,1].[1,2]);

(3) 用程序求各隔根區間內的根.

2. 用不動點迭代求: (1)x3+2x2+10x-20=0的所有根.

或: (2)9x2-sinx-1=0在[0,1]上的一個根.

3. 用Newton迭代法求解下列之一,準確到10-5:

(1) x3-x-1=0的所有根;

(2) ex+2-x+2cosx-6=0位于[0,2]上的根.

五、實驗程序

? 二分法:

文件代碼:

function y = f(x)

y=x^3-3*x-1;

end

程序代碼:

function Bipart(a0,b0,tol)

%a0為左區間,b0為右區間,tol為區間誤差限

a=a0;b=b0;

m=ceil(log((b-a)/tol)/log(2));

for k=1:m

p=(a+b)/2;

if f(p)*f(b)<0

a=p;

else

b=p;

end

end

disp(['經過二分法求得的跟為:x=',num2str((a+b)/2,'%.6f')])

disp(['共經過',num2str(k),'次計算'])

命令窗口:

Bipart(-2,-1, 0.001)

Bipart(-1, 1, 0.001)

Bipart (1,2, 0.001)

運行結果:

? 不動點法:

文件代為:

function y = f(x)

y=9*x^2-sin(x)-1;

end

程序代碼:

function Budongdian(x0,tol,m)

%x0為初始值,tol為誤差容限,m為最大迭代次數

syms x

F(x)=sqrt(sin(x)+1)/3;

m=m;

text='';

x=[];

x(1)=x0;

for k=1:m

x(k+1)=F(x(k));

if (abs(x(k+1)-x(k))<=tol)==1

text='迭代成功';

disp(text);

disp(['經過不動點迭代法求得的跟為:x=',num2str(x(k+1),'%.7f')]);

disp(['共經過',num2str(k),'次計算'])

break

end

end

if isempty(text)==1

disp('Method failed')

end

命令窗口:

Budongdian(1, 0.00001, 100)

運行結果:

? 牛頓迭代法:

文件代碼:

function y = f(x)

y=exp(x)+2^(-x)+2*cos(x)-6;

end

程序代碼:

function Newton_gen(x0,tol,m)

%x0為初始值,tol為誤差容限,m為最大迭代次數

syms x

F(x)=x-f(x)/diff(f(x));

m=m;

text='';

x=[];

x(1)=x0;

for k=1:m

x(k+1)=F(x(k));

if (abs(x(k+1)-x(k))<=tol)==1

text='迭代成功';

disp(text);

disp(['經過Newton迭代法求得的跟為:x=',num2str(x(k+1),'%.7f')]);

disp(['共經過',num2str(k),'次計算'])

break

end

end

if isempty(text)==1

disp('Method failed')

end

命令窗口:

Newton_ .gen(2, 0.00001, 100)

運行結果:

另解:

? 二分法:

定義函數:

function Bipart_2(a0,b0,tol,Tol)

%a0為左區間,b0為右區間,tol為區間誤差限,Tol為f誤差限

a=a0;b=b0;

m=ceil(log((b-a)/tol)/log(2));

for k=1:m

p=(a+b)/2;

if f(p)*f(b)<0

a=p;

else

b=p;

end

if abs(f((a+b)/2))

break;

end

end

disp(['經過二分法求得的跟為:x=',num2str((a+b)/2,'%.6f')])

disp(['共經過',num2str(k),'次計算'])

命令窗口:

Bipart. .2(-1, 1,0.001,0.1)

Bipart_ .2(-1, 1, 0.001, 0.000001)

運行結果:

? 不動點法:

定義函數:

function [x,k]=budong(fun,x0,tol,m)

for k=1:m

x=fun(x0);

if abs(x-x0)

break;

end

x0=x;

end

x=vpa(x,8);

function t=fun(x1)

syms x;

f=9*x.*x-sin(x)-1;

s=subs(diff(f,x),x,x1);

x=x1;

f=9*x.*x-sin(x)-1;

t=x-f/s;

命令行窗口輸入:

[x,k]=budong(@fun,0.5,1e-5,100)

運行結果:

總結

以上是生活随笔為你收集整理的数值分析方程求根实验matlab,数值分析实验之非线性方程求根(MATLAB实现)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。