數值分析方程求根實驗matlab,數值分析實驗之非線性方程求根(MATLAB實現)

一、實驗目的

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

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

二、實驗原理

20200520001736813ppf94pp2qjl94c8_5.png

三、實驗程序

20200520001736813ppf94pp2qjl94c8_4.png

四、實驗內容

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)

運行結果:

20200520001736813ppf94pp2qjl94c8_6.png

? 不動點法:

文件代為:

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)

運行結果:

20200520001736813ppf94pp2qjl94c8_0.png

? 牛頓迭代法:

文件代碼:

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)

運行結果:

20200520001736813ppf94pp2qjl94c8_1.png

另解:

? 二分法:

定義函數:

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)

運行結果:

20200520001736813ppf94pp2qjl94c8_3.png

? 不動點法:

定義函數:

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)

運行結果:

20200520001736813ppf94pp2qjl94c8_2.png

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/534815.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/534815.shtml
英文地址,請注明出處:http://en.pswp.cn/news/534815.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python多線程輸出_萌新python多線程

剛開始學習多線程的時候鬧了個笑話在使用python線程打印東西的時候發現自己定的的線程數據沒有打印,找半天都沒有找到問題,也沒好意思問,自己憋了半天才發現問題!代碼如下:import threadingdef SayHi():print(say hi !)def SeyHello():print(say hello !)print(start)threading…

php5.6擴展編寫,php 5.6版本中編寫一個PHP擴展的簡單示例

php 5.6版本中編寫一個PHP擴展的簡單示例這篇文章主要介紹了php 5.6版本中編寫一個PHP擴展的簡單示例,本文給出擴展實現代碼、編譯方法、配置方法和使用例子等內容,需要的朋友可以參考下有時候在php本身沒有滿足需求的api時候&#xff0c;需要自己寫相應的擴展&#xff0c;擴展…

iis php 數據庫亂碼,如何解決php插入數據亂碼問題

php插入數據亂碼的解決辦法&#xff1a;首先要設置數據表的字符集為utf8&#xff1b;然后修改字符集格式&#xff1b;接著建立字符集為utf-8的數據庫&#xff1b;最后通過php mysql語句插入數據即可。mysql數據庫亂碼問題解決辦法我們在使用數據庫(mysql)的時候最怕的就是數據庫…

python 文檔字符串_新款Python文檔字符串生成器來了

又一款懶人神器問世了&#xff1a;Visual Studio Code的擴展&#xff0c;基于CodeBERT的Python文檔字符串生成器。看來現在&#xff0c;這群偷「懶」的程序員們連文檔字符串都不想自己寫了。基于CodeBERT的生成器跟正常的DocStrings用法一樣&#xff0c;你只需要輸入三引號「“…

php 棧實現歷史記錄后退,棧:如何實現瀏覽器的前進和后退功能

