关于使用勒让德节点给出错误的多项式插值的 Matlab 代码

Matlab code about polynomial interpolation using legendre nodes giving error

我正在尝试通过求解线性方程组(给出 Vandermonde 矩阵)使用勒让德节点绘制多项式插值。我这样做是为了 j = 5, 7, 9,...,35. 这是我的代码:

clear all;
clc;

for j=5:2:35
   syms z; 
   
   xnodes_3 = vpasolve(legendreP(j,z) == 0);
   fnodes_3 = 1./(1+25*xnodes_3.^2);
   
   M = 1001;
   x = linspace(-1,1,M)';
   
   
   coeff_vector_3 = fliplr(vander(xnodes_3))\fnodes_3;
   p_3 = polyval(fliplr(coeff_vector_3'), x');
   
   plot(x,p_3);
   hold on
end

这给我以下错误:

Error using polyval (line 74)
Inputs must be floats, namely single or double.
Error in trial (line 15)
   p_3 = polyval(fliplr(coeff_vector_3'), x'); 

谁能帮忙。我整天都坚持这个。非常感谢。

编辑: 在给出错误之前,这些是 coeff_vector_3.

的值
coeff_vector_3 =
                                   1.0
 3.4109834835328701522238688633873e-40
    -4.0512155881301394351090454057919
-2.2893329650954534538375610295397e-39
      3.519395781194136574901680371827
coeff_vector_3 =
                                   1.0
-5.4307705791518293802399784884843e-39
    -7.0462203744169433121822078413245
 1.6720348984736620597732967039872e-38
     14.571492730176072614195066605034
-8.9896434936753099542494371570515e-39
     -8.802481667857292936084380384082
coeff_vector_3 =
                                   1.0
 1.1895297197316568231506041907424e-38
    -10.150118913095781981168545036265
 -1.656929497262701054447685901442e-37
      35.95471688613268525301895310519
 4.5856583163339969237259878878631e-37
    -49.454723982395860648314603704114
-3.2722088392672170042736433493855e-37
     22.920673601437558097637629851961
coeff_vector_3 =
                                   1.0
-3.4070795021123689133565334809069e-39
    -13.071031040337698565017684899241
 6.8318012404587502749750786583848e-38
     68.314781882425933034158628631267
-3.3980135924018244407798124502157e-37
    -157.10358230454913930626475268306
 6.3588750161147154164385284410183e-37
      161.4436432060590296122021924084
-3.9427101228610381581618919044928e-37
    -60.714837165602428758170595282528
coeff_vector_3 =
                                   1.0
 6.7743419377835896476400888375877e-38
    -15.641391643053141648840522708178
-1.9475752167281198208034560655283e-36
     110.27654036792279068622874894977
 1.4804067399849635653881337742821e-35
    -370.46837817662088761005201432955
-4.4008420158337335494662790462119e-35
     625.05088500456434046698274321406
 5.4368319346540047502133835673377e-35
    -512.11962864493227455201275405827
-2.3508099236679182700026469488146e-35
     162.06317362181401093418125128426
coeff_vector_3 =
                                   1.0
-2.4557130853766154554700723272027e-37
    -17.796452050780208604918482074779
 9.4840082645080854020465317189346e-36
     159.17056595045348978472850750237
-1.0066307979514567752462670218897e-34
    -721.81976612414757576235028177423
 4.4054014482556972567553468342051e-34
     1758.2722399177410497794450154309
-8.9686963751554549767786937742889e-34
    -2333.9055531349915868834390896313
 8.4191487946456620598105592526566e-34
     1589.1382218176969571732232005908
-2.9452686618521626935986359589406e-34
    -434.10897167212897285251952540631
coeff_vector_3 =
                                   1.0
-2.2999498576615902458486603519755e-37
    -19.539895945411946854273809284585
 1.1275059712528018424510673894645e-35
      211.8521265361706453067182358669
-1.5374668430233540863210690949502e-34
    -1229.6176635470841497310890518313
 8.8893058171464445785405168760083e-34
     4016.5083039013364268349584582528
-2.5620270892707105156347824005253e-33
    -7621.2725809508852665605314649011
 3.8661377588311417678221078725161e-33
     8323.1784912100817791796422757392
-2.9094361303757308936851604503161e-33
    -4846.7528593174503771766074297542
 8.6232679831839388915776313632354e-34
     1164.7454439082133880485584414644
coeff_vector_3 =
                                                               1.0
                              4.281416611721000374728797396502e-36
                                -20.912864557100088708060988253402
                            -2.6514779450051997444641120618396e-34
                                 265.33208102480780630936696629938
                             4.6782961999848988013315346308408e-33
                                 -1895.494620210617988118471740828
-0.000000000000000000000000000000036308059320244305724647043987851
                                 7905.6371268523066228309400485634
  0.00000000000000000000000000000014667766859024623237903322546749
                                -19973.150468448521710184660589469
 -0.00000000000000000000000000000033033060219032745727373894419896
                                 30931.893221857118031245934908203
  0.00000000000000000000000000000041675590964183018031933724189521
                                 -28666.41140950314737476437400331
 -0.00000000000000000000000000000027468834915661732502705409933165
                                 14579.704337049584014518722735365
 0.000000000000000000000000000000073483825464302587081023771309299
                                -3127.6035509672692981052454847432
coeff_vector_3 =
                                                               1.0
                             2.2609691905793825719180735388294e-35
                                -21.971927793479925498493595346116
                            -9.3514669522064217647590078471364e-34
                                 317.14599233712575901351552685511
-0.000000000000000000000000000000018696962101469775114043626994932
                                -2705.2252521810154602393401434276
 0.000000000000000000000000000000092744907656054709405623427936219
                                 13903.978725983493207827009583918
 -0.00000000000000000000000000000028800579994062249684696427019101
                                -44640.843887253876319959453976835
  0.00000000000000000000000000000057755761970091259187014907678301
                                 91470.113312364682164747510774943
 -0.00000000000000000000000000000075311416900958163230020171847475
                                -119433.44385550080716164407223794
  0.00000000000000000000000000000061987387203454231863807856863251
                                 96076.911116031849765043543100911
 -0.00000000000000000000000000000029275761117261773047161201885442
                                -43369.325215978563614011612992819
 0.000000000000000000000000000000060288666652638171488403723357364
                                 8401.7309291963764325008322278661
coeff_vector_3 =
                                                               1.0
                            -2.4372202614952632125586856177854e-35
                                -22.775703907186307077644029323447
                             2.2112282939471107541787304511944e-33
                                  365.4987891717358257251367544021
-0.000000000000000000000000000000058237375986845497546720647687071
                                -3632.3368995795056602973914355826
  0.00000000000000000000000000000069470591157725471617099579366235
                                 22387.485891615008863677730756869
  -0.0000000000000000000000000000045068701155191015492687079347073
                                -88342.917393919307823839111340925
    0.000000000000000000000000000017410588236227445713449456206106
                                 228927.16928286785776994032168379
   -0.000000000000000000000000000041800531013681636727139497509828
                                -393363.70939638726548609949098872
    0.000000000000000000000000000062877304855604592287908168718374
                                  443465.3854341368936187198275313
   -0.000000000000000000000000000057569305050014528216127836087977
                                -315032.67616088572288514479298015
    0.000000000000000000000000000029298303801253588887869061580466
                                 127822.51196259918930586742612845
  -0.0000000000000000000000000000063483375082565922648354552878303
                                -22574.619459642713966891813876689
coeff_vector_3 =
                                                             1.0
                            8.907613205294623406160604306587e-35
                              -23.377872785280783912274330599015
                          -9.5415406530539500844111287994098e-33
                               409.25708044234426033248596966903
 0.0000000000000000000000000000002984388487867261972619424655104
                              -4642.8743309079632428796730214531
-0.0000000000000000000000000000042651813538405109523709974221108
                               33574.175851427680487036224189447
  0.000000000000000000000000000033568649770568733394781883417097
                               -158748.5163102029573500218936244
  -0.00000000000000000000000000016013109495430002331957431358089
                               503810.24606167510918241208404108
    0.0000000000000000000000000004869551190403905902938557811676
                              -1090002.4415599508633661093901118
  -0.00000000000000000000000000096386552104179161228371551119095
                               1609781.3424676202823485338541853
    0.0000000000000000000000000012353914645183789356500305083834
                              -1595582.5485369334052584847059925
  -0.00000000000000000000000000098752683583240724039214564440015
                               1014595.4428828984741858825412373
   0.00000000000000000000000000044696266533053629721761193052012
                              -373835.04101075257496948381827833
 -0.000000000000000000000000000087378440881501022351702354985837
                               60663.389222171400760050030121997
coeff_vector_3 =
                                                              1.0
                           -4.3365684239495426325456270819525e-34
                               -23.824272219848381017550490471552
0.000000000000000000000000000000054034514107976328052045712074583
                                447.85701445715607331094056438054
 -0.0000000000000000000000000000019696830413155011972833138770747
                               -5700.1331347761134136185469659259
    0.00000000000000000000000000003293995033322578175123634047939
                                47495.991308690349809356384951848
    -0.0000000000000000000000000003054257773161907486460509753185
                               -263717.33907144291368147764549886
     0.0000000000000000000000000017344763230990985027031424399859
                                 1000456.136166860625546762068871
    -0.0000000000000000000000000063781520683491090637622548579738
                               -2641494.0416946667727083354473748
      0.000000000000000000000000015629992419644671483167544813231
                                4892932.1182632824174157617010052
     -0.000000000000000000000000025725416797678868951042937186118
                               -6328743.5270329882274859754905128
        0.0000000000000000000000000280585878552593256850154025578
                                5594167.8737864527820071937962186
     -0.000000000000000000000000019425650410422583852866655542661
                               -3219001.5266461217112906431353653
     0.0000000000000000000000000077208118699955867794985841934443
                                1086209.2659623942355597042331247
    -0.0000000000000000000000000013402449800170345837932695769325
                               -163029.82299503538311243861677506
coeff_vector_3 =
                                                              1.0
                            2.5699253954741297188662069979103e-33
                               -24.152326153110146717405911486931
-0.00000000000000000000000000000036901184480398107919161134593567
                                 481.1780039776882263865363156159
   0.000000000000000000000000000015551600880358959919486980706785
                               -6768.6166708743982172279757605862
   -0.00000000000000000000000000030221952456833679116021608934913
                                63998.748200503806581990751418433
     0.0000000000000000000000000032803963801383818394343205335136
                                -410435.8131086520372879794094424
     -0.000000000000000000000000022033412346770477391803636854174
                                1826025.7305792496661613423879294
      0.000000000000000000000000097200086748484908575661644589076
                                -5747221.708794422203160806993617
      -0.00000000000000000000000029141827016844590117129199033585
                                  12949333.0517056418304465850272
       0.00000000000000000000000060331315400572171509211045884152
                               -20936774.487723415810424325744949
      -0.00000000000000000000000086217775176962958642446608810322
                                24070662.725326496745352210397515
       0.00000000000000000000000083453523141059274280186623566073
                               -19193085.420777037032673337840635
      -0.00000000000000000000000052203551550466977133824842386644
                                10084090.170308859229359485115335
       0.00000000000000000000000019032032631758359477195662888357
                               -3138440.2226894354426259286060945
     -0.000000000000000000000000030697220653408352175099666170796
                                438157.86394949010539256865520571
coeff_vector_3 =
                                                             1.0
                          -5.4657501510756772268317409942837e-33
                              -24.391653912853402092916370061069
0.00000000000000000000000000000089479127468902153227416406121596
                               509.41424344214639765411031160308
 -0.000000000000000000000000000043035014398314228195993944910102
                              -7816.8779714734158625816097338187
   0.00000000000000000000000000095657556607957131683371121860286
                                 82765.3791385926631412582331045
    -0.000000000000000000000000011921642306627110012558253635996
                              -604599.06653766104402878969447994
     0.000000000000000000000000092472458408994114348875083201744
                               3105786.2856388507177978800703113
     -0.00000000000000000000000047503689671009450378149550220309
                              -11440146.083853954936531607072841
        0.000000000000000000000001678115966841866698521838475859
                               30643395.161753523237973654464808
      -0.0000000000000000000000041626937154113477847541813327901
                              -60088874.577603877523466270400079
        0.000000000000000000000007303987238999893172749549564881
                               86101223.902562834138848828490256
      -0.0000000000000000000000090089337800638030225440407898808
                              -89040521.352235444861557726339299
       0.0000000000000000000000076322775935073246358791862870032
                               64649910.500999231097991809596955
      -0.0000000000000000000000042244112481606561362056947481354
                              -31248138.768063724459764250741136
       0.0000000000000000000000013743750544997383390940925209134
                               9024165.3200181369605014276444914
     -0.00000000000000000000000019914539498567575739252977291995
                              -1177635.8131976432367589146977451
coeff_vector_3 =
                                                             1.0
                           -1.247835296084725146240039248023e-33
                              -24.565171498377383078219524735498
0.00000000000000000000000000000023712779410607480588238778794733
                               532.96130048987941822313273568047
  -0.00000000000000000000000000001369929359669053457664456508124
                               -8819.209235436674145932594651774
   0.00000000000000000000000000037739619313740180331205648831761
                               103354.82568884875959752604904817
   -0.0000000000000000000000000059872242564943189264265016154574
                              -849763.94860907193079730568197621
     0.000000000000000000000000060429676616902225339634570173952
                               4975025.0078837458605385274890111
     -0.00000000000000000000000041131645070677847368974470083489
                              -21129580.515878121607692844822781
       0.0000000000000000000000019560490004141160206794687545167
                               66090550.990559738233158635529802
      -0.0000000000000000000000066356637625449708631041905184712
                               -153677802.6998798810937404771972
        0.000000000000000000000016215546972554933313799537736863
                               266371520.11595411218578112462306
       -0.000000000000000000000028537379099418525686307296810214
                              -342441402.52567698786587035953453
        0.000000000000000000000035757287622217754720909190515339
                               321669932.22039102258764017613527
       -0.000000000000000000000031056419659712016847154824751687
                              -214351431.13431857433484153176574
        0.000000000000000000000017739630873035340153678295196628
                               95920643.450249686792535622630151
      -0.0000000000000000000000059852280766205862878453818496462
                              -25837958.945622009963966947805811
      0.00000000000000000000000090268607638479353488499744154052
                                3165223.014446721914168585765883
coeff_vector_3 =
                                                              1.0
-0.00000000000000000000000000000013258817372915302672154782582369
                               -24.690305274482986155755914530747
   0.000000000000000000000000000027649483762231632642891870763014
                                552.32497107867408455072127654865
    -0.0000000000000000000000000017034311842767428437555673705803
                               -9756.3262440826565867538129023862
      0.000000000000000000000000048876243647574421761079138868512
                                125248.35656760068852057176579928
      -0.00000000000000000000000079427579971277721888395928899074
                               -1146953.3775303403479792752236003
        0.0000000000000000000000081381035347564573476027114181887
                                7568571.0028783093168366793353103
        -0.000000000000000000000056138429986426657128943269762198
                               -36606985.616131675846405528156497
          0.00000000000000000000027194726776732556297656157600729
                                131790554.53005146984431273375098
         -0.00000000000000000000095039263732269712887197019964489
                               -357073541.22663514742347283066921
           0.0000000000000000000024343903463530578011118095777472
                                732228685.01816633136206749333171
          -0.0000000000000000000046000703780433265509936745063638
                               -1136058401.2399038275807757128397
           0.0000000000000000000063952666777417339186696552358573
                                1323618801.9008070407767298306346
          -0.0000000000000000000064542061786599346684920049928237
                               -1138617397.1859654139019034372445
           0.0000000000000000000045956004192257491772230784205697
                                701004563.97410903791087820966314
          -0.0000000000000000000021870893072553267395463614720965
                               -292019389.62339927282503320757698
           0.0000000000000000000006239588231762916854126530822895
                                73703088.117844827906153207424225
        -0.000000000000000000000080657631990924124838522889188927
                               -8507616.9033245669257303454768992

你的coeff_vector_3仍然是象征性的,因为你使用了vpasolve。要将它们传递给 polyval,请先将它们转换为双打。

coeff_vector_3 = double(fliplr(vander(xnodes_3))\fnodes_3); % convert to doubles here
p_3 = polyval(fliplr(coeff_vector_3'), x');