楼主: totok
3817 7

如何用gauss解一元高次方程? [推广有奖]

  • 0关注
  • 0粉丝

讲师

0%

还不是VIP/贵宾

-

威望
0
论坛币
10 个
通用积分
0
学术水平
3 点
热心指数
9 点
信用等级
4 点
经验
1924 点
帖子
107
精华
0
在线时间
597 小时
注册时间
2005-12-12
最后登录
2014-5-5

楼主
totok 发表于 2010-9-3 19:11:16 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
如题,多谢!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:GAUSS USS Aus 高次方 如何用 方程 GAUSS

沙发
miraclemao 发表于 2010-9-3 19:43:39
去找高斯解。。。哈哈。。

藤椅
xuelida 在职认证  发表于 2010-9-5 09:52:15
泰勒展开
线性搜索等都可以

板凳
xuelida 在职认证  发表于 2010-9-5 09:52:55
@解方程的根@
/*f(x)的泰勒展开:
        f(x)=f(a)+f'(a)/1!*(x-a)+f''(a)/2!*(x-a)^2+ ... +fn(a)/n!*(x-a)^n+...
忽略高阶项得到,f(x)=f(a)+f'(a)*(x-a) .
在x0处有y=f(x0)+f'(x0)*(x-x0).
第一步:
        令0= f(x0)+f'(x0)*(x-x0)
    得到x=x0-f(x0)/f'(x0) .
继续
        x1=x0-f(x0)/f'(x0)
        x2=x1-f(x1)/f'(x1)
        x3=x2-f(x2)/f'(x2)
        ..................
        x[k]=x[k-1]-f(x[k-1])/f'(x[k-1]).
直到|x[k]-x[k-1]|<1e-5 迭代停止*/
        new; cls;
        a=2;
        fn f(x)=x^2-a;

        start=1;
        tol=1e-5; h=1e-6;
        x_1=start;
        i=1;
        do while i<=10000;
              f1x_1=(f(x_1+h)-f(x_1-h))/(2*h);@f(x)的一阶导数@
              x=x_1-f(x_1)/f1x_1;
              if abs(x_1-x)<tol;
                    break;
              endif;
              x_1=x;
              i=i+1;
        endo;
        print x;
        print sqrt(a);

@或者可以把f(x)的一阶导数计算出来@
        new; cls;
        a=2;
        fn f(x)=x^2-a;
        fn f1(x)=2*x; @f(x)的一阶导数@

        start=-2;tol=1e-5;x_1=start;
        i=1;do while i<=10000;
              x=x_1-f(x_1)/f1(x_1);
              if abs(x_1-x)<tol;
                    break;
              endif;
              x_1=x;
           i=i+1;endo;
        print x;

/*lesson2:newton调用命令的使用*/
        new; cls;
        a=2;
        fn f(x)=x^2-a;
        start=-2;
        print newton(&f,start);

proc newton(&f,start);
local tol,x_1,x,i,h,f1x_1,f:proc;
   tol=1e-5; h=1e-6;
   x_1=start;
   i=1;
   do while i<=10000;
      f1x_1=(f(x_1+h)-f(x_1-h))/(2*h);
      x=x_1-f(x_1)/f1x_1;
      if abs(x_1-x)<tol;
         break;
      endif;
      x_1=x;
      i=i+1;
   endo;
   retp(x);
endp;

/*lesson2:Jacobian数值分析*/
        new; cls;
        a=2;
        fn f(x)=x^2-a;
        fn f1(x)=2*x;
        start=-2;
        print newtonJ(&f,&f1,start);

proc newtonJ(&f,&f1,start);
   local tol,x_1,x,i,f:proc,f1:proc;
   tol=1e-5;
   x_1=start;
   i=1;
   do while i<=10000;
      x=x_1-f(x_1)/f1(x_1);
      if abs(x_1-x)<tol;
         break;
      endif;
      x_1=x;
      i=i+1;
   endo;
   retp(x);
endp;
已有 2 人评分经验 论坛币 学术水平 热心指数 收起 理由
xuehe + 20 + 40 + 3 根据规定进行奖励
zhaomn200145 + 40 + 1 + 1 根据规定进行奖励

总评分: 经验 + 20  论坛币 + 80  学术水平 + 4  热心指数 + 1   查看全部评分

报纸
lmfactory 发表于 2010-9-6 16:42:04
xuelida 发表于 2010-9-5 09:52
@解方程的根@
/*f(x)的泰勒展开:
        f(x)=f(a)+f'(a)/1!*(x-a)+f''(a)/2!*(x-a)^2+ ... +fn(a)/n!*(x-a)^n+...
忽略高阶项得到,f(x)=f(a)+f'(a)*(x-a) .
在x0处有y=f(x0)+f'(x0)*(x-x0).
第一步:
        令0= f(x0)+f'(x0)*(x-x0)
    得到x=x0-f(x0)/f'(x0) .
继续
        x1=x0-f(x0)/f'(x0)
        x2=x1-f(x1)/f'(x1)
        x3=x2-f(x2)/f'(x2)
        ..................
        x[k]=x[k-1]-f(x[k-1])/f'(x[k-1]).
直到|x[k]-x[k-1]|
版主辛苦了

地板
xuelida 在职认证  发表于 2010-9-7 00:15:23
谢谢

7
qingqing840322 发表于 2010-9-9 20:19:17
貌似有个Fsolve的命令,我直接用过它做个三个方程组的解

8
xuelida 在职认证  发表于 2010-9-10 09:23:15
gauss里有解方程根的命令,其实解方程使用泰勒展开是个数值分析方法,如果一个非线性方程,使用这个数值方法很容易得到方程的根。

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-6 07:15