受限制的線性表先進后出實現一個棧數組實現叫順序棧public class ArrayStack {private String[] items;//存儲數據的數組private int count;//棧中的元素private int n;//棧的大小public ArrayStack(int n){this.items new String[n];this.n n;this.count 0;}//入棧操作publ…

vc 通過句柄修改窗口大小_VC應用(1)通過VC修改銷售訂單行項目的字段

VC是SAP中非常重要的功能&#xff0c;過去多年來&#xff0c;我參與了不少使用VC的項目&#xff0c;我將通過多篇文章介紹VC的一些應用&#xff0c;本文介紹通過VC修改銷售訂單行項目的字段01 概覽在銷售訂單創建時&#xff0c;對于可配置物料來說&#xff0c;不同的配置可能會…

mysql增加實例,MySQL的簡單使用筆記:增加實例以及啟動

增加實例增加實例這里指的的在源碼編譯安裝完MySQL之后建立一個初始的數據庫實例&#xff0c;占用某一端口&#xff0c;或者是使用新端口啟動新的mysqld進程。MySQL需要一些基礎的數據庫以及表來完成基本的設定&#xff0c;比如控制連接的mysql.user表&#xff1a;123456789101…

springboot starter工作原理_98,談談SpringBoot的工作原理

對技術的探索&#xff0c;一切源于好奇心&#xff0c;保持好奇心&#xff0c;才能讓人更年輕。至今&#xff0c;我們已經有了很多創建SpringBoot項目的經驗&#xff0c;比如我們要創建一個支持web開發的項目&#xff0c;我們只需要引入web-starter模塊即可。那么&#xff0c;Sp…

精英主義 遺傳算法 matlab,遺傳算法優化 - osc_lfs4vsih的個人空間 - OSCHINA - 中文開源技術交流社區...

1.遺傳算法簡介遺傳算法是一種基于自然選擇和群體遺傳機理的搜索算法,它模擬了自然選擇和自然遺傳過程中的繁殖、雜交和突變現象.再利用遺傳算法求解問題時,問題的每一個可能解都被編碼成一個“染色體”,即個體,若干個個體構成了群體(所有可能解).在遺傳算法開始時,總是隨機的產…

python 類靜態屬性_如何從Python中的類中引用靜態屬性?

您面臨的問題是因為您不了解類聲明的作用域是如何工作的。類聲明在其自己的作用域內執行。執行完成后&#xff0c;將創建一個新的類對象&#xff0c;并將獲得的范圍作為其__dict__附加到該類。在注意&#xff1a;類范圍是從方法范圍內搜索的而不是&#xff01;這意味著當在方法…

php后臺管理員登錄密碼錯誤,如果后臺管理員的密碼錯誤,我該怎么辦,還有兩種找回密碼的方法...

Dedecms是中國著名的網站管理核心. 由于編織夢想簡單易用&#xff0c;因此可以進行二次開發&#xff0c;并且可以實現各種網站. 在使用dedecms的過程中&#xff0c;如果忘記了夢想管理后臺的密碼怎么辦&#xff1f;神山個人博客分享了兩種修改(重置)管理員密碼的方法.1. 下載織…

python logging模塊 默認_python logging模塊

函數式簡單配置importlogginglogging.debug(debug message) #計算或者工作的細節logging.info(info message) #記錄一些用戶的增刪改查的操作logging.warning(warning message) #警告操作logging.error(error message) #警告操作logging.critical(critical message) #批判的 直…

mac安裝多php環境變量配置,Mac如何安裝多個php版本

Mac安裝多個php版本的方法&#xff1a;首先打開Mac上的終端工具&#xff0c;并確認安裝Homebrew&#xff1b;然后安裝【php5.5】及對應擴展&#xff1b;最后執行指令【brew unlink php55】刪除brew中php的軟鏈即可。Mac安裝多個php版本的方法&#xff1a;1、打開Mac上的終端工具…

phpexcel 獲取工作簿名稱_工作分享 | Excel快速匯總考勤

點擊藍字關注我們每月月底&#xff0c;各位同事把考勤表報到部門后&#xff0c;檢查核對再匯總一份總考勤表上報&#xff0c;傳統的復制粘貼總是占用不少時間&#xff0c;還容易出錯。為提高工作效率&#xff0c;現利用Excel實現考勤快速匯總。01 統一考勤模板&#xff0c;每個…

php進程通訊方式,PHP進程模型、進程通訊方式、進程線程的區別分別有哪些?

PHP進程模型是一個正在執行的程序&#xff0c;可以分配給處理器并由處理器執行的一個實體&#xff1b;PHP進程通訊方式有管道及有名管道&#xff0c;信號&#xff0c;共享內存等&#xff1b;PHP進程線程的區別有進程是資源的分配和調度的一個獨立單元&#xff0c;而線程是CPU調…

iphone怎樣關閉副屏_小米新設計專利曝光:“Z”型折疊屏手機

折疊屏手機可以說是最近幾年的熱門話題&#xff0c;雖然并未大面積普及&#xff0c;但已有多家廠商量產上市了旗下的折疊屏手機。同樣作為知名廠商的小米&#xff0c;曾在此前展示過旗下的折疊屏手機視頻&#xff0c;但并未真正發布。而近日曝光的一份小米旗下專利設計則表明小…

php socket開發斗地主,基于狀態機模型的斗地主游戲(NodeJsSocketIO)

1. 系統結構系統考慮使用Nodejs和SocketIo實現服務器端邏輯&#xff0c;前端使用HTML5。2. 邏輯流程1 . 主要邏輯包括用戶進入游戲、等待對家進入游戲、游戲過程、結束統計這4個過程。2 . 游戲過程的邏輯具體如下3 . 服務器-客戶端通訊邏輯如下3. 客戶端界面設計1 . 登錄界面2 …

python幾何拼貼畫_圖形幾何圖形拼貼畫

四邊形教學內容:教材第34頁?——36頁教學目標:1.直觀感知四邊形,能區分和辨認四邊形,知道四邊形的特征.進一步認識長方形和正方形,知道它們的角都是直角.2.通過畫一畫、找一找、拼一拼等活動,培養學生[此文轉于斐斐課件園?FFKJ.Net]的觀察比較和概括抽象的能力,發展空間想象能…

wgs84轉經緯度_wgs84經緯度轉為cgcs2000平面坐標

航拍測繪中,pos數據多數是wgs84&#xff0c;而GCP坐標是2000或者80坐標。有如下2情況需要轉換坐標&#xff0c;1.不同坐標系刺點時&#xff0c;位置相差較遠&#xff0c;影響工作效率。2.該軟件不支持wgs84轉國家2000&#xff0c;比如photoscan。所以需要把pos數據轉為跟像控點…

php system 255,GitHub - dwg255/OA-SYS: OA辦公系統開源項目

OA-SYSOA辦公系統開源項目這是一套主要用于演示、學習為目的OA辦公自動化系統。該系統具備基本的自動化辦公功能。在使用前請確保您已閱讀本系統協議部分內容。主要功能列表用戶和用戶組、權限管理個人網盤和分享文件生產計劃任務和業績考評通訊錄和內部短消息公告系統個人工作…