【c 串源码】【general_log源码】【websphere节点源码目录】源码方程

时间:2024-11-26 10:41:39 来源:稳赚源码 分类:焦点

1.怎样用二分法解一元三次方程近似解?求Pascal源程序
2.急求MATLAB编程源代码用四阶龙格库塔法解如下微分方程 y'=y-2x/y(0<x<1),源码方程y(0)=1,步长为h=0.2

源码方程

怎样用二分法解一元三次方程近似解?求Pascal源程序

       二分法

       数学方面:

       一般地,对于函数f(x),源码方程如果存在实数c,当x=c时f(c)=0,那么把x=c叫做函数f(x)的零点。

       解方程即要求f(x)的源码方程所有零点。

       先找到a、源码方程b,源码方程c 串源码使f(a),源码方程general_log源码f(b)异号,源码方程说明在区间(a,源码方程b)内一定有零点,然后求f[(a+b)/2],源码方程

       现在假设f(a)<0,f(b)>0,a<b

       ①如果f[(a+b)/2]=0,该点就是源码方程零点,

       如果f[(a+b)/2]<0,源码方程则在区间((a+b)/2,b)内有零点,源码方程(a+b)/2=>a,源码方程websphere节点源码目录从①开始继续使用

       中点函数值判断。源码方程

       如果f[(a+b)/2]>0,源码方程则在区间(a,(a+b)/2)内有零点,(a+b)/2=>b,文件存放系统源码从①开始继续使用

       中点函数值判断。

       这样就可以不断接近零点。

       通过每次把f(x)的零点所在小区间收缩一半的方法,使区间的源码限制重复销售两个端点逐步迫近函数的零点,以求得零点的近似值,这种方法叫做二分法。

       给定精确度ξ,用二分法求函数f(x)零点近似值的步骤如下:

       1 确定区间[a,b],验证f(a)·f(b)<0,给定精确度ξ.

       2 求区间(a,b)的中点c.

       3 计算f(c).

       (1) 若f(c)=0,则c就是函数的零点;

       (2) 若f(a)·f(c)<0,则令b=c;

       (3) 若f(c)·f(b)<0,则令a=c.

       4 判断是否达到精确度ξ:即若┃a-b┃<ξ,则得到零点近似值a(或b),否则重复2-4.

       由于计算过程的具体运算复杂,但每一步的方式相同,所以可通过编写程序来运算。

       例:(C语言)

       方程式为:f(x) = 0,示例中f(x) = 1+x-x^3

       使用示例:

       input a b e: 1 2 1e-5

       solution: 1.

       源码如下:

       #include <stdio.h>

       #include <stdlib.h>

       #include <math.h>

       #include <assert.h>

       double f(double x)

       {

       return 1+x-x*x*x;

       }

       int main()

       {

       double a = 0, b = 0, e = 1e-5;

       printf("input a b e: ");

       scanf("%lf%lf%lf", &a, &b, &e);

       e = fabs(e);

       if (fabs(f(a)) <= e)

       {

       printf("solution: %lg\n", a);

       }

       else if (fabs(f(b)) <= e)

       {

       printf("solution: %lg\n", b);

       }

       else if (f(a)*f(b) > 0)

       {

       printf("f(%lg)*f(%lg) > 0 ! need <= 0 !\n", a, b);

       }

       else

       {

       while (fabs(b-a) > e)

       {

       double c = (a+b)/2.0;

       if (f(a)* f ( c ) < 0)

       b = c;

       else

       a = c;

       }

       printf("solution: %lg\n", (a+b)/2.0);

       }

       return 0;

       }

       例:C++语言[类C编写].

       |f(x)|<^-5 f(x)=2x^3-4x^2+3x-6

       #include"iostream"

       #include"stdio.h"

       #include"math.h"

       #define null 0

       double fx(double); //f(x)函数

       void main()

       {

       double xa(null),xb(null),xc(null);

       do

       {

       printf("请输入一个范围x0 x1:");

       std::cin>>xa>>xb; //输入xa xb的值

       printf("%f %f",xa,xb);

       }

       while(fx(xa)*fx(xb)>=0); //判断输入范围内是否包含函数值0

       do

       {

       if(fx((xc=(xa+xb)/2))*fx(xb)<0) //二分法判断函数值包含0的X取值区间

       {

       xa=xc;

       }

       else

       {

       xb=xc;

       }

       }

       while(fx(xc)>pow(.0,-5)||fx(xc)<-1*pow(.0,-5));//判断x根是否在接近函数值0的精确范围内

       printf("\n 得数为:%f",xc);

       }

       double fx(double x)

       {

       return(2.0*pow(x,3)-4.0*pow(x,2)+3*x-6.0);

       }

       经济学方面:

       传统的经济学家把经济分为实物经济和货币经济两部分,其中,经济理论分析实际变量的决定,而货币理论分析价格的决定,两者之间并没有多大的关系,这就是所谓的二分法。

急求MATLAB编程源代码用四阶龙格库塔法解如下微分方程 y'=y-2x/y(0<x<1),y(0)=1,步长为h=0.2

       % 以下另存为文件 myrk4.m

       function [x,y]=myrk4(ufunc,y0,h,a,b)

       %参数: 函数名称,初始值向量,步长,时间起点,时间终点

       n=floor((b-a)/h);%求步数 

       x(1)=a;%时间起点  

       y(:,1)=y0;%赋初值

       %按龙格库塔方法进行求解 

       for ii=1:n   

        x(ii+1)=x(ii)+h;   

        k1=ufunc(x(ii),y(:,ii));   

        k2=ufunc(x(ii)+h/2,y(:,ii)+h*k1/2);   

        k3=ufunc(x(ii)+h/2,y(:,ii)+h*k2/2); 

        k4=ufunc(x(ii)+h,y(:,ii)+h*k3);

        y(:,ii+1)=y(:,ii)+h*(k1+2*k2+2*k3+k4)/6; 

       end

       以下是主程序

% y'=y-2x/y  (0<x<1),y(0)=1,步长为h=0.2

       fun = inline('y-2*x/y');

       [t1,f1]=myrk4(fun,1,0.2,0,1);%测试时改变test_fun的函数维数,别忘记改变初始值的维数 

       subplot(); plot(t1,f1)  %自编函数 

       title('自编函数求解结果') 

       %用系统自带函数ode进行比较

       [t,f] = ode(fun,[0 1],1); 

       subplot(); plot(t,f);title('ode求解结果')