您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 非线性方程求解实验报告
数学实验报告非线性方程求解1/22一、实验目的1.掌握用MATLAB软件求解非线性方程和方程组的基本用法,并对结果作初步分析;2.练习用非线性方程和方程组建立实际问题的模型并进行求解。二、实验内容题目1【问题描述】(Q1)小张夫妇以按揭方式贷款买了1套价值20万元的房子,首付了5万元,每月还款1000元,15年还清。问贷款利率是多少?(Q2)某人欲贷款50万元购房,他咨询了两家银行,第一家银行开出的条件是每月还4500元,15年还清;第二家银行开出的条件是每年还45000元,20年还清。从利率方面看,哪家银行较优惠(简单假设:年利率=月利率×12)?【分析与解】假设初始贷款金额为x0,贷款利率为p,每月还款金额为x,第i个月还完当月贷款后所欠银行的金额为xi,(i=1,2,3,......,n)。由题意可知:𝑥1=𝑥0(1+𝑝)−𝑥𝑥2=𝑥0(1+𝑝)2−𝑥(1+𝑝)−𝑥𝑥3=𝑥0(1+𝑝)3−𝑥(1+𝑝)2−𝑥(1+𝑝)−𝑥……2/22𝑥𝑛=𝑥0(1+𝑝)𝑛−𝑥(1+𝑝)𝑛−1−⋯−𝑥(1+𝑝)−𝑥=𝑥0(1+𝑝)𝑛−𝑥(1+𝑝)𝑛−1𝑝=0因而有:𝑥0(1+𝑝)𝑛=𝑥(1+𝑝)𝑛−1𝑝……(1)则可以根据上述方程描述的函数关系求解相应的变量。(Q1)根据公式(1),可以得到以下方程:150𝑝(1+𝑝)180−(1+𝑝)180+1=0设𝑓(𝑝)=150𝑝(1+𝑝)180−(1+𝑝)180+1,通过计算机程序绘制f(p)的图像以判断解p的大致区间,在Matlab中编程如下:fori=1:25t=0.0001*i;p(i)=t;f(i)=150*t*(1+t).^180-(1+t).^180+1;end;plot(p,f),holdon,gridon;运行以上代码得到如下图像:3/22f(p)~p关系曲线图通过观察上图可知𝑝∈[0.002,0.0022]。Solution1:对于𝑝∈[0.002,0.0022],采用二分法求解,在Matlab中编程如下:clear;clc;x0=150000;n=180;x=1000;p0=0.002;p1=0.0022;while(abs(p1-p0)1e-8)f0=x0*(1+p0).^n+x*(1-(1+p0).^n)/p0;f1=x0*(1+p1).^n+x*(1-(1+p1).^n)/p1;p2=(p0+p1)/2;f2=x0*(1+p2).^n+x*(1-(1+p2).^n)/p2;if(f0*f20&&f1*f20)p0=p2;else4/22p1=p2;end;end;p0结果得到p0=0.00208116455078125=0.2081%.所以贷款利率是0.2081%。Solution2:对于𝑝∈[0.002,0.0022],采用牛顿法求解,为观测p{k}是否收敛,在Matlab中编程如下:clearclcn=5;fori=1:np(i)=0.0001*(i+18);t=p(i);f(i)=t-(150*t*(1+t).^180-(1+t).^180+1)/(27000*t*(1+t).^179+150*(1+t).^180-180*(1+t).^179);g(i)=t;end;plot(p,f,p,g),holdon,gridon;运行以上代码得到如下图像:5/22由图像可知蓝色曲线在两线交点处斜率绝对值小于1,故p{k}收敛。取初始值𝑝=0.0019,采用牛顿法求解,在Matlab中编程如下:p=0.0019;fori=1:100a=p-(150*p*(1+p).^180-(1+p).^180+1)/(27000*p*(1+p).^179+150*(1+p).^180-180*(1+p).^179);p=a;endp结果得到p0=0.00208116388945915=0.2081%.所以贷款利率是0.2081%。Solution3:采用fzero求解,在Matlab中编程如下:p=fzero(inline('150*x*(1+x).^180+1-(1+x).^180'),[0.00200,0.00226/225]);结果得到p0=0.00208116388945920=0.2081%.所以贷款利率是0.2081%。【结论】贷款利率是0.2081%。(Q2)根据公式(1),对于第一家银行提供的条件可以得到关于月利率p1的方程:1000𝑝1(1+𝑝1)180−9(1+𝑝1)180+9=0对于第二家银行提供的条件可以得到关于年利率p2的方程:100𝑝2(1+𝑝2)20−9(1+𝑝2)20+9=0设𝑓(𝑝1)=1000𝑝1(1+𝑝1)180−9(1+𝑝1)180+9,𝑓(𝑝2)=100𝑝2(1+𝑝2)20−9(1+𝑝2)20+9。通过计算机程序绘制f(p1)和f(p2)的图像以判断解p1和p2的大致区间,在Matlab中编程如下:clearclcfori=1:100p(i)=0.0001*i;t=p(i);f1(i)=1000*t*(1+t).^180-9*(1+t).^180+9;end;plot(p,f1),holdon,gridon;fori=1:1000p(i)=0.0001*i;t=p(i);f2(i)=100*t*(1+t).^20-9*(1+t).^20+9;end;plot(p,f2),holdon,gridon;7/22运行以上代码得到如下图像:f(p1)~p1关系曲线图f(p2)~p2关系曲线图8/22通过观察以上图像可知𝑝1∈[0.0055,0.0060],𝑝2∈[0.060,0.065]Solution1:采用二分法求解相应的利率值,在Matlab中编程如下:clearclcp10=0.0055;p11=0.0060;while(abs(p10-p11)1e-8)f0=1000*p10*(1+p10).^180-9*(1+p10).^180+9;f1=1000*p11*(1+p11).^180-9*(1+p11).^180+9;p22=(p10+p11)/2;f2=1000*p22*(1+p22).^180-9*(1+p22).^180+9;if(f0*f20&&f1*f20)p10=p22;elsep11=p22;end;end;p109/22clearclcp20=0.060;p21=0.065;while(abs(p20-p21)1e-8)f0=100*p20*(1+p20).^20-9*(1+p20).^20+9;f1=100*p21*(1+p21).^20-9*(1+p21).^20+9;p22=(p20+p21)/2;f2=100*p22*(1+p22).^20-9*(1+p22).^20+9;if(f0*f20&&f1*f20)p20=p22;elsep21=p22;end;end;p20结果得到p1=0.00585079193115234=0.5851%,相应的年利率为p1n=12*p1=7.021%;p2=0.0639487743377685=6.395%。所以第一家银行的贷款年利率是7.021%,第二家银行的贷款年利率是6.395%。Solution2:采用牛顿法求解相应的利率值,为观察p1{k}和p2{k}是否收敛,在Matlab中编程如下:clearclcn=6;fori=1:np(i)=0.0001*(i+55);t=p(i);f1(i)=t-(1000*t*(1+t).^180-9*(1+t).^180+9)/(180000*t*(1+t).^179+1000*(1+t).^180-1620*(1+t).^179);g(i)=t;end;plot(p,f1,p,g),holdon,gridon;clearclcn=10;fori=1:np(i)=0.001*(i+60);10/22t=p(i);f2(i)=t-(100*t*(1+t).^20-9*(1+t).^20+9)/(2000*t*(1+t).^19+100*(1+t).^20-180*(1+t).^19);g(i)=t;end;plot(p,f2,p,g),holdon,gridon;运行以上代码得到如下图像:11/22由图像可知两条蓝色曲线在两线交点处斜率绝对值均小于1,故p1{k}和p2{k}均收敛。对于p1{k},取初始值𝑝=0.0056,对于p2{k},取初始值𝑝=0.061,采用牛顿法求解,在Matlab中编程如下:clearclcp=0.0056;fori=1:100t=p;pp=t-(1000*t*(1+t).^180-9*(1+t).^180+9)/(180000*t*(1+t).^179+1000*(1+t).^180-1620*(1+t).^179);p=pp;endpclearclcp=0.061;fori=1:100t=p;12/22pp=t-(100*t*(1+t).^20-9*(1+t).^20+9)/(2000*t*(1+t).^19+100*(1+t).^20-180*(1+t).^19);p=pp;endp结果得到p1=0.00585079258284539=0.5851%,相应的年利率为p1n=12*p1=7.021%;p2=0.0639487770923863=6.395%。所以第一家银行的贷款年利率是7.021%,第二家银行的贷款年利率是6.395%。Solution3:采用fzero求解,在Matlab中编程如下:clearclcp1=fzero(inline('1000*x*(1+x).^180+9-9*(1+x).^180'),[0.0056,0.0066]);p2=fzero(inline('100*x*(1+x).^20+9-9*(1+x).^20'),[0.061,0.071]);p1p2结果得到p1=0.00585079258284532=0.5851%,相应的年利率为p1n=12*p1=7.021%;p2=0.0639487770923863=6.395%。所以第一家银行的贷款年利率是7.021%,第二家银行的贷款年利率是6.395%。【结论】由于第一家银行的贷款年利率是7.021%,第二家银行的贷款年利率是6.395%,所以第二家银行较优惠。题目2【问题描述】由汽缸控制关闭的门,关闭状态的示意图如左图。门宽a,门枢在H处,与H相距b处有一门销,通过活塞与圆柱形汽缸相连,活塞半径为r,汽缸长l0,汽缸内气体的压强为p0。当用力F推门,使13/22l0P0P0aFrbaFb门打开一个角度α时,活塞下降的距离为c,门销与H的水平距离b保持不变,于是汽缸内气体被压缩,对活塞的压强增加。已知在绝热条件下,气体的压强p与体积V满足:pVγ=c,其中γ是绝热系数,c是常数。试利用开门力矩和作用在活塞上的力矩相平衡的关系(对门枢而言),求在一定的力F的作用下,门打开的角度α。(参数设置:a=0.8m,b=0.25m,r=0.04m,l0=0.5m,p0=104N/m2,γ=1.4,F=25N。)图1门的关闭状态图2门的关闭状态【分析与解】由题意,根据力矩的平衡关系,有:𝐹𝑎𝑐𝑜𝑠𝛼−𝑃𝜋𝑟2=0𝑃0(𝑙0𝜋𝑟2)γ=𝑃[(𝑙0−𝑐)𝜋𝑟2]γ𝑐=𝑏𝑡𝑎𝑛𝛼将相应数据带入以上方程组得到:𝑃𝜋√0.0625+𝑐2−12500=0𝑃(0.5−𝑐)1.4−10000∗0.51.4=0其中P和c是未知量。lcα14/22Solution:用牛顿法求解,则原方程组可以表示为如下形式:𝐹=[𝑃𝜋√0.0625+𝑐2−12500𝑃(0.5−𝑐)1.4−10000∗0.51.4]𝐹,=[𝜋√0.0625+𝑐2𝑐𝑃𝜋√0.0625+𝑐2(0.5−𝑐)1.4−1.4𝑃(0.5−𝑐
本文标题:非线性方程求解实验报告
链接地址:https://www.777doc.com/doc-5271707 .html